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. In diesem Artikel erfahren Sie, wie Sie eine Vorlagendatei generieren, die für Sie geeignet ist.

Es gibt zwei Möglichkeiten, eine Vorlagendatei zu erhalten, 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 mit jedem von Ihnen erstellten MSIX-Paket eine Konvertierungsvorlagendatei generieren möchten.
  • Sie können eine Beispielvorlage verwenden und manuell die Konfigurationen eingeben, die Sie für jede Konvertierung benötigen.

Generieren einer Konvertierungsvorlagendatei mit 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 alle anderen Änderungen oder Änderungen an Ihren Einstellungen vor, die Sie benötigen (z. B. Ausschlusselemente, Exitcodes).
  5. Speichern Sie die Einstellungen.
  6. Durchlaufen Sie den Anwendungspaketworkflow mithilfe eines Installationsprogramms.
    • Wenn Sie kein Installationsprogramm auswählen, können Sie keine Konvertierungsvorlagendatei generieren.
    • Wenn Sie eine EXE-Datei verwenden, müssen Sie ein automatisches Flag an Das Installationsprogramm übergeben, um die Konvertierungsvorlagendatei zu generieren.
  7. Am Ende der Konvertierung wird 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 am gleichen Speicherort wie Ihr MSIX-Paket gespeichert. Sie können jedoch auf der Seite Paket erstellen einen separaten Speicherort für Ihre Vorlagendatei angeben.
    • Sie müssen weiterhin einige Änderungen vornehmen, je nach MSIX, das Sie am Ende jeder Konvertierung ausgeben möchten.

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, damit sie 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 jeder generierten MSIX-Datei Paketintegrität hinzu. Erfordert v5 des Vorlagenschemas.
ValidInstallerExitCodes [optional] 0 oder mehr ValidInstallerExitCode-Elemente. Erfordert v2 des Vorlagenschemas.
ValidInstallerExitCodes:: ValidInstallerExitCode [optional] Geben Sie alle Exitcodes für das Installationsprogramm an, mit denen das Tool möglicherweise nicht vertraut ist oder die einen Neustart erfordern. Erfordert v2 des Vorlagenschemas.
ValidInstallerExitCodes:: ValidInstallerExitCode:: Reboot [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 der bzw. 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 automatisch ausgeführt wird, wenn Sie .exe-Installationsprogramme verwenden.
Installer::InstallLocation [optional] Der vollständige Pfad zum Stammordner Ihrer Anwendung für die installierten Dateien( z.B. "C:\Programme (x86)\MyAppInstalllocation").
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 wieder angemeldet, wenn Sie eine Konvertierung durchführen, die einen Neustart auf einem Remotecomputer erfordert, damit die 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 Device Guard-Signatur. Erfordert v4 des Vorlagenschemas.
SigningInformation:: DeviceGuardSigning [optional] Ein Element zum Angeben Device Guard-Signatur Informationen. Erfordert v4 des Vorlagenschemas.
DeviceGuardSigning:: TokenFile Der Azure AD Zugriffstoken, das für Device Guard-Signatur im JSON-Format erforderlich ist. Erfordert das v4-Vorlagenschema.
DeviceGuardSigning:: TimestampUrl [optional] Stellt einen Zeitstempel zum Zeitpunkt der Signierung mit Device Guard 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.

Beispiel für eine Konvertierungsvorlagendatei

<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>