Создание файла шаблона для преобразования командной строки

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

Вы можете получить файл шаблона, который работает для вас двумя способами:

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

Создание файла шаблона конвертации с помощью инструмента упаковки MSIX

  1. Запустите средство упаковки MSIX.
  2. Перейдите к параметрам в правом верхнем углу приложения.
  3. Убедитесь, что выбран параметр "Создать файл командной строки с каждым пакетом".
  4. Внесите любые другие изменения в ваши настройки (такие как элементы исключения, коды выхода).
  5. Сохраните настройки.
  6. Перейдите к рабочему процессу пакета приложения с помощью установщика.
    • Если вы не выберете установщик, вы не сможете создать файл шаблона преобразования.
    • Если вы используете exe-файл, необходимо передать установщику параметр тихого режима, чтобы создать файл шаблона преобразования.
  7. В конце преобразования вы настроите файл шаблона на основе выбранного установщика и текущих параметров, которые теперь можно повторно использовать для будущих преобразований.
    • По умолчанию файл шаблона преобразования будет сохранен в том же расположении, что и пакет MSIX, но можно указать отдельное расположение сохранения файла шаблона на странице создания пакета.
    • Вам всё равно потребуется внести некоторые изменения в зависимости от того, какой MSIX вам нужен на выходе в конце каждого преобразования.

Изменение файла шаблона преобразования вручную

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

Справочник параметров шаблона конверсии

Ниже приведен полный список параметров, которые можно использовать в файле шаблона преобразования.

