Scripts de conversão em massa MSIX

Os scripts de conversão em massa no MSIX Toolkit podem ser usados para automatizar a conversão de aplicativos do Windows para o formato de pacote MSIX. A lista de aplicativos e seus detalhes são fornecidos no script entry.ps1 .

Preparar máquinas para conversão

Antes de executar o script de conversão em massa do MSIX Toolkit, para automatizar a conversão de seu aplicativo para o formato de empacotamento MSIX, os dispositivos que você usará (virtuais ou remotos) devem ser configurados para permitir a comunicação remota e ter a MSIX Packaging Tool instalada.

Termo Descrição
Computador host Este é o dispositivo que executa os scripts de conversão em massa.
Máquina Virtual Este é um dispositivo existente no Hyper-V, hospedado na máquina host.
Computador remoto Esta é uma máquina física ou virtual acessível pela rede.

Computador host

A máquina host deve atender aos seguintes requisitos:

  • A MSIX Packaging Tool deve estar instalada.
  • Se as Máquinas Virtuais estiverem sendo usadas, o Hyper-V deverá ser instalado.
  • Se as Máquinas Remotas estiverem sendo usadas:
    • O dispositivo existe no mesmo domínio que a(s) máquina(s) remota(s):
      • Habilitar a comunicação remota do PowerShell
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • O dispositivo existe em um grupo de trabalho ou em um domínio alternativo como a(s) máquina(s) remota(s):
      • Habilitar a Comunicação Remota do PowerShell
      • O Host Confiável do WinRM deve conter o nome do dispositivo ou o endereço IP da Máquina Remota
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

Computador remoto

A máquina remota deve atender aos seguintes requisitos:

  • A MSIX Packaging Tool deve estar instalada.

  • Se o dispositivo existir no mesmo domínio que a Máquina Host:

    • Habilitar a Comunicação Remota do PowerShell
    • WinRM deve ser habilitado
    • Permitir ICMPv4 através do firewall do cliente
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • Se o dispositivo existir dentro de um grupo de trabalho ou de um domínio alternativo como a Máquina Host:

    • Habilitar a Comunicação Remota do PowerShell
    • O Host Confiável do WinRM deve conter o nome do dispositivo ou o endereço IP da Máquina Host
    • Permitir ICMPv4 através do firewall do cliente
      # 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>
      
      

Máquina Virtual

É recomendável que a imagem "MSIX Packaging Tools Environment" de Criação Rápida do Hyper-V seja usada, pois ela é pré-configurada para atender a todos os requisitos. A máquina virtual deve ser hospedada na máquina host e em execução no Microsoft Hyper-V.

A máquina virtual deve atender aos seguintes requisitos:

Sintaxe

entry.ps1

Descrição

Este é um conjunto de scripts do PowerShell que fornece a capacidade de empacotar aplicativos em massa no formato de pacote MSIX. Esses scripts se conectarão a uma máquina virtual local ou máquina remota que será usada para empacotar cada aplicativo.

Os aplicativos que estão sendo empacotados no formato de aplicativo MSIX serão convertidos na ordem em que foram inseridos no script entry.ps1 . As máquinas remotas listadas no script entry.ps1 serão usadas para empacotar os aplicativos no formato MSIX serão usadas singularmente. As máquinas virtuais podem ser usadas várias vezes para empacotar aplicativos diferentes no formato de aplicativo MSIX.

Antes de executar o script, você deve primeiro adicionar os aplicativos que deseja converter para a conversionsParameters variável no script. Vários aplicativos podem ser adicionados à variável. O script aproveita o aplicativo e as máquinas remotas/virtuais para criar um arquivo XML formatado para atender aos requisitos da MSIX Packaging Tool (MsixPackagingTool .exe). Depois de criar o arquivo XML, o script run_job.ps1 é executado em um novo processo do PowerShell que executa MsixPackagingTool.exe no dispositivo de destino para converter o aplicativo e colocá-lo na pasta .\Out localizada na pasta de execução do script.

