Msix-Massen Konvertierungs SkriptsMSIX Bulk conversion scripts

Die Massen Konvertierungs Skripts im msix-Toolkit können verwendet werden, um die Konvertierung von Windows-apps in das msix-Paketformat zu automatisieren.The Bulk conversion scripts in the MSIX Toolkit can be used to automate the conversion of Windows apps to the MSIX package format. Die Liste der apps und deren Details werden im entry.ps1 Skript bereitgestellt.The list of apps and their details are provided in the entry.ps1 script.

Vorbereiten von Computern für die KonvertierungPrepare machines for conversion

Vor der Ausführung des Massen Konvertierungs Skripts des msix-Toolkits müssen die Geräte, die Sie verwenden (virtuell oder Remote), so konfiguriert werden, dass die Remote Kommunikation zugelassen und das msix-pakettool installiert wird.Prior to running the MSIX Toolkit's Bulk Conversion script, to automate the conversion of your application to the MSIX packaging format the devices that you will be using (virtual, or remote) must be configured to allow remote communication, and have the MSIX Packaging Tool installed.

BegriffTerm BeschreibungDescription
Host ComputerHost Machine Dies ist das Gerät, das die Massen Konvertierungs Skripts ausführt.This is the device executing the Bulk Conversion scripts.
Virtual MachineVirtual Machine Dabei handelt es sich um ein in Hyper-V vorhandenes Gerät, das auf dem Host Computer gehostet wird.This is a device existing in Hyper-V, hosted on the Host Machine.
RemotecomputerRemote Machine Dabei handelt es sich um einen physischen oder virtuellen Computer, der über das Netzwerk zugänglich ist.This is a physical or virtual machine accessible over the network.

Host ComputerHost Machine

Der Host Computer muss die folgenden Anforderungen erfüllen:The Host Machine must meet the following requirements:

  • Das msix-pakettool muss installiert sein.MSIX Packaging Tool must be installed.
  • Wenn Virtual Machines verwendet werden, muss Hyper-V installiert sein.If Virtual Machines are being used, Hyper-V must be installed.
  • Wenn Remote Computer verwendet werden:If Remote Machines are being used:
    • Das Gerät ist in derselben Domäne wie die Remote Computer vorhanden:Device exists in the same Domain as the Remote Machine(s):
      • Aktivieren von PowerShell-RemotingEnable PowerShell Remoting
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • Das Gerät ist in einer Arbeitsgruppe oder in einer alternativen Domäne als Remote Computer vorhanden:Device exists in a Workgroup or to an alternate Domain as the Remote Machine(s):
      • Aktivieren von PowerShell-RemotingEnable PowerShell remoting
      • Der WinRM-vertrauenswürdige Host muss den Gerätenamen oder die IP-Adresse des Remote Computers enthalten.WinRM Trusted Host must contain the device name or IP address of the Remote Machine
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

RemotecomputerRemote Machine

Der Remote Computer muss die folgenden Anforderungen erfüllen:The Remote Machine must meet the following requirements:

  • Das msix-pakettool muss installiert sein.MSIX Packaging Tool must be installed.

  • Wenn das Gerät in derselben Domäne wie der Host Computer vorhanden ist:If the device exists within the same domain as the Host Machine:

    • Aktivieren von PowerShell-RemotingEnable PowerShell Remoting
    • WinRM muss aktiviert seinWinRM must be enabled
    • ICMPv4 über die Client Firewall zulassenAllow ICMPv4 through client firewall
      # 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 Host Computer vorhanden ist:If the device exists within a workgroup or an alternate domain as the Host Machine:

    • Aktivieren von PowerShell-RemotingEnable PowerShell Remoting
    • Der WinRM-vertrauenswürdige Host muss den Gerätenamen oder die IP-Adresse des Host Computers enthalten.WinRM Trusted Host must contain the device name or the IP address of the Host Machine
    • ICMPv4 über die Client Firewall zulassenAllow ICMPv4 through client firewall
      # 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 MachineVirtual Machine

Es wird empfohlen, das Image "msix-Paket Erstellungs Tools" von Hyper-V zu verwenden, da es vorkonfiguriert ist, um alle Anforderungen zu erfüllen.It is recommended that the Hyper-V Quick Create "MSIX Packaging Tools Environment" image be used, as it is pre-configured to meet all requirements. Die virtuelle Maschine muss auf dem Host Computer gehostet werden und innerhalb Microsoft Hyper-V ausgeführt werden.The virtual machine must be hosted on the Host Machine and running within Microsoft Hyper-V.

Der virtuelle Computer muss die folgenden Anforderungen erfüllen:The Virtual Machine must meet the following requirements:

SyntaxSyntax

entry.ps1

BESCHREIBUNGDescription

Dabei handelt es sich um eine Reihe von PowerShell-Skripts, die die Möglichkeit zum Massen Verpacken von Anwendungen in das msix-Paketformat bereitstellen.This is a set of PowerShell scripts that provides the ability to bulk package applications into the MSIX package format. Diese Skripts stellen eine Verbindung mit einem lokalen virtuellen Computer oder einem Remote Computer her, der zum Verpacken der einzelnen Anwendungen verwendet wird.These scripts will connect to a local virtual machine or remote machine which will be used to package each application.

Apps, die in das msix-Anwendungs Format gepackt werden, werden in der Reihenfolge konvertiert, in der Sie im entry.ps1 Skript eingegeben wurden.Apps being packaged into the MSIX application format will be converted in the order they were entered in the entry.ps1 script. Die im entry.ps1 Skript aufgelisteten Remote Computer werden verwendet, um die Anwendungen im msix-Format zu verpacken.Remote machines listed in the entry.ps1 script will be used to package the applications into the MSIX format will be singularly used. Virtuelle Computer können mehrmals verwendet werden, um verschiedene Anwendungen in das msix-Anwendungs Format zu packen.Virtual machines can be used multiple times to package different applications into the MSIX application format.

Vor dem Ausführen des Skripts müssen Sie zuerst die apps hinzufügen, die Sie in die- conversionsParameters Variable im Skript konvertieren möchten.Before running the script, you must first add the apps you want to convert to the conversionsParameters variable in the script. Mehrere Apps können der Variablen hinzugefügt werden.Multiple apps can be added to the variable. Das Skript nutzt die APP und Remote/Virtual Machines zum Erstellen einer XML-Datei, die den Anforderungen des msix-pakettools (MsixPackagingTool.exe) entspricht.The script leverages the app and remote/virtual machines to create a XML file formatted to meet the requirements of the MSIX Packaging Tool (MsixPackagingTool.exe). Nachdem Sie die XML-Datei erstellt haben, 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 Ordner "Skriptausführung" zu platzieren.After creating the XML file, the run_job.ps1 script is executed in a new PowerShell process which executes MsixPackagingTool.exe on the target device to convert the app and place it in the .\Out folder located in the script execution folder.

BeispielExample

PS C:\> entry.ps1

Im Beispiel wird das entry.ps1 -Skript ausgeführt.Ths example executes the entry.ps1 script. Mit diesem Skript werden die in der Variablen angegebenen apps conversionsParameters in msix-Pakete konvertiert.This script converts the apps specified in the conversionsParameters variable into MSIX packages. Die apps werden mithilfe der virtuellen Computer oder Remote Computer konvertiert, die in den Variablen " VirtualMachines " und " remotemachines " angegeben sind.The apps are converted using the virtual machines or remote machines indicated in the virtualMachines and remoteMachines variables.

ParameterParameters

virtualMachinesvirtualMachines

Der virtualMachines -Parameter ist ein Array, das den Namen und die Anmelde Informationen der virtuellen Computer enthält, mit denen eine Verbindung hergestellt werden soll, und auf die zugegriffen wird, wenn eine app in das msixThe virtualMachines parameter is an array that contains the name and credentials of the virtual machines to connect to and access when packaging an app into the MSIX format.

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

Der angegebene virtuelle Computer wird zum Verpacken von apps in das msix-Format verwendet.The specified virtual machine will be used to package apps into the MSIX format. Dieser virtuelle Computer wird mit den Anmelde Informationen verbunden, die eingegeben werden, wenn Sie dazu aufgefordert werden (Eingabeaufforderung wird direkt nach dem Skript entry.ps1 Ausführung angezeigt).This virtual machine will be connected to using the credentials entered when prompted (prompt appears directly after script entry.ps1 execution). Vor dem Verpacken einer Anwendung in das msix-Paketformat erstellt das Skript eine Momentaufnahme des virtuellen Hyper-V-Computers und wird dann nach dem Verpacken der Anwendung in dieser Momentaufnahme wieder hergestellt.Prior to packaging an application to the MSIX packaging format, the script will create a snapshot of the Hyper-V VM, and then restored to this snapshot after application has been packaged.

remotemachinesremoteMachines

Der remoteMachines -Parameter ist ein Array, das den Namen und die Anmelde Informationen der Remote Computer enthält, mit denen eine Verbindung hergestellt werden soll, und auf die zugegriffen wird, wenn eine app in das msixThe remoteMachines parameter is an array that contains the name and credentials of the remote machines to connect to and access when packaging an app into the MSIX format. Bei den angegebenen Remote Computern handelt es sich um Einzel Verwendungs Geräte, die verwendet werden, um eine einzelne Anwendung zu verpacken.The remote machines specified will be single-use devices used to package a single application.