Настройки преобразования Описание
Настройки:: Разрешить телеметрию [необязательно] Включает запись данных телеметрии для данного вызова инструмента.
Параметры:: ПрименитьВсеИсправленияДляПодготовкиКомпьютера [необязательно] Применяет все рекомендуемые исправления компьютера. Невозможно задать, если используются другие атрибуты.
Настройки:: GenerateCommandLineFile [необязательно] Копирует входные данные файла шаблона в каталог SaveLocation для дальнейшего использования.
Параметры:: AllowPromptForPassword [необязательно] Указывает средству запрашивать у пользователя ввод паролей для виртуальной машины и для сертификата подписи, если это необходимо, а не указано.
Настройки:: EnforceMicrosoftStoreVersioningRequirements [необязательно] Предписывает средству применять схему управления версиями пакетов, необходимую для развертывания из Microsoft Store и Microsoft Store для бизнеса.
Настройки:: НомерПортаСервера [необязательно] Используется при подключении к удаленному компьютеру. Требуется версия 2 схемы шаблона.
Параметры:: AddPackageIntegrity [необязательно] Добавляет целостность пакетов к каждому созданному MSIX. Требуется версия 5 схемы шаблона.
ValidInstallerExitCodes [необязательно] 0 или более элементов ValidInstallerExitCode. Требуется версия 2 схемы шаблона.
ValidInstallerExitCodes:: ValidInstallerExitCode [необязательно] Укажите коды выхода установщика, с которыми средство не знакомо или требует перезагрузки. Требуется версия 2 схемы шаблона.
ValidInstallerExitCodes:: ValidInstallerExitCode:: перезагрузка [необязательно] Укажите, должен ли код выхода активировать перезагрузку во время преобразования. Требуется версия 3 схемы шаблона.
Исключенные элементы [необязательно] 0 или более элементов FileExclusion или RegistryExclusion. Все элементы FileExclusion должны отображаться перед элементами RegistryExclusion.
ЭлементыИсключений::ИсключениеФайлов [необязательно] Файл, который следует исключить для упаковки.
ExclusionItems::FileExclusion::ExcludePath Путь к файлу, который следует исключить для упаковки.
ЭлементыИсключения::ИсключениеРеестра [необязательно] Раздел реестра, который следует исключить для упаковки.
ExclusionItems::RegistryExclusion::ExcludePath Путь к реестру, который необходимо исключить при упаковке.
PrepareComputer::D isableDefragService [необязательно] Отключает дефрагментатор Windows во время преобразования приложения. Если установлено значение false, переопределяет функцию ApplyAllPrepareComputerFixes.
ПодготовкаКомпьютера:: ОтключитьСлужбуWindowsПоиска [необязательно] Отключает поиск Windows во время преобразования приложения. Если установлено значение false, переопределяет функцию ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableSmsHostService [необязательно] Отключает SMS-хост во время преобразования приложения. Если установлено значение false, переопределяет функцию ApplyAllPrepareComputerFixes.
ПодготовкаКомпьютера:: ОтключитьСлужбуОбновленияWindows [необязательно] Отключает Центр обновления Windows во время преобразования приложения. Если установлено значение false, переопределяет функцию ApplyAllPrepareComputerFixes.
SaveLocation [необязательно] Элемент, указывающий расположение сохранения инструмента. Если он не указан, пакет будет сохранен в папке "Рабочий стол".
SaveLocation::P ackagePath [необязательно] Путь к файлу или папке, в которой сохраняется полученный пакет MSIX.
SaveLocation::TemplatePath [необязательно] Путь к файлу или папке, в которой сохранен полученный шаблон командной строки.
Установщик::Path Путь к установщику приложения.
Установщик::Аргументы [необязательно] Аргументы для передачи установщику. Средство автоматически запускает установщики MSI в фоновом режиме с помощью аргумента "/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1". ПРИМЕЧАНИЕ. Вы должны передать аргументы, чтобы принудительно запустить установщик в фоновом режиме, если используете установщики .exe.
Установщик::InstallLocation [необязательно] Полный путь к корневой папке приложения для установленных файлов(например, "C:\Program Files (x86)\MyAppInstalllocation").
Установщик::IsUnattendedInstallWithoutArgument [необязательно] Этот атрибут следует использовать, если приложение разрешает несопровождаемую установку без явных аргументов. Этот атрибут используется только для установщиков .exe.
Виртуальная машина [необязательно] Элемент, указывающий, что преобразование будет выполняться на локальной виртуальной машине.
VirtualMachine::Name Имя виртуальной машины, используемой для среды преобразования.
VirtualMachine::Username Имя пользователя для виртуальной машины, используемой для среды преобразования.
RemoteMachine [необязательно] Элемент, указывающий, что преобразование будет выполняться на удаленном компьютере. Требуется версия 2 схемы шаблона.
УдаленнаяМашина:: ИмяКомпьютера Имя удаленного компьютера, используемого для среды преобразования. Требуется версия 2 схемы шаблона.
RemoteMachine:: имя пользователя Имя пользователя для удаленного компьютера, используемого для среды преобразования. Требуется версия 2 схемы шаблона.
RemoteMachine:: ВключитьАвтоВход [необязательно] При выполнении преобразования, требующего перезагрузки на удаленном компьютере, вы автоматически повторно входите в систему, чтобы преобразование продолжалось без перерыва. Требуется версия 3 схемы шаблона.
PackageInformation::P ackageName Имя пакета для пакета MSIX.
PackageInformation::P ackageDisplayName Имя отображаемого пакета для пакета MSIX.
PackageInformation::P ublisherName Издатель пакета MSIX.
PackageInformation::P ublisherDisplayName ** Имя издателя, отображаемое для вашего пакета MSIX.
PackageInformation::Версия Номер версии пакета MSIX.
PackageInformation::P ackageDescription [необязательно] Описание пакета MSIX. Требуется версия 4 схемы шаблона.
ПакетИнформация:: ГлавноеИмяПакетаДляИзмененияПакета [необязательно] Имя удостоверения пакета основного имени пакета. Это используется при создании пакета изменения, который принимает зависимость от основного (родительского) приложения.
Информация о подписи [необязательно] Элемент для указания сведений о подписи в рамках использования Device Guard. Требуется версия 4 схемы шаблона.
ИнформацияОПодписи:: DeviceGuardSigning [необязательно] Элемент, указывающий сведения о подписи Device Guard. Требуется версия 4 схемы шаблона.
DeviceGuardSigning:: TokenFile Маркер доступа Azure AD, необходимый для входа Device Guard в формате JSON. Требуется схема шаблона v4.
DeviceGuardSigning:: TimestampUrl [необязательно] Предоставляет метку времени во время подписи с помощью Device Guard, чтобы убедиться, что приложение будет устанавливаться за пределы времени существования сертификата. Требуется версия 4 схемы шаблона.
Приложения [необязательно] 0 или более элементов приложения, чтобы настроить записи приложения в пакете MSIX.
Приложение::Идентификатор Идентификатор вашего приложения MSIX. Этот идентификатор будет использоваться для элемента приложения, который обнаружен как соответствующий указанному имени исполняемого файла. В пакете можно использовать несколько значений идентификатора приложения для исполняемых файлов.

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

