MSIX скрипты для полного преобразованияMSIX Bulk conversion scripts

Сценарии с массовым преобразованием в наборе средств MSIX можно использовать для автоматизации преобразования приложений Windows в формат пакета MSIX.The Bulk conversion scripts in the MSIX Toolkit can be used to automate the conversion of Windows apps to the MSIX package format. Список приложений и их сведения приведены в сценарии entry.ps1 .The list of apps and their details are provided in the entry.ps1 script.

Подготовка компьютеров к преобразованиюPrepare machines for conversion

Перед запуском сценария многомерного преобразования MSIX Toolkit для автоматизации преобразования приложения в формат упаковки MSIX устройства, которые вы будете использовать (виртуальная или удаленная), должны быть настроены для удаленного взаимодействия и установлен инструмент упаковки MSIX.Prior to running the MSIX Toolkit's Bulk Conversion script, to automate the conversion of your application to the MSIX packaging format the devices that you will be using (virtual, or remote) must be configured to allow remote communication, and have the MSIX Packaging Tool installed.

ТерминTerm ОписаниеDescription
Хост компьютераHost Machine Это устройство, выполняющее скрипты пакетного преобразования.This is the device executing the Bulk Conversion scripts.
Виртуальная машинаVirtual Machine Это устройство, существующее в Hyper-V, размещенное на размещающем компьютере.This is a device existing in Hyper-V, hosted on the Host Machine.
Удаленный компьютерRemote Machine Это физическая или виртуальная машина, доступная по сети.This is a physical or virtual machine accessible over the network.

Хост компьютераHost Machine

Компьютер размещения должен соответствовать следующим требованиям.The Host Machine must meet the following requirements:

  • Должен быть установлен инструмент упаковки MSIX .MSIX Packaging Tool must be installed.
  • Если используются виртуальные машины, необходимо установить Hyper-V.If Virtual Machines are being used, Hyper-V must be installed.
  • Если используются удаленные компьютеры:If Remote Machines are being used:
    • Устройство существует в том же домене, что и удаленные компьютеры:Device exists in the same Domain as the Remote Machine(s):
      • Включение удаленного взаимодействия PowerShellEnable PowerShell Remoting
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • Устройство существует в Рабочей группе или в альтернативном домене в качестве удаленных компьютеров:Device exists in a Workgroup or to an alternate Domain as the Remote Machine(s):
      • Включение удаленного взаимодействия PowerShellEnable PowerShell remoting
      • Доверенный узел WinRM должен содержать имя или IP-адрес устройства удаленного компьютераWinRM Trusted Host must contain the device name or IP address of the Remote Machine
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

Удаленный компьютерRemote Machine

Удаленный компьютер должен соответствовать следующим требованиям.The Remote Machine must meet the following requirements:

  • Должен быть установлен инструмент упаковки MSIX .MSIX Packaging Tool must be installed.

  • Если устройство существует в том же домене, что и главный компьютер:If the device exists within the same domain as the Host Machine:

    • Включение удаленного взаимодействия PowerShellEnable PowerShell Remoting
    • Необходимо включить WinRMWinRM must be enabled
    • Разрешить протокол ICMPv4 через брандмауэр клиентаAllow ICMPv4 through client firewall
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • Если устройство существует в Рабочей группе или в альтернативном домене в качестве главного компьютера:If the device exists within a workgroup or an alternate domain as the Host Machine:

    • Включение удаленного взаимодействия PowerShellEnable PowerShell Remoting
    • Доверенный узел WinRM должен содержать имя устройства или IP-адрес главного компьютераWinRM Trusted Host must contain the device name or the IP address of the Host Machine
    • Разрешить протокол ICMPv4 через брандмауэр клиентаAllow ICMPv4 through client firewall
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      Set-Item WSMan:\localhost\Client\TrustedHosts -Value <HostMachineName>
      
      

Виртуальная машинаVirtual Machine

