Создание компонентов пакета MSIX

В этой статье показано, как создавать компоненты пакета MSIX для упаковки приложения с помощью программ командной строки (без использования Visual Studio или средства формирования пакетов MSIX).

Чтобы упаковать приложение вручную, необходимо создать файл манифеста пакета, добавить компоненты пакета, а затем запустить программу командной строки MakeAppx.exe для создания пакета MSIX.

Сначала подготовьте приложения к упаковке

Если вы еще не сделали этого, ознакомьтесь со статьей What to know before packaging your desktop application (Что необходимо знать перед упаковкой классического приложения).

Создайте манифест пакета

Создайте файл, назовите его appxmanifest.xml, а затем добавьте в него XML-код, представленный ниже.

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

<?xml version="1.0" encoding="utf-8"?>
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="" Version="" Publisher="" ProcessorArchitecture="" />
  <Properties>
    <DisplayName></DisplayName>
    <PublisherDisplayName></PublisherDisplayName>
    <Description></Description>
    <Logo></Logo>
  </Properties>
  <Resources>
    <Resource Language="" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="" MaxVersionTested="" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust"/>
  </Capabilities>
  <Applications>
    <Application Id="" Executable=""
      uap10:RuntimeBehavior="packagedClassicApp"
      uap10:TrustLevel="mediumIL">
      <uap:VisualElements DisplayName="" Description=""	Square150x150Logo=""
        Square44x44Logo="" BackgroundColor="" />
    </Application>
  </Applications>
</Package>

Примечание.

Если пакет устанавливается в системах старше Windows 10, версия 2004 (10.0; Сборка 19041), а затем используйте EntryPoint атрибут вместо негоuap10:TrustLevel.uap10:RuntimeBehavior Дополнительные сведения и примеры см . в статье uap10 в Windows 10 версии 2004 (10.0; Сборка 19041).

Заполните элементы уровня пакета для файла

Заполните этот шаблон сведениями о вашем пакете.

Сведения об удостоверении

Вот пример элемента Identity с замещающим текстом для атрибутов. Для атрибута ProcessorArchitecture можно задать значение x64 , x86, arm (то есть 32-разрядная ARM), arm64 или neutral.

<Identity Name="MyCompany.MySuite.MyApp"
          Version="1.0.0.0"
          Publisher="CN=MyCompany, O=MyCompany, L=MyCity, S=MyState, C=MyCountry"
			    ProcessorArchitecture="x64">

Примечание.

Если вы зарезервировали имя приложения в Microsoft Store, значения для "Name" (Имя) и "Publisher" (Издатель) можно получить с помощью Центра партнеров. Если планируется, что приложение будет загружено на другие системы в неопубликованном виде, вы можете указать для этих атрибутов собственные имена при условии, что имя издателя совпадает с именем, указанным в сертификате, который используется для подписания приложения.

Свойства

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

<Properties>
  <DisplayName>MyApp</DisplayName>
  <PublisherDisplayName>MyCompany</PublisherDisplayName>
  <Logo>images\icon.png</Logo>
</Properties>

Ресурсы

Вот пример узла Resources.

<Resources>
  <Resource Language="en-us" />
</Resources>

Зависимости

Для классических приложений, для которых вы создаете пакет, всегда задавайте для атрибута Name значение Windows.Desktop.

<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>

Возможности

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

<Capabilities>
  <rescap:Capability Name="runFullTrust"/>
</Capabilities>

Заполните элементы уровня приложения

Заполните этот шаблон сведениями о вашем приложении.

Элемент Application

Для классических приложений, для которые вы создаете пакет, настройте элемент Application следующим образом:

<Applications>
  <Application Id="MyApp" Executable="MyApp.exe"
		 uap10:RuntimeBehavior="packagedClassicApp"
     uap10:TrustLevel="mediumIL">
   </Application>
</Applications>

Примечание.

Если пакет устанавливается в системах старше Windows 10, версия 2004 (10.0; Сборка 19041), а затем используйте EntryPoint атрибут вместо негоuap10:TrustLevel.uap10:RuntimeBehavior Дополнительные сведения и примеры см . в статье uap10 в Windows 10 версии 2004 (10.0; Сборка 19041).

