Generieren einer Vorlagendatei für Befehlszeilenkonvertierungen

Mit dem MSIX Packaging Tool können Sie die Konvertierung auf zwei Arten ausführen: über die interaktive Benutzeroberfläche oder über unsere Befehlszeilenoption. Wenn Sie die Befehlszeile verwenden, müssen Sie eine Vorlagendatei bereitstellen, damit die Konvertierung mit Ihren spezifischen Einstellungen und Anforderungen funktioniert. Dieser Artikel hilft Ihnen bei der Erstellung einer Vorlagendatei, die für Sie geeignet ist.

Es gibt zwei Möglichkeiten, wie Sie eine Vorlagendatei abrufen können, die für Sie geeignet ist:

  • Sie können die Benutzeroberfläche des MSIX Packaging Tools verwenden. In den Einstellungen des Tools können Sie angeben, dass Sie eine Konvertierungsvorlagendatei mit jedem von Ihnen erstellten MSIX-Paket generieren möchten.
  • Sie können eine Beispielvorlage erstellen und die konfigurationen, die Sie für jede Konvertierung benötigen, manuell eingeben.

Generieren einer Konvertierungsvorlagendatei aus dem MSIX Packaging Tool

  1. Starten Sie das MSIX Packaging Tool.
  2. Wechseln Sie zu den Einstellungen in der oberen rechten Ecke der Anwendung.
  3. Stellen Sie sicher, dass die Option "Befehlszeilendatei mit jedem Paket generieren" ausgewählt ist.
  4. Nehmen Sie andere Änderungen oder Änderungen an Ihren benötigten Einstellungen vor (z. B. Ausschlusselemente, Ausgangscodes).
  5. Speichern Sie die Einstellungen.
  6. Durchlaufen Sie den Anwendungspaketworkflow mithilfe eines Installers.
    • Wenn Sie kein Installationsprogramm auswählen, können Sie keine Konvertierungsvorlagendatei generieren.
    • Wenn Sie eine exe verwenden, müssen Sie ein automatisches Flag an Ihr Installationsprogramm übergeben, um die Konvertierungsvorlagendatei zu generieren.
  7. Am Ende der Konvertierung haben Sie eine Vorlagendatei basierend auf dem ausgewählten Installationsprogramm und ihren aktuellen Einstellungen konfiguriert, die Sie jetzt für zukünftige Konvertierungen wiederverwenden können.
    • Standardmäßig wird die Konvertierungsvorlagendatei an demselben Speicherort wie Ihr MSIX-Paket gespeichert, Sie können jedoch auf der Seite "Paket erstellen" einen separaten Speicherort für die Vorlagendatei angeben.
    • Sie müssen trotzdem einige Änderungen vornehmen, basierend auf der Ausgabe von MSIX am Ende jeder Konvertierung.

Manuelles Bearbeiten der Konvertierungsvorlagendatei

Sie können die Vorlagenparameter für die Konvertierungsvorlagendatei manuell bearbeiten, um eine Vorlagendatei zu generieren, die für Sie geeignet ist. Achten Sie beim Generieren der Konvertierungsvorlagendatei darauf, welche Features Sie der Vorlagendatei hinzufügen, da einige möglicherweise zusätzliche Schemaverweise erfordern, um zu funktionieren.

Referenz der Parameter für die Konvertierungsvorlage

Nachfolgend finden Sie die vollständige Liste der Parameter, die in der Konvertierungsvorlagendatei verwendet werden können.