Эта строка содержит буквенно-числовые поля, разделенные точками. Каждое поле должно начинаться с алфавитного символа ASCII. Эти значения нельзя использовать в качестве значений полей: CON, PRN, AUX, "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8" и "LPT9".
Application::D isplayName Отображаемое имя приложения для пакета MSIX. Это отображаемое имя будет использоваться для записи приложения, которая соответствует указанному имени исполняемого файла.
Application::ExecutableName Имя исполняемого файла для приложения MSIX, которое будет добавлено в манифест пакета. Соответствующая запись приложения будет игнорироваться, если приложение с этим именем не обнаружено.
Application::D escription [необязательно] Описание вашего приложения MSIX. Если он не используется, будет использован DisplayName приложения. Это описание будет использоваться для записи о приложении, которая соответствует указанному имени исполняемого файла.
Возможности [необязательно] 0 или более элементов возможностей для добавления пользовательских возможностей в пакет MSIX. Функция runFullTrust добавляется по умолчанию во время преобразования.
Возможность::Name Возможность добавлять в ваш пакет MSIX.

Пример файла шаблона преобразования

<MsixPackagingToolTemplate
    xmlns="http://schemas.microsoft.com/appx/msixpackagingtool/template/2018"
    xmlns:V2="http://schemas.microsoft.com/msix/msixpackagingtool/template/1904"
    xmlns:V3="http://schemas.microsoft.com/msix/msixpackagingtool/template/1907"
    xmlns:V4="http://schemas.microsoft.com/msix/msixpackagingtool/template/1910"
    xmlns:V5="http://schemas.microsoft.com/msix/msixpackagingtool/template/2001">