Рекомендуется использовать образ "быстрое создание" средства создания пакетов MSIX для Hyper-V, так как он предварительно настроен для удовлетворения всех требований.It is recommended that the Hyper-V Quick Create "MSIX Packaging Tools Environment" image be used, as it is pre-configured to meet all requirements. Виртуальная машина должна быть размещена на главном компьютере и запущена в Microsoft Hyper-V.The virtual machine must be hosted on the Host Machine and running within Microsoft Hyper-V.

Виртуальная машина должна соответствовать следующим требованиям.The Virtual Machine must meet the following requirements:

СинтаксисSyntax

entry.ps1

ОписаниеDescription

Это набор сценариев PowerShell, предоставляющий возможность пакетной обработки приложений в формате пакета MSIX.This is a set of PowerShell scripts that provides the ability to bulk package applications into the MSIX package format. Эти сценарии будут подключаться к локальной виртуальной машине или удаленному компьютеру, который будет использоваться для упаковки каждого приложения.These scripts will connect to a local virtual machine or remote machine which will be used to package each application.

Приложения, Упакованные в формат приложения MSIX, будут преобразованы в том порядке, в котором они были указаны в сценарии entry.ps1 .Apps being packaged into the MSIX application format will be converted in the order they were entered in the entry.ps1 script. Удаленные компьютеры, перечисленные в скрипте entry.ps1 , будут использоваться для упаковки приложений в формат MSIX, который будет использоваться в единственном числе.Remote machines listed in the entry.ps1 script will be used to package the applications into the MSIX format will be singularly used. Виртуальные машины можно использовать несколько раз для упаковки различных приложений в формат приложения MSIX.Virtual machines can be used multiple times to package different applications into the MSIX application format.

Перед выполнением скрипта необходимо сначала добавить приложения, которые нужно преобразовать в conversionsParameters переменную в скрипте.Before running the script, you must first add the apps you want to convert to the conversionsParameters variable in the script. В переменную можно добавить несколько приложений.Multiple apps can be added to the variable. Сценарий использует приложение и удаленные виртуальные машины, чтобы создать XML-файл в соответствии с требованиями средства упаковки MSIX (MsixPackagingTool.exe).The script leverages the app and remote/virtual machines to create a XML file formatted to meet the requirements of the MSIX Packaging Tool (MsixPackagingTool.exe). После создания XML-файла сценарий run_job.ps1 выполняется в новом процессе PowerShell, который выполняет MsixPackagingTool.exe на целевом устройстве, чтобы преобразовать приложение и поместить его в папку .\аут , расположенную в папке выполнения скрипта.After creating the XML file, the run_job.ps1 script is executed in a new PowerShell process which executes MsixPackagingTool.exe on the target device to convert the app and place it in the .\Out folder located in the script execution folder.

ПримерExample

PS C:\> entry.ps1

В примере этого выполняется скрипт entry.ps1 .Ths example executes the entry.ps1 script. Этот скрипт преобразует приложения, указанные в conversionsParameters переменной, в пакеты MSIX.This script converts the apps specified in the conversionsParameters variable into MSIX packages. Приложения преобразуются с помощью виртуальных машин или удаленных компьютеров, указанных в переменных virtualMachines и ремотемачинес .The apps are converted using the virtual machines or remote machines indicated in the virtualMachines and remoteMachines variables.

ПараметрыParameters

virtualMachinesvirtualMachines

virtualMachinesПараметр представляет собой массив, содержащий имя и учетные данные виртуальных машин для подключения и доступа при упаковке приложения в формат MSIX.The virtualMachines parameter is an array that contains the name and credentials of the virtual machines to connect to and access when packaging an app into the MSIX format.

  • Тип: InArrayType: Array
  • Обязательный: нетRequired: No
$virtualMachines = @(
    @{
        Name = "MSIX Packaging Tool Environment";   # Name of the virtual machine as listed in the Hyper-V Management console
        Credential = $credential                    # Credentials used to connect/login to the virtual machine.
    }
)