ConversionSettings Beschreibung
Einstellungen:: AllowTelemetry [Optional:] Ermöglicht die Protokollierung der Telemetriedaten für den jeweiligen Aufruf des Tools.
Einstellungen:: ApplyAllPrepareComputerFixes [Optional:] Wendet alle empfohlenen Korrekturen zur Vorbereitung des Computers an. Kann nicht festgelegt werden, wenn andere Attribute verwendet werden.
Einstellungen:: GenerateCommandLineFile [Optional:] Kopiert die Eingabe der Vorlagendatei in das Verzeichnis „SaveLocation“ zur zukünftigen Verwendung.
Einstellungen:: AllowPromptForPassword [Optional:] Legt für das Tool fest, dass der Benutzer aufgefordert wird, Kennwörter für den virtuellen Computer und für das Signaturzertifikat einzugeben, wenn dieses erforderlich ist und sie nicht angegeben wurden.
Einstellungen:: EnforceMicrosoftStoreVersioningRequirements [Optional:] Legt für das Tool fest, dass das Paketversionsschema erzwungen wird, das für die Bereitstellung über den Microsoft Store und den Microsoft Store für Unternehmen erforderlich ist.
Einstellungen:: ServerPortNumber [optional] Wird beim Herstellen einer Verbindung mit einem Remotecomputer verwendet. Erfordert v2 des Vorlagenschemas.
Einstellungen:: AddPackageIntegrity [optional] Fügt allen generierten MSIX-Dateien die Paketintegrität hinzu. Erfordert v5 des Vorlagenschemas.
ValidInstallerExitCodes [optional] 0 oder mehr ValidInstallerExitCode-Elemente. Erfordert v2 des Vorlagenschemas.
ValidInstallerExitCodes:: ValidInstallerExitCode [optional] Geben Sie alle Installations-Exitcodes an, mit denen das Tool möglicherweise nicht vertraut ist oder einen Neustart erfordert. Erfordert v2 des Vorlagenschemas.
ValidInstallerExitCodes:: ValidInstallerExitCode:: Neustart [optional] Geben Sie an, ob ein Exitcode während der Konvertierung einen Neustart auslösen soll. Erfordert v3 des Vorlagenschemas.
ExclusionItems [Optional:] 0 oder mehr „FileExclusion“- oder „RegistryExclusion“-Elemente. Alle „FileExclusion“-Elemente müssen vor allen „RegistryExclusion“-Elementen angezeigt werden.
ExclusionItems::FileExclusion [Optional:] Eine Datei, die bei der Paketerstellung auszuschließen ist.
ExclusionItems::FileExclusion::ExcludePath Pfad zu der Datei, die bei der Paketerstellung auszuschließen ist.
ExclusionItems::RegistryExclusion [Optional:] Ein Registrierungsschlüssel, der bei der Paketerstellung auszuschließen ist.
ExclusionItems::RegistryExclusion:: ExcludePath Pfad zu dem Registrierungsschlüssel, der bei der Paketerstellung auszuschließen ist.
PrepareComputer::DisableDefragService [Optional:] Deaktiviert die Windows-Defragmentierung, während die App konvertiert wird. Wenn dieser Parameter auf FALSE festgelegt ist, wird „ApplyAllPrepareComputerFixes“ überschrieben.
PrepareComputer:: DisableWindowsSearchService [Optional:] Deaktiviert Windows Search, während die App konvertiert wird. Wenn dieser Parameter auf FALSE festgelegt ist, wird „ApplyAllPrepareComputerFixes“ überschrieben.
PrepareComputer:: DisableSmsHostService [Optional:] Deaktiviert den SMS-Host, während die App konvertiert wird. Wenn dieser Parameter auf FALSE festgelegt ist, wird „ApplyAllPrepareComputerFixes“ überschrieben.
PrepareComputer:: DisableWindowsUpdateService [Optional:] Deaktiviert Windows Update, während die App konvertiert wird. Wenn dieser Parameter auf FALSE festgelegt ist, wird „ApplyAllPrepareComputerFixes“ überschrieben.
SaveLocation [Optional:] Ein Element zum Angeben des Speicherorts des Tools. Wenn dieser Parameter nicht angegeben ist, wird das Paket unter dem Ordner „Desktop“ gespeichert.
SaveLocation::PackagePath [Optional:] Der Pfad zu der Datei oder dem Ordner, in der bzw. dem das resultierende MSIX-Paket gespeichert wird.
SaveLocation::TemplatePath [optional] Der Pfad zu der Datei oder dem Ordner, in dem die resultierende Befehlszeilenvorlage gespeichert wird.
Installer::Path Der Pfad zum Installationsprogramm der Anwendung.
Installer::Arguments [Optional:] Die an das Installationsprogramm zu übergebenden Argumente. Das Tool führt MSI-Installationsprogramme mithilfe des Arguments „/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1“ automatisch und unbeaufsichtigt aus. HINWEIS: Sie müssen die Argumente übergeben, um zu erzwingen, dass das Installationsprogramm im Hintergrund ausgeführt wird, wenn Sie .exe-Installer verwenden.
Installer::InstallLocation [optional] Der vollständige Pfad zum Stammordner Ihrer Anwendung für die installierten Dateien, wenn sie installiert wurden (z. B. "C:\Programme (x86)\MyAppInstalllocation").
Installer::IsUnattendedInstallWithoutArgument [optional] Dieses Attribut sollte verwendet werden, wenn die App die Installation ohne automatische Argumente zulässt. Dieses Attribut wird nur für EXE-Installationsprogramme verwendet.
VirtualMachine [Optional:] Ein Element, mit dem angegeben wird, dass die Konvertierung auf einem lokalen virtuellen Computer ausgeführt wird.
VirtualMachine::Name Der Name des virtuellen Computers, der für die Konvertierungsumgebung verwendet werden soll.
VirtualMachine::Username Der Benutzername für den virtuellen Computer, der für die Konvertierungsumgebung verwendet werden soll.
RemoteMachine [optional] Ein Element, das angibt, dass die Konvertierung auf einem Remotecomputer ausgeführt wird. Erfordert v2 des Vorlagenschemas.
RemoteMachine:: ComputerName Der Name des Remotecomputers, der für die Konvertierungsumgebung verwendet werden soll. Erfordert v2 des Vorlagenschemas.
RemoteMachine:: Benutzername Der Benutzername für den Remotecomputer, der für die Konvertierungsumgebung verwendet werden soll. Erfordert v2 des Vorlagenschemas.
RemoteMachine:: EnableAutoLogon [optional] Dadurch werden Sie automatisch bei der Ausführung einer Konvertierung angemeldet, die einen Neustart auf einem Remotecomputer erfordert, damit ihre Konvertierung nahtlos fortgesetzt wird. Erfordert V3 des Vorlagenschemas.
PackageInformation::PackageName Der Paketname für das MSIX-Paket.
PackageInformation::PackageDisplayName Der Paketanzeigename für das MSIX-Paket.
PackageInformation::PublisherName Der Herausgeber für das MSIX-Paket.
PackageInformation::PublisherDisplayName Der Anzeigename des Herausgebers für das MSIX-Paket.
PackageInformation::Version Die Versionsnummer für das MSIX-Paket.
PackageInformation::P ackageDescription [optional] Die Beschreibung für Ihr MSIX-Paket. Erfordert v4 des Vorlagenschemas.
PackageInformation:: MainPackageNameForModificationPackage [Optional:] Der Paketidentitätsname des Hauptpaketnamens. Wird verwendet, wenn ein Änderungspaket erstellt wird, das eine Abhängigkeit von einer (übergeordneten) Hauptanwendung aufweist.
SigningInformation [optional] Ein Element zum Angeben von Signaturinformationen für die Device Guard-Signatur. Erfordert v4 des Vorlagenschemas.
SigningInformation:: DeviceGuardSigning [optional] Ein Element zum Angeben von Device Guard-Signaturinformationen. Erfordert v4 des Vorlagenschemas.
DeviceGuardSigning:: TokenFile Das Azure AD-Zugriffstoken, das für die Device Guard-Anmeldung im JSON-Format erforderlich ist . Erfordert ein v4-Vorlagenschema.
DeviceGuardSigning:: TimestampUrl [optional] Stellt zum Zeitpunkt der Signierung mit Device Guard einen Zeitstempel bereit, um sicherzustellen, dass Ihre Anwendung über die Lebensdauer des Zertifikats hinaus installiert wird. Erfordert v4 des Vorlagenschemas.
Anwendungen [Optional:] 0 oder mehr Anwendungselemente zum Konfigurieren der Anwendungseinträge im MSIX-Paket.
Application::Id Die App-ID für die MSIX-Anwendung. Diese ID wird für den erkannten Anwendungseintrag verwendet, der mit dem angegebenen „ExecutableName“-Element übereinstimmt. Sie können mehrere App-ID-Werte für ausführbare Dateien im Paket verwenden.