Remote Computer müssen zugänglich und im Netzwerk auffähierbar sein.Remote machines must be accessible and discoverable on the network.

  • Typ: ArrayType: Array
  • Erforderlich: NeinRequired: 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.
)

Der angegebene Remote Computer wird zum Packen einer einzelnen app in das msix-Format verwendet.The specified remote machine will be used to package a single app into the MSIX format. Dieser Remote Computer wird mit den Anmelde Informationen verbunden, die eingegeben werden, wenn Sie dazu aufgefordert werden (Eingabeaufforderung wird direkt nach Skript entry.ps1 Ausführung angezeigt).This remote machine will be connected to using the credentials entered when prompted (prompt appears directly after script entry.ps1 execution).

Stellen Sie sicher, dass der voll qualifizierte Domänen Name oder der extern gerichtete Alias des Geräts vor der Ausführung des entry.ps1 Skripts auflösbar ist.Ensure that the fully qualified domain name or externally facing alias of the device is resolvable prior to execution of the entry.ps1 script.

SigningCertificatesigningCertificate

Der- signingCertificate Parameter ist ein Array, das Informationen im Zusammenhang mit dem Code Signaturzertifikat enthält, das verwendet wird, um die msix-Paket Anwendung zu signieren.The signingCertificate parameter is an array that contains information related to the code signing certificate that will be used to sign the MSIX packaged application. Dieses Zertifikat muss eine Verschlüsselungs Stufe von mindestens SHA256 aufweisen.This certificate must have an encryption level of at minimum SHA256.

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

Configuration Manager-ParameterconversionsParameters

Der- conversionsParameters Parameter ist ein Array, das Informationen zu den apps enthält, die in das msix-Format konvertiert werden sollen.The conversionsParameters parameter is an array that contains information about the apps you want to convert to MSIX format. Jede APP im Array wird einzeln analysiert und durch die msix-Paket Konvertierung entweder auf einem Remote Computer oder auf einem virtuellen Computer ausgeführt.Each app in the array will be parsed individually and run through the MSIX package conversion on either a remote machine or virtual machine. Die apps werden in der Reihenfolge konvertiert, in der Sie im Skript angezeigt werden.The apps will be converted in the order that they appear in the script. Wenn die Konvertierung in das msix-Format fehlschlägt, versucht das Skript nicht erneut, die Anwendung auf einem anderen Remote Computer oder virtuellen Computer zu konvertieren.If the conversion to MSIX format fails, the script will not re-attempt to convert the application on a different remote machine or virtual machine.

  • Typ: ArrayType: Array
  • Erforderlich: JaRequired: Yes
$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 app-Informationen werden conversionsParameters verwendet, um eine XML-Datei mit allen erforderlichen Anwendungsdetails zu generieren.The app information provided in the conversionsParameters variable will be used to generate an XML file with all of the required application details. Nachdem Sie die XML-Datei erstellt haben, übergibt das Skript die XML-Datei an das msix-pakettool (MsixPackagingTool.exe), das verpackt werden soll.After creating the XML file, the script will then pass the XML file to the MSIX Packaging Tool (MsixPackagingTool.exe) to be packaged.

ProtokollierungLogging

Das Skript generiert eine Protokolldatei, in der beschrieben wird, was während der Skriptausführung aufgetreten ist.The script will generate a log file which outlines what has transpired throughout the script execution. Die Protokolldatei enthält Details im Zusammenhang mit dem Verpacken von Anwendungen im msix-Paketformat sowie Informationen im Zusammenhang mit dem Skript Fortschritt.The log file will provide details related to the packaging of applications to the MSIX packaging format, and information related to script progression. Die Protokolle können von einem beliebigen Text Dienstprogramm gelesen, aber mit dem Protokoll Leser Trace32 konfiguriert werden.The logs can be read from any text utility, but have been configured for reading using the Trace32 log reader. Fehler in der Skriptausführung werden als rot markiert, und es werden Warnungen als gelb angezeigt.Errors in the script execution will be highlighted as Red, and Warnings as yellow. Weitere Informationen zum Protokoll Leser der Ablauf Verfolgung 32 finden Sie unter cmtrace auf Microsoft-Dokumentation.For more information on the Trace 32 log reader, please visit CMTrace on Microsoft Docs.

Die Protokolldatei wird im Verzeichnis des Skripts erstellt .\logs\BulkConversion.log .The log file is created within the script's directory .\logs\BulkConversion.log.