Указанная виртуальная машина будет использоваться для упаковки приложений в формат MSIX.The specified virtual machine will be used to package apps into the MSIX format. Эта виртуальная машина будет подключена к, используя учетные данные, указанные при появлении запроса (запрос появляется сразу после выполнения сценария entry.ps1 ).This virtual machine will be connected to using the credentials entered when prompted (prompt appears directly after script entry.ps1 execution). Перед упаковкой приложения в формат упаковки MSIX сценарий создаст моментальный снимок виртуальной машины Hyper-V, а затем восстановился до этого снимка после упаковки приложения.Prior to packaging an application to the MSIX packaging format, the script will create a snapshot of the Hyper-V VM, and then restored to this snapshot after application has been packaged.

ремотемачинесremoteMachines

remoteMachinesПараметр представляет собой массив, содержащий имя и учетные данные удаленных компьютеров для подключения и доступа при упаковке приложения в формат MSIX.The remoteMachines parameter is an array that contains the name and credentials of the remote machines to connect to and access when packaging an app into the MSIX format. Указанные удаленные компьютеры будут однозначными устройствами, используемыми для упаковки одного приложения.The remote machines specified will be single-use devices used to package a single application.

Удаленные компьютеры должны быть доступны и обнаружены в сети.Remote machines must be accessible and discoverable on the network.

  • Тип: InArrayType: Array
  • Обязательный: нетRequired: No
$remoteMachines = @(
    @{
        ComputerName = "Computer.Domain.com";   # The fully qualified name of the remote machine.
        Credential = $credential }              # Credentials used to connect/login to the remote machine.
)

Указанная удаленная машина будет использоваться для упаковки одного приложения в формат MSIX.The specified remote machine will be used to package a single app into the MSIX format. Этот удаленный компьютер будет подключен к, используя учетные данные, указанные при появлении запроса (запрос отображается непосредственно после выполнения сценария entry.ps1 ).This remote machine will be connected to using the credentials entered when prompted (prompt appears directly after script entry.ps1 execution).

Убедитесь, что полное доменное имя или внешний псевдоним устройства разрешается до выполнения скрипта entry.ps1 .Ensure that the fully qualified domain name or externally facing alias of the device is resolvable prior to execution of the entry.ps1 script.

сигнингцертификатеsigningCertificate

signingCertificateПараметр — это массив, содержащий сведения, связанные с сертификатом подписи кода, который будет использоваться для подписи упакованного приложения MSIX.The signingCertificate parameter is an array that contains information related to the code signing certificate that will be used to sign the MSIX packaged application. Этот сертификат должен иметь уровень шифрования как минимум SHA256.This certificate must have an encryption level of at minimum SHA256.

  • Тип: InArrayType: Array
  • Обязательный: нетRequired: No
$SigningCertificate = @{
    Password = "Password"; 
    Path = "C:\Temp\ContosoLab.pfx"
}

конверсионспараметерсconversionsParameters

conversionsParametersПараметр представляет собой массив, содержащий сведения о приложениях, которые необходимо преобразовать в формат MSIX.The conversionsParameters parameter is an array that contains information about the apps you want to convert to MSIX format. Каждое приложение в массиве будет анализироваться по отдельности и выполняться с помощью преобразования пакета MSIX на удаленном компьютере или виртуальной машине.Each app in the array will be parsed individually and run through the MSIX package conversion on either a remote machine or virtual machine. Приложения будут преобразованы в том порядке, в котором они отображаются в скрипте.The apps will be converted in the order that they appear in the script. Если преобразование в формат MSIX завершается неудачей, сценарий не будет повторно пытаться преобразовать приложение на другой удаленный компьютер или виртуальную машину.If the conversion to MSIX format fails, the script will not re-attempt to convert the application on a different remote machine or virtual machine.

  • Тип: InArrayType: Array
  • Обязательный: даRequired: Yes