Dieser Wert ist der eindeutige Bezeichner der Anwendung im Paket. Dieser Wert wird manchmal als relative App-ID für das Paket (Package relative app ID, PRAID) bezeichnet. Die ID muss im Paket eindeutig sein (die ID kann nicht im selben Paket mehrfach verwendet werden). Die ID muss jedoch nicht global eindeutig sein. In einem anderen Paket im System kann die gleiche ID verwendet werden.

Diese Zeichenfolge enthält alphanumerische Felder, die durch Punkte getrennt sind. Jedes Feld muss mit einem ASCII-Buchstaben beginnen. Sie können diese nicht als Feldwerte verwenden: "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8" und "LPT9".
Application::DisplayName Der App-Anzeigename für das MSIX-Paket. Dieser Anzeigename wird für den erkannten Anwendungseintrag verwendet, der mit dem angegebenen „ExecutableName“-Element übereinstimmt.
Application::ExecutableName Der Name der ausführbaren Datei für die MSIX-Anwendung, die dem Paketmanifest hinzugefügt wird. Der entsprechende Anwendungseintrag wird ignoriert, wenn keine Anwendung mit diesem Namen erkannt wird.
Application::Description [Optional:] Die App-Beschreibung für die MSIX-Anwendung. Wenn dieser Parameter nicht verwendet wird, wird der „DisplayName“ der Anwendung verwendet. Diese Beschreibung wird für den erkannten Anwendungseintrag verwendet, der mit dem angegebenen „ExecutableName“-Element übereinstimmt.
Funktionen [Optional:] 0 oder mehr „Capability“-Elemente zum Hinzufügen benutzerdefinierter Funktionen zum MSIX-Paket. Die „runFullTrust“-Funktion wird während der Konvertierung standardmäßig hinzugefügt.
Capability::Name Die Funktion, die dem MSIX-Paket hinzugefügt werden soll.

