MSIX-Massenkonvertierungsskripts

Die Massenkonvertierungsskripts im MSIX-Toolkit können verwendet werden, um die Konvertierung von Windows-Apps in das MSIX-Paketformat zu automatisieren. Die Liste der Apps und deren Details werden im entry.ps1-Skript bereitgestellt.

Vorbereiten von Computern für die Konvertierung

Vor dem Ausführen des Massenkonvertierungsskripts des MSIX-Toolkits müssen zum Automatisieren der Konvertierung Ihrer Anwendung in das MSIX-Paketformat die geräte, die Sie verwenden (virtuell oder remote), so konfiguriert werden, dass die Remotekommunikation zugelassen wird, und das MSIX Packaging Tool muss installiert sein.

Begriff Beschreibung
Hostcomputer Dies ist das Gerät, das die Skripts für die Massenkonvertierung ausführt.
Virtual Machine Dies ist ein Gerät, das in Hyper-V vorhanden ist und auf dem Hostcomputer gehostet wird.
Remotecomputer Dies ist ein physischer oder virtueller Computer, auf den über das Netzwerk zugegriffen werden kann.

Hostcomputer

Der Hostcomputer muss die folgenden Anforderungen erfüllen:

  • Das MSIX Packaging Tool muss installiert sein.
  • Wenn Virtual Machines verwendet werden, muss Hyper-V installiert werden.
  • Wenn Remotecomputer verwendet werden:
    • Das Gerät befindet sich in derselben Domäne wie die Remotecomputer:
      • Aktivieren von PowerShell-Remoting
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • Das Gerät ist in einer Arbeitsgruppe oder in einer alternativen Domäne als Remotecomputer vorhanden:
      • Aktivieren von PowerShell-Remoting
      • WinRM Trusted Host muss den Gerätenamen oder die IP-Adresse des Remotecomputers enthalten.
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

Remotecomputer

Der Remotecomputer muss die folgenden Anforderungen erfüllen:

  • Das MSIX Packaging Tool muss installiert sein.

  • Wenn das Gerät in derselben Domäne wie der Hostcomputer vorhanden ist:

    • Aktivieren von PowerShell-Remoting
    • WinRM muss aktiviert sein
    • Zulassen von ICMPv4 über die Clientfirewall
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • Wenn das Gerät in einer Arbeitsgruppe oder einer alternativen Domäne als Hostcomputer vorhanden ist:

    • Aktivieren von PowerShell-Remoting
    • WinRM Trusted Host muss den Gerätenamen oder die IP-Adresse des Hostcomputers enthalten.
    • Zulassen von ICMPv4 über die Clientfirewall
      # 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

Es wird empfohlen, das Hyper-V-Schnellerfassungsimage "MSIX Packaging Tools Environment" zu verwenden, da es vorkonfiguriert ist, um alle Anforderungen zu erfüllen. Der virtuelle Computer muss auf dem Hostcomputer gehostet werden und innerhalb Microsoft Hyper-V ausgeführt werden.

Der virtuelle Computer muss die folgenden Anforderungen erfüllen:

Syntax

entry.ps1

BESCHREIBUNG

Hierbei handelt es sich um eine Reihe von PowerShell-Skripts, mit denen Anwendungen in einem Massenpaket im MSIX-Paketformat verpackt werden können. Diese Skripts stellen eine Verbindung mit einem lokalen virtuellen Computer oder Remotecomputer her, der zum Packen der einzelnen Anwendungen verwendet wird.

Apps, die in das MSIX-Anwendungsformat gepackt werden, werden in der Reihenfolge konvertiert, in der sie im entry.ps1-Skript eingegeben wurden. Remotecomputer, die im entry.ps1 Skript aufgeführt sind, werden verwendet, um die Anwendungen im MSIX-Format zu verpacken. Virtuelle Computer können mehrmals verwendet werden, um verschiedene Anwendungen in das MSIX-Anwendungsformat zu packen.

Bevor Sie das Skript ausführen, müssen Sie zuerst die Apps hinzufügen, die Sie in die Variable im Skript konvertieren conversionsParameters möchten. Der Variablen können mehrere Apps hinzugefügt werden. Das Skript nutzt die App und remote/virtuelle Computer, um eine XML-Datei zu erstellen, die den Anforderungen des MSIX Packaging Tools (MsixPackagingTool.exe) entspricht. Nach dem Erstellen der XML-Datei wird das run_job.ps1 Skript in einem neuen PowerShell-Prozess ausgeführt, der MsixPackagingTool.exe auf dem Zielgerät ausführt, um die App zu konvertieren und im Ordner .\Out im Skriptausführungsordner zu platzieren.

Beispiel

PS C:\> entry.ps1

