Скрипты массового преобразования MSIX

Скрипты массового преобразования в набор средств MSIX можно использовать для автоматизации преобразования приложений Windows в формат пакета MSIX. Список приложений и их сведений приведен в скрипте entry.ps1 .

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

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

Срок Description
Хост-компьютер Это устройство, выполняющее скрипты массового преобразования.
Виртуальная машина Это устройство, существующее в Hyper-V, размещенное на хост-компьютере.
Удаленный компьютер Это физическая или виртуальная машина, доступная по сети.

Хост-компьютер

Компьютер узла должен соответствовать следующим требованиям:

  • Необходимо установить средство упаковки MSIX.
  • Если используется Виртуальные машины, необходимо установить Hyper-V.
  • Если используются удаленные компьютеры:
    • Устройство существует в том же домене, что и удаленные компьютеры:
      • Включение удаленного взаимодействия PowerShell
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • Устройство существует в рабочей группе или в альтернативном домене в качестве удаленных компьютеров:
      • Включение удаленного взаимодействия PowerShell
      • Доверенный узел WinRM должен содержать имя устройства или IP-адрес удаленного компьютера.
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

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

Удаленный компьютер должен соответствовать следующим требованиям:

  • Необходимо установить средство упаковки MSIX.

  • Если устройство существует в том же домене, что и главный компьютер:

    • Включение удаленного взаимодействия PowerShell
    • Необходимо включить WinRM
    • Разрешить ICMPv4 через брандмауэр клиента
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • Если устройство существует в рабочей группе или альтернативном домене в качестве компьютера узла:

    • Включение удаленного взаимодействия PowerShell
    • Доверенный узел WinRM должен содержать имя устройства или IP-адрес компьютера узла.
    • Разрешить ICMPv4 через брандмауэр клиента
      # 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>
      
      

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

Рекомендуется использовать образ быстрого создания Hyper-V "Среда средств упаковки MSIX", так как он предварительно настроен для удовлетворения всех требований. Виртуальная машина должна размещаться на хост-компьютере и работать в Microsoft Hyper-V.

Виртуальная машина должна соответствовать следующим требованиям:

Синтаксис

entry.ps1

Description

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

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

Перед выполнением скрипта необходимо сначала добавить приложения, которые необходимо преобразовать conversionsParameters в переменную в скрипте. В переменную можно добавить несколько приложений. Скрипт использует приложение и удаленные или виртуальные машины для создания XML-файла, отформатированного в соответствии с требованиями средства упаковки MSIX (MsixPackagingTool.exe). После создания XML-файла скрипт run_job.ps1 выполняется в новом процессе PowerShell, который выполняет MsixPackagingTool.exe на целевом устройстве, чтобы преобразовать приложение и поместить его в папку .\Out, расположенную в папке выполнения скрипта.

Пример

PS C:\> entry.ps1

Пример Ths выполняет скрипт entry.ps1 . Этот скрипт преобразует приложения, указанные в переменной, conversionsParameters в пакеты MSIX. Приложения преобразуются с помощью виртуальных машин или удаленных машин, указанных в переменных virtualMachines и remoteMachines.

Параметры

virtualMachines

Параметр virtualMachines — это массив, содержащий имя и учетные данные виртуальных машин для подключения и доступа при упаковке приложения в формат MSIX.

  • Тип: массив
  • Обязательный: нет
$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. Эта виртуальная машина будет подключена к использованию учетных данных, введенных при появлении запроса (запрос отображается непосредственно после выполнения скрипта entry.ps1 ). Перед упаковкой приложения в формат упаковки MSIX скрипт создаст моментальный снимок виртуальной машины Hyper-V, а затем восстановится до этого моментального снимка после упаковки приложения.

remoteMachines

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

Удаленные компьютеры должны быть доступными и обнаруживаемыми в сети.

  • Тип: массив
  • Обязательный: нет
$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. Этот удаленный компьютер будет подключен к использованию учетных данных, введенных при появлении запроса (запрос отображается непосредственно после выполнения скрипта entry.ps1 ).

Убедитесь, что полное доменное имя или внешний псевдоним устройства можно разрешить до выполнения скрипта entry.ps1 .

подписьCertificate

Параметр signingCertificate — это массив, содержащий сведения, связанные с сертификатом подписи кода, который будет использоваться для подписи упаковаемого приложения. Этот сертификат должен иметь уровень шифрования по крайней мере SHA256.

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

conversionsParameters

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

  • Тип: массив
  • Обязательный: да
$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-файла со всеми необходимыми сведениями о приложении. После создания XML-файла скрипт передает XML-файл пакету средства упаковки MSIX (MsixPackagingTool.exe).

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

Скрипт создаст файл журнала, который описывает, что произошло во время выполнения скрипта. Файл журнала предоставит сведения, связанные с упаковкой приложений в формат упаковки MSIX и сведения, связанные с прогрессированием скрипта. Журналы можно считывать из любой текстовой программы, но были настроены для чтения с помощью средства чтения журналов Trace32. Ошибки в выполнении скрипта будут выделены красным цветом и предупреждения желтым цветом. Дополнительные сведения о средстве чтения журналов трассировки 32 см. в CMTrace.

Файл журнала создается в каталоге .\logs\BulkConversion.logскрипта.