Приложения Магазина Windows 8.1. Принудительная установка ресурсов в устройстве независимо от потребности устройства в этих ресурсах

 

Применимо к Windows и к Windows Phone

Включая в пакет приложений разнообразные ресурсы, можно гарантировать, что все они будут установлены вместе с приложением на каждом устройстве независимо от того, какие ресурсы требуются во время установки приложения. Например, можно обеспечить установку вместе с приложением строк пользовательского интерфейса на нескольких языках, а не только на языке, который выбран основным в настройках устройства. При использовании этой стратегии пользователи могут изменить языковые и другие настройки без подключения к Интернету, и устройства самостоятельно переключатся на оптимальные ресурсы с учетом новых параметров.

Однако при этом увеличивается размер приложения. Если нужно уменьшить размер приложения, добавьте ресурсы в специальные пакеты ресурсов, которые пользователи смогут загрузить самостоятельно. В большинстве приложений использование пакетов ресурсов обеспечивает максимальное удобство наряду с минимальными объемами требуемой памяти, однако эта стратегия может быть неподходящей для некоторых приложений, таких как многоязыковые словари, электронные переводчики и т. д., где язык необходимо переключать в процессе работы. Такие приложения могут содержать различные ресурсы в пакете приложения.

Можно включить ресурсы в пакет приложений, добавив файл конфигурации. Кроме того, если удобно редактировать собственный файл проекта напрямую, эту задачу можно решить и так.

Вариант 1. Добавление в решение файла конфигурации

  1. В обозревателе решений щелкните правой кнопкой мыши проект приложения, выберите Добавить, а затем Создать элемент.

  2. В диалоговом окне добавления нового элемента выберите шаблон XML-файл, назовите файл priconfig.packaging.xml и нажмите кнопку Добавить.

  3. Замените содержимое файла следующим XML-кодом.

    <packaging>
        <autoResourcePackage qualifier="Language" />
        <autoResourcePackage qualifier="Scale" />
        <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    
  4. Удалите строку XML-кода, представляющую категорию ресурсов, которые не требуется включать в пакет ресурсов. В следующем примере показано содержимое файла priconfig.packaging.xml после удаления квалификатора Language.

    <packaging>
        <autoResourcePackage qualifier="Scale" />
        <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    

    В этом примере все языковые ресурсы будут включены в пакеты приложений соответствующего набора приложений, и пользователи будут загружать их независимо от языка, который выбран основным в настройках устройства.

  5. Сохраните и закройте файл priconfig.packaging.xml.

  6. При удалении квалификатора 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>
    
  7. В обозревателе решений щелкните файл priconfig.packaging.xml.

  8. В окне Свойства измените значения следующих свойств в зависимости от языка проекта.

    • Для проектов C# и VB задайте для свойства Действие сборки значение Нет.

    • Для проектов JavaScript задайте для свойства Действие пакета значение Нет.

    • Для проектов C++ задайте для свойства Содержимое значение False.

  9. Если в проект добавлен файл priconfig.default.xml, задайте для свойства Действие сборки этого файла значение Нет, для свойства Действие пакета —значение Нет или для свойства Содержимое — значение False (в зависимости от языка проекта).

  10. В меню Сборка щелкните пункт Собрать решение, а затем создайте пакет приложения.

    На странице Выбор и настройка пакетов мастера создания пакетов приложения выберите команду создания пакета приложения для соответствующего пакета. См. раздел Создание пакета приложения Windows 8.1.

  11. В папке ProjectFolder**\obj\**ReleaseConfiguration откройте файл Split.priconfig.XML в блокноте.

  12. Убедитесь, что удаленные квалификаторы не отображаются в списке квалификаторов ресурса.

Переименование файла priconfig.packaging.xml

Вы можете присвоить файлу конфигурации любое имя. Однако если присвоить файлу имя, отличное от priconfig.packaging xml, необходимо добавить свойство сборки в файл проекта.

  1. В обозревателе решений щелкните правой кнопкой мыши проект для вашего приложения и выберите команду Выгрузить проект.

  2. Снова щелкните проект правой кнопкой мыши и выберите пункт ИзменитьИмяПриложения**.csproj** или ИзменитьИмяПриложения**.vbproj**.

  3. В файле проекта добавьте следующую строку XML-кода между открывающими и закрывающими тегами первого элемента <PropertyGroup>.

    <AppxPriConfigXmlPackagingSnippetPath>FilePath</AppxPriConfigXmlPackagingSnippetPath>
    

    Важно!

    Замените заполнитель FilePath путем к файлу конфигурации, включив имя файла.

  4. Сохраните и закройте файл проекта.

  5. В обозревателе решений щелкните правой кнопкой мыши проект и выберите команду Перезагрузить проект.

  6. Выполните сборку решения и создайте пакет.

Примечание

Если в проект добавлен файл priconfig.default.xml, его также можно переименовать. Дополнительные сведения о переименовании этого файла см. в разделе Переименование файла priconfig.default.xml.

Вариант 2. Изменение файла проекта (усложненный)

  1. Откройте файл проекта приложения в Блокноте.

  2. В файле проекта добавьте следующую строку XML-кода между открывающими и закрывающими тегами первого элемента <PropertyGroup>.

    <AppxBundleAutoResourcePackageQualifiers>Language|Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
    
  3. Удалите категорию ресурсов, которые не требуется включать в пакет ресурсов, из этой строки XML-кода. В следующем примере показана строка XML-кода после удаления квалификатора Language.

    <AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
    

    В этом примере все языковые ресурсы будут включены в пакеты приложений соответствующего набора приложений, и пользователи будут загружать их независимо от языка, который выбран основным в настройках устройства.

  4. Если квалификатор Language удален, добавьте следующую строку XML-кода между открывающими и закрывающими тегами первого элемента <PropertyGroup>.

    <AppxDefaultResourceQualifiers>Language=Value</AppxDefaultResourceQualifiers>
    

    Примечание

    Если вы удаляете квалификатор Scale или DXFeatureLevel, но не удаляете квалификатор Language, добавлять эту строку не требуется.

    Замените заполнитель Value кодом языка для каждого ресурса, который следует добавить в пакет приложения. В следующем примере показано, каким будет XML после замены заполнителя Value квалификатора языка списком кодов языков.

    <AppxDefaultResourceQualifiers>Language=en;ja;de</AppxDefaultResourceQualifiers>
    
  5. Сохраните и закройте файл проекта. Затем перезагрузите файл в Visual Studio.

  6. Соберите решение, а затем создайте пакет приложения.

    На странице Выбор и настройка пакетов мастера создания пакетов приложения выберите команду создания набора приложений для соответствующего пакета. См. раздел Создание пакета приложения Windows 8.1.

  7. В папке ProjectFolder**\obj\**ReleaseConfiguration откройте файл Split.priconfig.XML в блокноте.

  8. Убедитесь, что удаленные квалификаторы не отображаются в списке квалификаторов ресурса.

См. также

Развертывание набора приложений
Наборы приложений
Принятие решения о том, нужно ли создавать набор приложений
Пакеты ресурсов
Система управления ресурсами
Определение ресурсов приложения (приложения, использующие C# / VB/C++ и XAML
Определение ресурсов приложения (приложения, использующие JavaScript и HTML)