$conversionsParameters = @(
    ## Use for MSI applications:
    @{
        InstallerPath = "C:\Path\To\YourInstaller.msi";    # Full path to the installation media (local or remote paths).
        PackageName = "YourApp";                           # Application Display Name - name visible in the start menu.
        PackageDisplayName = "Your App";                   # Application Name - Can not contain special characters.
        PublisherName = "CN=YourCompany";                  # Certificate Publisher information - must match signing certificate
        PublisherDisplayName = "YourCompany";              # Application Publisher name
        PackageVersion = "1.0.0.0"                         # MSIX Application version (must contain 4 octets).
    },
    ## Use for EXE or other applications:
    @{
        InstallerPath = "Path\To\YourInstaller.exe";       # Full path to the installation media (local or remote paths).
        PackageName = "YourApp";                           # Application Display Name - name visible in the start menu.
        PackageDisplayName = "Your App";                   # Application Name - Can not contain special characters.
        PublisherName = "CN=YourCompany";                  # Certificate Publisher information - must match signing certificate
        PublisherDisplayName = "YourCompany";              # Application Publisher name
        PackageVersion = "1.0.0.0";                        # MSIX Application version (must contain 4 octets).
        InstallerArguments = "/SilentInstallerArguement"   # Arguements required by the installer to provide a silent installation of the application.
    },
    ## Creating the Packaged app and Template file in a specific folder path:
    @{
        InstallerPath = "Path\To\YourInstaller.exe";       # Full path to the installation media (local or remote paths).
        PackageName = "YourApp";                           # Application Display Name - name visible in the start menu.
        PackageDisplayName = "Your App";                   # Application Name - Can not contain special characters.
        PublisherName = "CN=YourCompany";                  # Certificate Publisher information - must match signing certificate
        PublisherDisplayName = "YourCompany";              # Application Publisher name
        PackageVersion = "1.0.0.0";                        # MSIX Application version (must contain 4 octets).
        InstallerArguments = "/SilentInstallerArguement";  # Arguements required by the installer to provide a silent installation of the application.
        SavePackagePath = "Custom\folder\Path";            # Specifies a custom folder path where the MSIX app will be created.
        SaveTemplatePath = "Custom\folder\Path"            # Specifies a custom folder path where the MSIX Template XML will be created.
    }
)

Сведения о приложении, предоставленные в conversionsParameters переменной, будут использоваться для создания XML-файла со всеми необходимыми сведениями о приложении.The app information provided in the conversionsParameters variable will be used to generate an XML file with all of the required application details. После создания XML-файла скрипт передает XML-файл средству упаковки MSIX (MsixPackagingTool.exe) для упаковки.After creating the XML file, the script will then pass the XML file to the MSIX Packaging Tool (MsixPackagingTool.exe) to be packaged.

Ведение журналаLogging

Скрипт создаст файл журнала, который описывает, что произошло во время выполнения скрипта.The script will generate a log file which outlines what has transpired throughout the script execution. В файле журнала содержатся сведения, относящиеся к упаковке приложений в формат пакета MSIX, а также сведения, связанные с ходом выполнения сценариев.The log file will provide details related to the packaging of applications to the MSIX packaging format, and information related to script progression. Журналы можно считывать из любой текстовой служебной программы, но были настроены для чтения с помощью средства чтения журнала Trace32.The logs can be read from any text utility, but have been configured for reading using the Trace32 log reader. Ошибки в выполнении скрипта будут выделены красным цветом, а предупреждения — желтыми.Errors in the script execution will be highlighted as Red, and Warnings as yellow. Дополнительные сведения о средстве чтения журнала трассировки 32 см. на странице CMTrace on документация Майкрософт.For more information on the Trace 32 log reader, please visit CMTrace on Microsoft Docs.

Файл журнала создается в каталоге скрипта .\logs\BulkConversion.log .The log file is created within the script's directory .\logs\BulkConversion.log.