Визуальные элементы

Вот пример узла VisualElements.

<uap:VisualElements
	BackgroundColor="#464646"
	DisplayName="My App"
	Square150x150Logo="images\icon.png"
	Square44x44Logo="images\small_icon.png"
	Description="A useful description" />

Добавление специальных ресурсов без покрытия (необязательно)

Целевые ресурсы предназначены для значков и плиток, отображаемых на панели задач Windows, представлении задач, ALT+TAB, оснастки и нижнем правом углу плиток "Пуск". Подробнее об этом см. здесь.

  1. Получите правильные изображения 44x44 и скопируйте их в папку с изображениями (например, "Ресурсы").

  2. Для каждого изображения 44x44 создайте копию в той же папке и добавьте в имя файла целевое значение .44_altform . У вас должно быть две копии каждого значка, каждая из которых называется определенным образом. Например, после завершения процесса папка ресурсов может содержать файлы MYAPP_44x44.png и MYAPP_44x44.targetsize 44_altform unplated.png.

    Примечание.

    В этом примере значок MYAPP_44x44.png — это значок, который вы укажете в атрибуте логотипа Square44x44Logo вашего пакета MSIX.

  3. В файле манифеста задайте BackgroundColor для каждого значка, который должен быть прозрачным.

  4. Перейдите к следующему подразделу для создания нового файла индекса ресурсов пакета.

Создание файла индекса ресурсов пакета (PRI) с помощью MakePri

Для создания специальных ресурсов, как описано в приведенном выше разделе, или изменения каких-либо визуальных ресурсов приложения после создания пакета, необходимо создать новый файл PRI.

На основе пути установки пакета SDK это место, где MakePri.exe находится на компьютере с Windows:

  • x86: C:\Program Files (x86)\Windows Kits\10\bin\<номер сборки>\x86\makepri.exe
  • x64: C:\Program Files (x86)\Windows Kits\10\bin\<номер сборки>\x64\makepri.exe

Версия ARM этого средства отсутствует.

  1. Откройте командную строку или окно PowerShell.

  2. Смените каталог на корневую папку пакета и создайте файл priconfig.xml с помощью команды <path>\makepri.exe createconfig /cf priconfig.xml /dq en-US.

  3. Создайте файлы resources.pri с помощью команды <path>\makepri.exe new /pr <PHYSICAL_PATH_TO_FOLDER> /cf <PHYSICAL_PATH_TO_FOLDER>\priconfig.xml.

    Например, команда для вашего приложения может выглядеть так: <path>\makepri.exe new /pr c:\MYAPP /cf c:\MYAPP\priconfig.xml.

  4. Упакуйте приложение, руководствуясь инструкциями в следующем шаге.

Протестируйте приложение перед упаковкой

Вы можете развернуть распаковано приложение и протестировать его перед упаковкой или подписью. Для этого запустите нижеприведенную команду из окна PowerShell. Обязательно передайте файл манифеста вашего приложения, расположенный в корне каталога вашего пакета, со всеми другими вашими компонентами пакета.

Add-AppxPackage –Register AppxManifest.xml

Как только это будет выполнено, ваше приложение необходимо развернуть в системе. Перед упаковкой вы можете протестировать его, чтобы удостовериться, что все работает. Чтобы обновить файлы .exe или .dll приложения, замените существующие файлы в пакете новыми, повысьте номер версии в AppxManifest.xml, а затем выполните указанную выше команду повторно.

Упакуйте ваши компоненты в MSIX

Следующий шаг. Используйте MakeAppx.exe для создания MSIX-пакета для вашего приложения. Makeappx.exe входит в состав пакета SDK для Windows, и если вы установили Visual Studio, его можно легко получить с помощью командной строки разработчика для Visual Studio.

См. Create an MSIX package or bundle with MakeAppx.exe (Создание пакета MSIX или набора с помощью программы MakeAppx.exe)

Примечание.

Упакованное приложение всегда выполняется от лица текущего пользователя, а диск, на который производится установка приложения, должен быть отформатирован в NTFS.