Im Ths-Beispiel wird das entry.ps1 Skript ausgeführt. Dieses Skript konvertiert die in der Variablen angegebenen Apps conversionsParameters in MSIX-Pakete. Die Apps werden mithilfe der virtuellen Computer oder Remotecomputer konvertiert, die in den Variablen virtualMachines und remoteMachines angegeben sind.

Parameter

virtualMachines

Der virtualMachines -Parameter ist ein Array, das den Namen und die Anmeldeinformationen der virtuellen Computer enthält, mit denen beim Packen einer App im MSIX-Format eine Verbindung hergestellt und darauf zugegriffen werden soll.

  • Typ: Array
  • Erforderlich: Nein
$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.
    }
)

Der angegebene virtuelle Computer wird verwendet, um Apps im MSIX-Format zu verpacken. Dieser virtuelle Computer wird mit den Anmeldeinformationen verbunden, die bei entsprechender Aufforderung eingegeben wurden (die Eingabeaufforderung wird direkt nach der Ausführung des Skriptsentry.ps1 angezeigt). Vor dem Packen einer Anwendung in das MSIX-Paketformat erstellt das Skript eine Momentaufnahme des virtuellen Hyper-V-Computers und stellt diese Momentaufnahme wieder her, nachdem die Anwendung gepackt wurde.

remoteMachines

Der remoteMachines -Parameter ist ein Array, das den Namen und die Anmeldeinformationen der Remotecomputer enthält, mit denen beim Packen einer App im MSIX-Format eine Verbindung hergestellt und darauf zugegriffen werden soll. Die angegebenen Remotecomputer sind Geräte mit einmaliger Verwendung, die zum Packen einer einzelnen Anwendung verwendet werden.

Remotecomputer müssen im Netzwerk zugänglich und auffindbar sein.

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

Der angegebene Remotecomputer wird verwendet, um eine einzelne App in das MSIX-Format zu packen. Mit diesem Remotecomputer wird eine Verbindung hergestellt, indem die Anmeldeinformationen verwendet werden, die bei entsprechender Aufforderung eingegeben werden (die Eingabeaufforderung wird direkt nach der Ausführung des Skriptsentry.ps1 angezeigt).

Stellen Sie sicher, dass der vollqualifizierte Domänenname oder der extern zugängliche Alias des Geräts vor der Ausführung des entry.ps1 Skripts aufgelöst werden kann.

signingCertificate

Der signingCertificate -Parameter ist ein Array, das Informationen im Zusammenhang mit dem Codesignaturzertifikat enthält, das zum Signieren der MSIX-gepackten Anwendung verwendet wird. Dieses Zertifikat muss über eine Verschlüsselungsstufe von mindestens SHA256 verfügen.

  • Typ: Array
  • Erforderlich: Nein
$SigningCertificate = @{
    Password = "Password"; 
    Path = "C:\Temp\ContosoLab.pfx"
}

conversionsParameters

Der conversionsParameters -Parameter ist ein Array, das Informationen zu den Apps enthält, die Sie in das MSIX-Format konvertieren möchten. Jede App im Array wird einzeln analysiert und durch die MSIX-Paketkonvertierung auf einem Remotecomputer oder virtuellen Computer ausgeführt. Die Apps werden in der Reihenfolge konvertiert, in der sie im Skript angezeigt werden. Wenn die Konvertierung in das MSIX-Format fehlschlägt, versucht das Skript nicht erneut, die Anwendung auf einem anderen Remotecomputer oder virtuellen Computer zu konvertieren.

  • Typ: Array
  • Erforderlich: Ja
$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.
    }
)

Die in der Variablen bereitgestellten conversionsParameters App-Informationen werden verwendet, um eine XML-Datei mit allen erforderlichen Anwendungsdetails zu generieren. Nach dem Erstellen der XML-Datei übergibt das Skript die XML-Datei an das MSIX Packaging Tool (MsixPackagingTool.exe), das gepackt werden soll.

Protokollierung

Das Skript generiert eine Protokolldatei, in der beschrieben wird, was während der Ausführung des Skripts passiert ist. Die Protokolldatei enthält Details zur Paketerstellung von Anwendungen im MSIX-Paketformat sowie Informationen zum Skriptfortschritt. Die Protokolle können aus einem beliebigen Texthilfsprogramm gelesen werden, wurden jedoch für das Lesen mit dem Trace32-Protokollleser konfiguriert. Fehler in der Skriptausführung werden als Rot und Warnungen als gelb hervorgehoben. Weitere Informationen zum Trace 32-Protokollleser finden Sie unter CMTrace auf Microsoft-Dokumentation.

Die Protokolldatei wird im Verzeichnis des Skripts .\logs\BulkConversion.log erstellt.