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

Bevor Sie das Massenkonvertierungsskript des MSIX-Toolkits ausführen, müssen Sie die Konvertierung Ihrer Anwendung in das MSIX-Verpackungsformat automatisieren, die Geräte, die Sie verwenden (virtual oder remote), so konfiguriert werden, dass Die Remotekommunikation ermöglicht wird und das MSIX Packaging Tool installiert ist.

Begriff BESCHREIBUNG
Hostcomputer Dies ist das Gerät, das die Massenkonvertierungsskripts ausführt.
Virtual Machine Dies ist ein in Hyper-V vorhandenes Gerät, das 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:

  • MSIX Packaging Tool muss installiert werden.
  • Wenn Virtual Machines verwendet werden, muss Hyper-V installiert werden.
  • Wenn Remotecomputer verwendet werden:
    • Das Gerät ist in derselben Domäne wie der Remotecomputer vorhanden:
      • Aktivieren von PowerShell-Remoting
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • Das Gerät ist in einer Arbeitsgruppe oder 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:

  • MSIX Packaging Tool muss installiert werden.

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

    • Aktivieren von PowerShell-Remoting
    • WinRM muss aktiviert sein
    • ICMPv4 über die Client-Firewall zulassen
      # 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.
    • ICMPv4 über die Client-Firewall zulassen
      # 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, dass das Hyper-V Quick Create "MSIX Packaging Tools Environment"-Image verwendet wird, da es vorkonfiguriert ist, um alle Anforderungen zu erfüllen. Der virtuelle Computer muss auf dem Hostcomputer gehostet und innerhalb Microsoft Hyper-V ausgeführt werden.

Der virtuelle Computer muss die folgenden Anforderungen erfüllen:

Syntax

entry.ps1

BESCHREIBUNG

Dies ist eine Reihe von PowerShell-Skripts, die die Möglichkeit bieten, Paketanwendungen im MSIX-Paketformat zu massen. Diese Skripts stellen eine Verbindung mit einem lokalen virtuellen Computer oder Remotecomputer her, der zum Verpacken jeder Anwendung verwendet wird.

Apps, die im MSIX-Anwendungsformat verpackt 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 im MSIX-Anwendungsformat zu verpacken.

Bevor Sie das Skript ausführen, müssen Sie zuerst die Apps hinzufügen, die Sie in die conversionsParameters Variable im Skript konvertieren möchten. Mehrere Apps können der Variablen 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 ihn im Ordner ".\Out " im Skriptausführungsordner zu platzieren.

Beispiel

PS C:\> entry.ps1

Ths-Beispiel führt das entry.ps1 Skript aus. Dieses Skript konvertiert die in der conversionsParameters Variable angegebenen Apps 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, um eine Verbindung herzustellen und zuzugreifen, wenn eine App im MSIX-Format verpackt wird.

  • 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 eingegebenen Anmeldeinformationen verbunden (Eingabeaufforderung wird direkt nach der entry.ps1 Ausführung des Skripts angezeigt). Bevor Sie eine Anwendung im MSIX-Verpackungsformat verpacken, erstellt das Skript eine Momentaufnahme der Hyper-V-VM, und wird dann nach dem Verpacken der Anwendung auf diese Momentaufnahme wiederhergestellt.

remoteMachines

Der remoteMachines Parameter ist ein Array, das den Namen und die Anmeldeinformationen der Remotecomputer enthält, um eine Verbindung herzustellen und zuzugreifen, wenn eine App im MSIX-Format verpackt wird. Die angegebenen Remotecomputer sind einzelverwendungsgeräte, die zum Verpacken einer einzelnen Anwendung verwendet werden.

Remotecomputer müssen auf das Netzwerk zugreifen 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 im MSIX-Format zu verpacken. Dieser Remotecomputer wird mit den eingegebenen Anmeldeinformationen verbunden (Eingabeaufforderung wird direkt nach der entry.ps1 Ausführung des Skripts angezeigt).

Stellen Sie sicher, dass der vollqualifizierte Domänenname oder externe Alias des Geräts vor der Ausführung desentry.ps1-Skripts aufgelöst werden kann.

signCertificate

Der signingCertificate Parameter ist ein Array, das Informationen im Zusammenhang mit dem Codesignaturzertifikat enthält, das zum Signieren der MSIX-verpackten Anwendung verwendet wird. Dieses Zertifikat muss über eine Verschlüsselungsebene 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 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 im 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 conversionsParameters Variable bereitgestellten App-Informationen werden verwendet, um eine XML-Datei mit allen erforderlichen Anwendungsdetails zu generieren. Nachdem Sie die XML-Datei erstellt haben, wird das Skript dann die XML-Datei an das MSIX Packaging Tool (MsixPackagingTool.exe) übergeben, das verpackt werden soll.

Protokollierung

Das Skript generiert eine Protokolldatei, die die gesamte Skriptausführung umgibt. Die Protokolldatei enthält Details zur Verpackung von Anwendungen im MSIX-Verpackungsformat und Informationen im Zusammenhang mit der Skriptentwicklung. Die Protokolle können aus einem beliebigen Textprogramm gelesen werden, wurden jedoch mit dem Trace32-Protokollleser konfiguriert. Fehler in der Skriptausführung werden als Rot hervorgehoben und Warnungen als gelb hervorgehoben. Weitere Informationen zum Ablaufverfolgungsausgabe 32-Protokoll finden Sie unter CMTrace.

Die Protokolldatei wird im Verzeichnis .\logs\BulkConversion.logdes Skripts erstellt.