Beispieldatei für Konvertierungsvorlagen

<MsixPackagingToolTemplate
    xmlns="http://schemas.microsoft.com/appx/msixpackagingtool/template/2018"
    xmlns:V2="http://schemas.microsoft.com/msix/msixpackagingtool/template/1904"
    xmlns:V3="http://schemas.microsoft.com/msix/msixpackagingtool/template/1907"
    xmlns:V4="http://schemas.microsoft.com/msix/msixpackagingtool/template/1910"
    xmlns:V5="http://schemas.microsoft.com/msix/msixpackagingtool/template/2001">
<!--Note: You only need to include xmlns:v2 - xmlns:v5 if you are using one of the features that use those schemas -->

    <Settings
        AllowTelemetry="true"
        ApplyAllPrepareComputerFixes="true"
        GenerateCommandLineFile="true"
        AllowPromptForPassword="false" 
	    EnforceMicrosoftStoreVersioningRequirements="false"
        v2:ServerPortNumber="1599"
        v5:AddPackageIntegrity="true">    

	<!--Note: Exclusion items are optional and if declared take precedence over the default tool exclusion items
        <ExclusionItems>
            <FileExclusion ExcludePath="[{CryptoKeys}]" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Crypto" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Search\Data" />
            <FileExclusion ExcludePath="[{Cookies}]" />
            <FileExclusion ExcludePath="[{History}]" />
            <FileExclusion ExcludePath="[{Cache}]" />
            <FileExclusion ExcludePath="[{Personal}]" />
            <FileExclusion ExcludePath="[{Profile}]\Local Settings" />
            <FileExclusion ExcludePath="[{Profile}]\NTUSER.DAT.LOG1" />
            <FileExclusion ExcludePath="[{Profile}]\ NTUSER.DAT.LOG2" />
            <FileExclusion ExcludePath="[{Recent}]" />
            <FileExclusion ExcludePath="[{Windows}]\debug" />
            <FileExclusion ExcludePath="[{Windows}]\Logs\CBS" />
            <FileExclusion ExcludePath="[{Windows}]\Temp" />
            <FileExclusion ExcludePath="[{Windows}]\WinSxS\ManifestCache" />
            <FileExclusion ExcludePath="[{Windows}]\WindowsUpdate.log" />
	    <FileExclusion ExcludePath="[{Windows}]\Installer" />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\$Recycle.Bin " />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\System Volume Information" />
	    <FileExclusion ExcludePath="[{AppVPackageDrive}]\Config.Msi" />
            <FileExclusion ExcludePath="[{AppData}]\Microsoft\AppV" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Antimalware" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Windows Defender" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Windows Defender" />
	    <FileExclusion ExcludePath="[{ProgramFiles}]\WindowsApps" />
            <FileExclusion ExcludePath="[{Local AppData}]\Temp" />
	    <FileExclusion ExcludePath="[{Local AppData}]\Microsoft\Windows" />
	    <FileExclusion ExcludePath="[{Local AppData}]\Packages" />

            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware Setup" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Security Client" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\AppV" />
        </ExclusionItems>
	-->
    
    <!--Note: Specifying an installer exit code will allow you to automatically trigger a reboot during your conversion
      <v2:ValidInstallerExitCodes>
        <V2:ValidInstallerExitCode ExitCode="3010" V3:Reboot="true"/>
        <V2:ValidInstallerExitCode ExitCode="1641"/>
      </v2:ValidInstallerExitCodes>
    -->
	    
    </Settings>

    <!--Note: this section takes precedence over the Settings::ApplyAllPrepareComputerFixes attribute and is optional
    <PrepareComputer
        DisableDefragService="true"
        DisableWindowsSearchService="true"
        DisableSmsHostService="true"
        DisableWindowsUpdateService="true"/>
    -->

    <SaveLocation
        PackagePath="C:\users\user\Desktop\MyPackage.msix" 
        TemplatePath="C:\users\user\Desktop\MyTemplate.xml" />

    <Installer
        Path="C:\MyAppInstaller.msi"
        InstallLocation="C:\Program Files\MyAppInstallLocation" />
	
    <!--NOTE: This section specifies that the conversion will be run on a local Virtual Machine. This is optional if you want to change your conversion environment from the default local machine.
    <VirtualMachine Name="vmname" Username="vmusername"/>
    -->

    <!--NOTE: This section specifies that the conversion will be run on a remote machine.This is optional if you want to change your conversion environment from the default local machine.
    <v2:RemoteMachine ComputerName="vmname" Username="vmusername" v3:EnableAutoLogon="true"/>
    -->

    <PackageInformation
        PackageName="MyAppPackageName"
        PackageDisplayName="MyApp Display Name"
        PublisherName="CN=MyPublisher"
        PublisherDisplayName="MyPublisher Display Name"
        Version="1.1.0.0"
        MainPackageNameForModificationPackage="MainPackageIdentityName">

    <!--Note: This is optional, if you want to sign your package with Device Guard signing
        <v4:SigningInformation>
            <v4:DeviceGuardSigning
                Tokenfile="tokenfile.json"
                TimestampUrl="https://mytimestamp.com"/>
        </v4:SigningInformation>
    -->
        
	<!--NOTE: This ID will be used if the Application entry detected matches the specified ExecutableName
        <Applications>
            <Application
                Id="MyApp1"
                Description="MyApp"
                DisplayName="My App"
                ExecutableName="MyApp.exe"/>
        </Applications>
	-->

	<!--NOTE: This is optional as “runFullTrust” capability is added by default during conversion
        <Capabilities>
            <Capability Name="runFullTrust" />
        </Capabilities>
	-->
	    
    </PackageInformation>
</MsixPackagingToolTemplate>