Scripts de conversion en bloc MSIX

Les scripts de conversion en bloc dans msIX Toolkit peuvent être utilisés pour automatiser la conversion d’applications Windows au format de package MSIX. La liste des applications et leurs détails sont fournis dans le script entry.ps1 .

Préparer des machines pour la conversion

Avant d’exécuter le script de conversion en bloc de MSIX Toolkit, pour automatiser la conversion de votre application au format d’empaquetage MSIX, les appareils que vous utiliserez (virtuels ou distants) doivent être configurés pour autoriser la communication à distance et que l’outil d’empaquetage MSIX soit installé.

Terme Description
Ordinateur hôte Il s’agit de l’appareil exécutant les scripts de conversion en bloc.
Machine virtuelle Il s’agit d’un appareil existant dans Hyper-V, hébergé sur l’ordinateur hôte.
Ordinateur distant Il s’agit d’une machine physique ou virtuelle accessible sur le réseau.

Ordinateur hôte

La machine hôte doit répondre aux exigences suivantes :

  • MSIX Packaging Tool doit être installé.
  • Si Machines Virtuelles sont utilisées, Hyper-V doit être installé.
  • Si les machines distantes sont utilisées :
    • L’appareil existe dans le même domaine que la ou les machines distantes :
      • Activer la communication à distance de PowerShell
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • L’appareil existe dans un groupe de travail ou dans un autre domaine comme ordinateur(s) distant(s) :
      • Activer la communication à distance de PowerShell
      • L’hôte approuvé WinRM doit contenir le nom de l’appareil ou l’adresse IP de l’ordinateur distant
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

Ordinateur distant

L’ordinateur distant doit répondre aux exigences suivantes :

  • MSIX Packaging Tool doit être installé.

  • Si l’appareil existe dans le même domaine que l’ordinateur hôte :

    • Activer la communication à distance de PowerShell
    • WinRM doit être activé
    • Autoriser ICMPv4 via le pare-feu client
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • Si l’appareil existe au sein d’un groupe de travail ou d’un autre domaine en tant que machine hôte :

    • Activer la communication à distance de PowerShell
    • L’hôte approuvé WinRM doit contenir le nom de l’appareil ou l’adresse IP de l’ordinateur hôte
    • Autoriser ICMPv4 via le pare-feu client
      # 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>
      
      

Machine virtuelle

Il est recommandé d’utiliser l’image « Environnement MSIX Packaging Tools » de création rapide Hyper-V, car elle est préconfigurée pour répondre à toutes les exigences. La machine virtuelle doit être hébergée sur l’ordinateur hôte et s’exécuter dans Microsoft Hyper-V.

La machine virtuelle doit répondre aux exigences suivantes :

Syntaxe

entry.ps1

Description

Il s’agit d’un ensemble de scripts PowerShell qui permet de empaqueter des applications en bloc au format de package MSIX. Ces scripts se connectent à une machine virtuelle locale ou à une machine distante qui sera utilisée pour empaqueter chaque application.

Les applications empaquetées au format d’application MSIX sont converties dans l’ordre dans lequel elles ont été entrées dans le script entry.ps1 . Les ordinateurs distants répertoriés dans le script entry.ps1 seront utilisés pour empaqueter les applications au format MSIX. Les machines virtuelles peuvent être utilisées plusieurs fois pour empaqueter différentes applications au format d’application MSIX.

Avant d’exécuter le script, vous devez d’abord ajouter les applications que vous souhaitez convertir en conversionsParameters variable dans le script. Plusieurs applications peuvent être ajoutées à la variable. Le script tire parti de l’application et des machines virtuelles distantes pour créer un fichier XML mis en forme pour répondre aux exigences de MSIX Packaging Tool (MsixPackagingTool.exe). Après avoir créé le fichier XML, le script run_job.ps1 est exécuté dans un nouveau processus PowerShell qui exécute MsixPackagingTool.exe sur l’appareil cible pour convertir l’application et la placer dans le dossier .\Out situé dans le dossier d’exécution du script.

Exemple

