Приложения Магазина Windows 8.1. Принудительная установка ресурсов в устройстве независимо от потребности устройства в этих ресурсах
Включая в пакет приложений разнообразные ресурсы, можно гарантировать, что все они будут установлены вместе с приложением на каждом устройстве независимо от того, какие ресурсы требуются во время установки приложения. Например, можно обеспечить установку вместе с приложением строк пользовательского интерфейса на нескольких языках, а не только на языке, который выбран основным в настройках устройства. При использовании этой стратегии пользователи могут изменить языковые и другие настройки без подключения к Интернету, и устройства самостоятельно переключатся на оптимальные ресурсы с учетом новых параметров.
Однако при этом увеличивается размер приложения. Если нужно уменьшить размер приложения, добавьте ресурсы в специальные пакеты ресурсов, которые пользователи смогут загрузить самостоятельно. В большинстве приложений использование пакетов ресурсов обеспечивает максимальное удобство наряду с минимальными объемами требуемой памяти, однако эта стратегия может быть неподходящей для некоторых приложений, таких как многоязыковые словари, электронные переводчики и т. д., где язык необходимо переключать в процессе работы. Такие приложения могут содержать различные ресурсы в пакете приложения.
Можно включить ресурсы в пакет приложений, добавив файл конфигурации. Кроме того, если удобно редактировать собственный файл проекта напрямую, эту задачу можно решить и так.
Вариант 1. Добавление в решение файла конфигурации
В обозревателе решений щелкните правой кнопкой мыши проект приложения, выберите Добавить, а затем Создать элемент.
В диалоговом окне добавления нового элемента выберите шаблон XML-файл, назовите файл priconfig.packaging.xml и нажмите кнопку Добавить.
Замените содержимое файла следующим XML-кодом.
<packaging> <autoResourcePackage qualifier="Language" /> <autoResourcePackage qualifier="Scale" /> <autoResourcePackage qualifier="DXFeatureLevel" /> </packaging>
Удалите строку XML-кода, представляющую категорию ресурсов, которые не требуется включать в пакет ресурсов. В следующем примере показано содержимое файла priconfig.packaging.xml после удаления квалификатора Language.
<packaging> <autoResourcePackage qualifier="Scale" /> <autoResourcePackage qualifier="DXFeatureLevel" /> </packaging>
В этом примере все языковые ресурсы будут включены в пакеты приложений соответствующего набора приложений, и пользователи будут загружать их независимо от языка, который выбран основным в настройках устройства.
Сохраните и закройте файл priconfig.packaging.xml.
При удалении квалификатора Language следует добавить в проект еще один XML-файл с именем priconfig.default.xml и заменить его содержимое следующим XML-кодом.
<default> <qualifier name="Language" value=Value /> </default>
Примечание
Если вы удаляете квалификатор Scale или DXFeatureLevel, но не удаляете квалификатор Language, добавлять в проект файл priconfig.default.xml не требуется.
Замените заполнитель Value кодом языка для каждого ресурса, который следует добавить в пакет приложения. В следующем примере показано, каким будет XML после замены заполнителя Value квалификатора языка списком кодов языков.
<default> <qualifier name="Language" value=”en;ja;de” /> </default>
В обозревателе решений щелкните файл priconfig.packaging.xml.
В окне Свойства измените значения следующих свойств в зависимости от языка проекта.
Для проектов C# и VB задайте для свойства Действие сборки значение Нет.
Для проектов JavaScript задайте для свойства Действие пакета значение Нет.
Для проектов C++ задайте для свойства Содержимое значение False.
Если в проект добавлен файл priconfig.default.xml, задайте для свойства Действие сборки этого файла значение Нет, для свойства Действие пакета —значение Нет или для свойства Содержимое — значение False (в зависимости от языка проекта).
В меню Сборка щелкните пункт Собрать решение, а затем создайте пакет приложения.
На странице Выбор и настройка пакетов мастера создания пакетов приложения выберите команду создания пакета приложения для соответствующего пакета. См. раздел Создание пакета приложения Windows 8.1.
В папке ProjectFolder**\obj\**ReleaseConfiguration откройте файл Split.priconfig.XML в блокноте.
Убедитесь, что удаленные квалификаторы не отображаются в списке квалификаторов ресурса.
Переименование файла priconfig.packaging.xml
Вы можете присвоить файлу конфигурации любое имя. Однако если присвоить файлу имя, отличное от priconfig.packaging xml, необходимо добавить свойство сборки в файл проекта.
В обозревателе решений щелкните правой кнопкой мыши проект для вашего приложения и выберите команду Выгрузить проект.
Снова щелкните проект правой кнопкой мыши и выберите пункт ИзменитьИмяПриложения**.csproj** или ИзменитьИмяПриложения**.vbproj**.
В файле проекта добавьте следующую строку XML-кода между открывающими и закрывающими тегами первого элемента <PropertyGroup>.
<AppxPriConfigXmlPackagingSnippetPath>FilePath</AppxPriConfigXmlPackagingSnippetPath>
Важно!
Замените заполнитель FilePath путем к файлу конфигурации, включив имя файла.
Сохраните и закройте файл проекта.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите команду Перезагрузить проект.
Выполните сборку решения и создайте пакет.
Примечание
Если в проект добавлен файл priconfig.default.xml, его также можно переименовать. Дополнительные сведения о переименовании этого файла см. в разделе Переименование файла priconfig.default.xml.
Вариант 2. Изменение файла проекта (усложненный)
Откройте файл проекта приложения в Блокноте.
В файле проекта добавьте следующую строку XML-кода между открывающими и закрывающими тегами первого элемента <PropertyGroup>.
<AppxBundleAutoResourcePackageQualifiers>Language|Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
Удалите категорию ресурсов, которые не требуется включать в пакет ресурсов, из этой строки XML-кода. В следующем примере показана строка XML-кода после удаления квалификатора Language.
<AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
В этом примере все языковые ресурсы будут включены в пакеты приложений соответствующего набора приложений, и пользователи будут загружать их независимо от языка, который выбран основным в настройках устройства.
Если квалификатор Language удален, добавьте следующую строку XML-кода между открывающими и закрывающими тегами первого элемента <PropertyGroup>.
<AppxDefaultResourceQualifiers>Language=Value</AppxDefaultResourceQualifiers>
Примечание
Если вы удаляете квалификатор Scale или DXFeatureLevel, но не удаляете квалификатор Language, добавлять эту строку не требуется.
Замените заполнитель Value кодом языка для каждого ресурса, который следует добавить в пакет приложения. В следующем примере показано, каким будет XML после замены заполнителя Value квалификатора языка списком кодов языков.
<AppxDefaultResourceQualifiers>Language=en;ja;de</AppxDefaultResourceQualifiers>
Сохраните и закройте файл проекта. Затем перезагрузите файл в Visual Studio.
Соберите решение, а затем создайте пакет приложения.
На странице Выбор и настройка пакетов мастера создания пакетов приложения выберите команду создания набора приложений для соответствующего пакета. См. раздел Создание пакета приложения Windows 8.1.
В папке ProjectFolder**\obj\**ReleaseConfiguration откройте файл Split.priconfig.XML в блокноте.
Убедитесь, что удаленные квалификаторы не отображаются в списке квалификаторов ресурса.
См. также
Развертывание набора приложений
Наборы приложений
Принятие решения о том, нужно ли создавать набор приложений
Пакеты ресурсов
Система управления ресурсами
Определение ресурсов приложения (приложения, использующие C# / VB/C++ и XAML
Определение ресурсов приложения (приложения, использующие JavaScript и HTML)