Scripts de conversión masiva de MSIX

Los scripts de conversión masiva en el Kit de herramientas de MSIX se pueden usar para automatizar la conversión de aplicaciones de Windows al formato de paquete MSIX. La lista de aplicaciones y sus detalles se proporcionan en el script entry.ps1.

Preparación de máquinas para la conversión

Antes de ejecutar el script de conversión masiva del Kit de herramientas de MSIX, para automatizar la conversión de la aplicación al formato de empaquetado MSIX, los dispositivos que se van a usar (virtuales o remotos) deben configurarse para permitir la comunicación remota y tener instalada la herramienta de empaquetado MSIX.

Término Descripción
Equipo host Este es el dispositivo que ejecuta los scripts de conversión masiva.
Máquina virtual Se trata de un dispositivo existente en Hyper-V, hospedado en la máquina host.
Equipo remoto Se trata de una máquina física o virtual accesible a través de la red.

Equipo host

El equipo host debe cumplir los requisitos siguientes:

  • Se debe instalar la herramienta de empaquetado MSIX.
  • Si se usan máquinas virtuales, se debe instalar Hyper-V.
  • Si se usan máquinas remotas:
    • El dispositivo existe en el mismo dominio que la máquina remota:
      • Habilitar Comunicación remota con PowerShell
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • El dispositivo existe en un grupo de trabajo o en un dominio alternativo como máquina remota:
      • Habilitación de la comunicación remota con PowerShell
      • El host de confianza de WinRM debe contener el nombre del dispositivo o la dirección IP de la máquina remota
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

Equipo remoto

La máquina remota debe cumplir los requisitos siguientes:

  • Se debe instalar la herramienta de empaquetado MSIX.

  • Si el dispositivo existe en el mismo dominio que el equipo host:

    • Habilitar Comunicación remota con PowerShell
    • WinRM debe estar habilitado
    • Permitir ICMPv4 a través del firewall de cliente
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • Si el dispositivo existe dentro de un grupo de trabajo o un dominio alternativo como el equipo host:

    • Habilitar Comunicación remota con PowerShell
    • El host de confianza de WinRM debe contener el nombre del dispositivo o la dirección IP del equipo host
    • Permitir ICMPv4 a través del firewall de 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

Se recomienda usar la imagen "Entorno de herramientas de empaquetado de MSIX" de Hyper-V, ya que está preconfigurada para cumplir todos los requisitos. La máquina virtual debe hospedarse en el equipo host y ejecutarse en Microsoft Hyper-V.

La máquina virtual debe cumplir los requisitos siguientes:

Sintaxis

entry.ps1

Descripción

Se trata de un conjunto de scripts de PowerShell que proporciona la capacidad de empaquetar aplicaciones masivamente en el formato de paquete MSIX. Estos scripts se conectarán a una máquina virtual local o a una máquina remota que se usará para empaquetar cada aplicación.

Las aplicaciones que se empaquetan en el formato de aplicación MSIX se convertirán en el orden en que se especificaron en el script entry.ps1. Las máquinas remotas enumeradas en el script entry.ps1 se usarán para empaquetar las aplicaciones en formato MSIX. Las máquinas virtuales se pueden usar varias veces para empaquetar diferentes aplicaciones en el formato de aplicación MSIX.

Antes de ejecutar el script, primero se deben agregar las aplicaciones que se desea convertir a la variable conversionsParameters en el script. Se pueden agregar varias aplicaciones a la variable. El script aprovecha la aplicación y las máquinas virtuales o remotas para crear un archivo XML formateado para cumplir los requisitos de la herramienta de empaquetado MSIX (MsixPackagingTool.exe). Después de crear el archivo XML, el script run_job.ps1 se ejecuta en un nuevo proceso de PowerShell que ejecuta MsixPackagingTool.exe en el dispositivo de destino para convertir la aplicación y colocarla en la carpeta .\Out ubicada en la carpeta de ejecución del script.

Ejemplo

PS C:\> entry.ps1

En este ejemplo se ejecuta el script entry.ps1. Este script convierte las aplicaciones especificadas en la variable conversionsParameters en paquetes MSIX. Las aplicaciones se convierten mediante las máquinas virtuales o las máquinas remotas indicadas en las variables virtualMachines y remoteMachines.

Parámetros

virtualMachines

El parámetro virtualMachines es una matriz que contiene el nombre y las credenciales de las máquinas virtuales a las que conectarse y acceder al empaquetar una aplicación en formato MSIX.

  • Tipo: Matriz
  • Obligatorio: 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.
    }
)

La máquina virtual especificada se usará para empaquetar aplicaciones en formato MSIX. Esta máquina virtual se conectará para usar las credenciales especificadas cuando se le solicite (el mensaje aparece directamente después de la ejecución de script entry.ps1). Antes de empaquetar una aplicación en el formato de empaquetado MSIX, el script creará una instantánea de la máquina virtual de Hyper-V y, a continuación, se restaurará en esta instantánea una vez empaquetada la aplicación.

remoteMachines

El parámetro remoteMachines es una matriz que contiene el nombre y las credenciales de las máquinas remotas a las que conectarse y acceder al empaquetar una aplicación en formato MSIX. Las máquinas remotas especificadas serán dispositivos de uso único que se usan para empaquetar una sola aplicación.

Las máquinas remotas deben ser accesibles y detectables en la red.

  • Tipo: Matriz
  • Obligatorio: 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.
)

La máquina remota especificada se usará para empaquetar una sola aplicación en formato MSIX. Esta máquina remota se conectará para usar las credenciales especificadas cuando se le solicite (el mensaje aparece directamente después de la ejecución de script entry.ps1).

Asegúrese de que el nombre de dominio completo o el alias orientado externamente del dispositivo se puede resolver antes de la ejecución del script entry.ps1.

signingCertificate

El parámetro signingCertificate es una matriz que contiene información relacionada con el certificado de firma de código que se usará para firmar la aplicación empaquetada. Este certificado debe tener un nivel de cifrado de SHA256 como mínimo.

  • Tipo: Matriz
  • Obligatorio: No
$SigningCertificate = @{
    Password = "Password"; 
    Path = "C:\Temp\ContosoLab.pfx"
}

conversionsParameters

El parámetro conversionsParameters es una matriz que contiene información sobre las aplicaciones que deseas convertir al formato MSIX. Cada aplicación de la matriz se analizará individualmente y se ejecutará a través de la conversión de paquetes MSIX en una máquina remota o en una máquina virtual. Las aplicaciones se convertirán en el orden en que aparecen en el script. Si se produce un error en la conversión al formato MSIX, el script no volverá a intentar convertir la aplicación en otra máquina remota o máquina virtual.

  • Tipo: Matriz
  • Obligatoria: sí
$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.
    }
)

La información de la aplicación proporcionada en la variable conversionsParameters se usará para generar un archivo XML con todos los detalles de la aplicación necesarios. Después de crear el archivo XML, el script pasará el archivo XML a la herramienta de empaquetado MSIX (MsixPackagingTool.exe) que se va a empaquetar.

Registro

El script generará un archivo de registro que describe lo que ha transcurrido durante la ejecución del script. El archivo de registro proporcionará detalles relacionados con el empaquetado de aplicaciones al formato de empaquetado MSIX e información relacionada con la progresión del script. Los registros se pueden leer desde cualquier utilidad de texto, pero se han configurado para leerse mediante el lector de registros Trace32. Los errores en la ejecución del script se resaltarán en Rojo y las Advertencias en amarillo. Para obtener más información sobre el lector de registros Trace 32, visita CMTrace.

El archivo de registro se crea en el directorio .\logs\BulkConversion.log del script.