Exemplo

PS C:\> entry.ps1

Ths exemplo executa o script entry.ps1 . Esse script converte os aplicativos especificados na conversionsParameters variável em pacotes MSIX. Os aplicativos são convertidos usando as máquinas virtuais ou máquinas remotas indicadas nas variáveis virtualMachines e remoteMachines.

Parâmetros

virtualMachines

O virtualMachines parâmetro é uma matriz que contém o nome e as credenciais das máquinas virtuais às quais se conectar e acessar ao empacotar um aplicativo no formato MSIX.

  • Tipo: Array
  • Obrigatório: Não
$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.
    }
)

A máquina virtual especificada será usada para empacotar aplicativos no formato MSIX. Essa máquina virtual será conectada ao uso das credenciais inseridas quando solicitado (o prompt aparece diretamente após a execução do script entry.ps1 ). Antes de empacotar um aplicativo para o formato de empacotamento MSIX, o script criará um instantâneo da VM Hyper-V e, em seguida, restaurado para esse instantâneo após o aplicativo ter sido empacotado.

remotoMáquinas

O remoteMachines parâmetro é uma matriz que contém o nome e as credenciais das máquinas remotas às quais se conectar e acessar ao empacotar um aplicativo no formato MSIX. As máquinas remotas especificadas serão dispositivos de uso único usados para empacotar um único aplicativo.

As máquinas remotas devem estar acessíveis e detectáveis na rede.

  • Tipo: Array
  • Obrigatório: Não
$remoteMachines = @(
    @{
        ComputerName = "Computer.Domain.com";   # The fully qualified name of the remote machine.
        Credential = $credential }              # Credentials used to connect/login to the remote machine.
)

A máquina remota especificada será usada para empacotar um único aplicativo no formato MSIX. Essa máquina remota será conectada ao uso das credenciais inseridas quando solicitado (o prompt aparece diretamente após a execução do script entry.ps1 ).

Certifique-se de que o nome de domínio totalmente qualificado ou o alias externo do dispositivo possa ser resolvido antes da execução do script entry.ps1 .

assinaturaCertificado

O signingCertificate parâmetro é uma matriz que contém informações relacionadas ao certificado de assinatura de código que será usado para assinar o aplicativo empacotado. Esse certificado deve ter um nível de criptografia de, no mínimo, SHA256.

  • Tipo: Array
  • Obrigatório: Não
$SigningCertificate = @{
    Password = "Password"; 
    Path = "C:\Temp\ContosoLab.pfx"
}

conversõesParâmetros

O conversionsParameters parâmetro é uma matriz que contém informações sobre os aplicativos que você deseja converter para o formato MSIX. Cada aplicativo na matriz será analisado individualmente e executado através da conversão do pacote MSIX em uma máquina remota ou máquina virtual. Os aplicativos serão convertidos na ordem em que aparecem no script. Se a conversão para o formato MSIX falhar, o script não tentará converter novamente o aplicativo em uma máquina remota ou máquina virtual diferente.

  • Tipo: Array
  • Obrigatório: sim
$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.
    }
)

As informações do aplicativo fornecidas na conversionsParameters variável serão usadas para gerar um arquivo XML com todos os detalhes necessários do aplicativo. Depois de criar o arquivo XML, o script passará o arquivo XML para a MSIX Packaging Tool (MsixPackagingTool.exe) a ser empacotada.

Registrando em log

O script gerará um arquivo de log que descreve o que aconteceu durante a execução do script. O arquivo de log fornecerá detalhes relacionados ao empacotamento de aplicativos para o formato de empacotamento MSIX e informações relacionadas à progressão de script. Os logs podem ser lidos de qualquer utilitário de texto, mas foram configurados para leitura usando o leitor de log Trace32. Os erros na execução do script serão realçados como Vermelho e Avisos como amarelo. Para obter mais informações sobre o leitor de log do Trace 32, visite CMTrace.

O arquivo de log é criado dentro do diretório .\logs\BulkConversion.logdo script .