PS C:\> entry.ps1

L’exemple Ths exécute le script entry.ps1 . Ce script convertit les applications spécifiées dans la conversionsParameters variable en packages MSIX. Les applications sont converties à l’aide des machines virtuelles ou des machines distantes indiquées dans les variables virtualMachines et remoteMachines .

Paramètres

virtualMachines

Le virtualMachines paramètre est un tableau qui contient le nom et les informations d’identification des machines virtuelles auxquelles se connecter et accéder lors de l’empaquetage d’une application au format MSIX.

  • Type: Array
  • Obligatoire : Non
$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 machine virtuelle spécifiée sera utilisée pour empaqueter des applications au format MSIX. Cette machine virtuelle est connectée à l’aide des informations d’identification entrées lorsque vous y êtes invité (l’invite s’affiche directement après l’exécution du scriptentry.ps1 ). Avant d’empaqueter une application au format d’empaquetage MSIX, le script crée un instantané de la machine virtuelle Hyper-V, puis est restauré dans cet instantané une fois l’application empaquetée.

remoteMachines

Le remoteMachines paramètre est un tableau qui contient le nom et les informations d’identification des ordinateurs distants auxquels se connecter et accéder lors de l’empaquetage d’une application au format MSIX. Les machines distantes spécifiées seront des appareils à usage unique utilisés pour empaqueter une seule application.

Les machines distantes doivent être accessibles et détectables sur le réseau.

  • Type: Array
  • Obligatoire : Non
$remoteMachines = @(
    @{
        ComputerName = "Computer.Domain.com";   # The fully qualified name of the remote machine.
        Credential = $credential }              # Credentials used to connect/login to the remote machine.
)

L’ordinateur distant spécifié sera utilisé pour empaqueter une application unique au format MSIX. Cet ordinateur distant est connecté à l’aide des informations d’identification entrées lorsque vous y êtes invité (l’invite s’affiche directement après l’exécution du scriptentry.ps1 ).

Vérifiez que le nom de domaine complet ou l’alias externe de l’appareil peut être résolu avant l’exécution du script entry.ps1 .

signingCertificate

Le signingCertificate paramètre est un tableau qui contient des informations relatives au certificat de signature de code qui sera utilisé pour signer l’application empaquetée MSIX. Ce certificat doit avoir un niveau de chiffrement au minimum SHA256.

  • Type: Array
  • Obligatoire : Non
$SigningCertificate = @{
    Password = "Password"; 
    Path = "C:\Temp\ContosoLab.pfx"
}

conversionsParameters

Le conversionsParameters paramètre est un tableau qui contient des informations sur les applications que vous souhaitez convertir au format MSIX. Chaque application du tableau sera analysée individuellement et exécutée par le biais de la conversion de package MSIX sur une machine distante ou une machine virtuelle. Les applications sont converties dans l’ordre dans lequel elles apparaissent dans le script. Si la conversion au format MSIX échoue, le script ne tente pas de convertir l’application sur une autre machine distante ou machine virtuelle.

  • Type: Array
  • Obligatoire : Oui
$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.
    }
)

Les informations d’application fournies dans la conversionsParameters variable seront utilisées pour générer un fichier XML avec tous les détails de l’application requis. Après avoir créé le fichier XML, le script transmet ensuite le fichier XML à MSIX Packaging Tool (MsixPackagingTool.exe) à empaqueter.

Journalisation

Le script génère un fichier journal qui décrit ce qui s’est produit tout au long de l’exécution du script. Le fichier journal fournit des détails relatifs à l’empaquetage des applications au format d’empaquetage MSIX et aux informations relatives à la progression du script. Les journaux peuvent être lus à partir de n’importe quel utilitaire de texte, mais ont été configurés pour la lecture à l’aide du lecteur de journal Trace32. Les erreurs dans l’exécution du script sont mises en surbrillance en rouge et avertissements en jaune. Pour plus d’informations sur le lecteur du journal Trace 32, visitez CMTrace.

Le fichier journal est créé dans le répertoire .\logs\BulkConversion.logdu script.