<!--Note: You only need to include xmlns:v2 - xmlns:v5 if you are using one of the features that use those schemas -->

    <Settings
        AllowTelemetry="true"
        ApplyAllPrepareComputerFixes="true"
        GenerateCommandLineFile="true"
        AllowPromptForPassword="false" 
	    EnforceMicrosoftStoreVersioningRequirements="false"
        v2:ServerPortNumber="1599"
        v5:AddPackageIntegrity="true">    

	<!--Note: Exclusion items are optional and if declared take precedence over the default tool exclusion items
        <ExclusionItems>
            <FileExclusion ExcludePath="[{CryptoKeys}]" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Crypto" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Search\Data" />
            <FileExclusion ExcludePath="[{Cookies}]" />
            <FileExclusion ExcludePath="[{History}]" />
            <FileExclusion ExcludePath="[{Cache}]" />
            <FileExclusion ExcludePath="[{Personal}]" />
            <FileExclusion ExcludePath="[{Profile}]\Local Settings" />
            <FileExclusion ExcludePath="[{Profile}]\NTUSER.DAT.LOG1" />
            <FileExclusion ExcludePath="[{Profile}]\ NTUSER.DAT.LOG2" />
            <FileExclusion ExcludePath="[{Recent}]" />
            <FileExclusion ExcludePath="[{Windows}]\debug" />
            <FileExclusion ExcludePath="[{Windows}]\Logs\CBS" />
            <FileExclusion ExcludePath="[{Windows}]\Temp" />
            <FileExclusion ExcludePath="[{Windows}]\WinSxS\ManifestCache" />
            <FileExclusion ExcludePath="[{Windows}]\WindowsUpdate.log" />
	    <FileExclusion ExcludePath="[{Windows}]\Installer" />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\$Recycle.Bin " />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\System Volume Information" />
	    <FileExclusion ExcludePath="[{AppVPackageDrive}]\Config.Msi" />
            <FileExclusion ExcludePath="[{AppData}]\Microsoft\AppV" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Antimalware" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Windows Defender" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Windows Defender" />
	    <FileExclusion ExcludePath="[{ProgramFiles}]\WindowsApps" />
            <FileExclusion ExcludePath="[{Local AppData}]\Temp" />
	    <FileExclusion ExcludePath="[{Local AppData}]\Microsoft\Windows" />
	    <FileExclusion ExcludePath="[{Local AppData}]\Packages" />

            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware Setup" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Security Client" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\AppV" />
        </ExclusionItems>
	-->
    
    <!--Note: Specifying an installer exit code will allow you to automatically trigger a reboot during your conversion
      <v2:ValidInstallerExitCodes>
        <V2:ValidInstallerExitCode ExitCode="3010" V3:Reboot="true"/>
        <V2:ValidInstallerExitCode ExitCode="1641"/>
      </v2:ValidInstallerExitCodes>
    -->
	    
    </Settings>

    <!--Note: this section takes precedence over the Settings::ApplyAllPrepareComputerFixes attribute and is optional
    <PrepareComputer
        DisableDefragService="true"
        DisableWindowsSearchService="true"
        DisableSmsHostService="true"
        DisableWindowsUpdateService="true"/>
    -->

    <SaveLocation
        PackagePath="C:\users\user\Desktop\MyPackage.msix" 
        TemplatePath="C:\users\user\Desktop\MyTemplate.xml" />

    <Installer
        Path="C:\MyAppInstaller.msi"
        InstallLocation="C:\Program Files\MyAppInstallLocation" />
	
    <!--NOTE: This section specifies that the conversion will be run on a local Virtual Machine. This is optional if you want to change your conversion environment from the default local machine.
    <VirtualMachine Name="vmname" Username="vmusername"/>
    -->

    <!--NOTE: This section specifies that the conversion will be run on a remote machine.This is optional if you want to change your conversion environment from the default local machine.
    <v2:RemoteMachine ComputerName="vmname" Username="vmusername" v3:EnableAutoLogon="true"/>
    -->

    <PackageInformation
        PackageName="MyAppPackageName"
        PackageDisplayName="MyApp Display Name"
        PublisherName="CN=MyPublisher"
        PublisherDisplayName="MyPublisher Display Name"
        Version="1.1.0.0"
        MainPackageNameForModificationPackage="MainPackageIdentityName">

    <!--Note: This is optional, if you want to sign your package with Device Guard signing
        <v4:SigningInformation>
            <v4:DeviceGuardSigning
                Tokenfile="tokenfile.json"
                TimestampUrl="https://mytimestamp.com"/>
        </v4:SigningInformation>
    -->
        
	<!--NOTE: This ID will be used if the Application entry detected matches the specified ExecutableName
        <Applications>
            <Application
                Id="MyApp1"
                Description="MyApp"
                DisplayName="My App"
                ExecutableName="MyApp.exe"/>
        </Applications>
	-->

	<!--NOTE: This is optional as “runFullTrust” capability is added by default during conversion
        <Capabilities>
            <Capability Name="runFullTrust" />
        </Capabilities>
	-->
	    
    </PackageInformation>
</MsixPackagingToolTemplate>