Come generare un file modello per le conversioni dalla riga di comando

MsiX Packaging Tool consente di eseguire la conversione in due modi: tramite l'interfaccia utente interattiva o l'opzione della riga di comando. Quando si usa la riga di comando, è necessario fornire un file modello in modo che la conversione funzioni con le impostazioni e le esigenze specifiche. Questo articolo illustra il processo di generazione di un file modello che funziona automaticamente.

Esistono due modi per ottenere un file modello che funzioni per l'utente:

  • È possibile usare l'interfaccia utente di MSIX Packaging Tool. Nelle impostazioni dello strumento è possibile specificare che si vuole generare un file modello di conversione con ogni pacchetto MSIX creato.
  • È possibile usare un modello di esempio e immettere manualmente le configurazioni necessarie per ogni conversione.

Generare un file modello di conversione da MSIX Packaging Tool

  1. Avviare MSIX Packaging Tool.
  2. Passare alle impostazioni nell'angolo superiore destro dell'applicazione.
  3. Assicurarsi che l'opzione "Genera un file della riga di comando con ogni pacchetto" sia selezionata.
  4. Apportare eventuali altre modifiche o modifiche alle impostazioni necessarie(ad esempio elementi di esclusione, codici di uscita).
  5. Salvare le impostazioni
  6. Eseguire il flusso di lavoro del pacchetto dell'applicazione usando un programma di installazione.
    • Se non si seleziona un programma di installazione, non sarà possibile generare un file modello di conversione.
    • Se si usa un file exe, sarà necessario passare un flag silent al programma di installazione per generare il file del modello di conversione.
  7. Al termine della conversione, si avrà un file modello configurato in base al programma di installazione scelto e alle impostazioni correnti che è ora possibile usare nuovamente per le conversioni future.
    • Per impostazione predefinita, il file del modello di conversione verrà salvato nello stesso percorso del pacchetto MSIX, ma è possibile specificare un percorso di salvataggio separato per il file modello nella pagina Crea pacchetto.
    • Sarà comunque necessario apportare alcune modifiche in base all'output MSIX desiderato alla fine di ogni conversione.

Modificare manualmente il file del modello di conversione

È possibile modificare manualmente i parametri del modello per il file modello di conversione per generare un file modello che funzioni automaticamente. Quando si genera il file del modello di conversione, prestare attenzione alle funzionalità che si aggiungono nel file modello, in quanto alcune potrebbero richiedere riferimenti allo schema aggiuntivi per funzionare.

Informazioni di riferimento sui parametri del modello di conversione

Ecco l'elenco completo dei parametri che puoi usare nel file di modello di conversione.

ConversionSettings Descrizione
Impostazioni:: AllowTelemetry [facoltativo] Abilita la registrazione dei dati di telemetria per questa chiamata dello strumento.
Impostazioni:: ApplyAllPrepareComputerFixes [facoltativo] Applica tutte le correzioni di preparazione del computer consigliate. Non può essere impostato quando sono usati altri attributi.
Impostazioni:: GenerateCommandLineFile [facoltativo] Copia l'input del file di modello nella directory SaveLocation per uso futuro.
Impostazioni:: AllowPromptForPassword [facoltativo] Indica allo strumento di chiedere all'utente di immettere le password per la macchina virtuale e per il certificato di firma se richieste e non specificate.
Impostazioni:: EnforceMicrosoftStoreVersioningRequirements [facoltativo] Indica allo strumento di applicare lo schema di controllo delle versioni del pacchetto necessario per la distribuzione da Microsoft Store e Microsoft Store for Business.
Impostazioni:: ServerPortNumber [facoltativo] Usato per la connessione a un computer remoto. Richiede la versione 2 dello schema del modello.
Impostazioni:: AddPackageIntegrity [facoltativo] Aggiunge l'integrità del pacchetto a ogni MSIX generato. Richiede la versione 5 dello schema del modello.
ValidInstallerExitCodes [facoltativo] 0 o più elementi ValidInstallerExitCode. Richiede la versione 2 dello schema del modello.
ValidInstallerExitCodes:: ValidInstallerExitCode [facoltativo] Specificare i codici di uscita del programma di installazione con cui lo strumento potrebbe non avere familiarità o richiedere un riavvio. Richiede la versione 2 dello schema del modello.
ValidInstallerExitCodes:: ValidInstallerExitCode:: Reboot [facoltativo] Specificare se un codice di uscita deve attivare un riavvio durante la conversione. Richiede la versione 3 dello schema del modello.
ExclusionItems [facoltativo] 0 o più elementi FileExclusion o RegistryExclusion. Tutti gli elementi FileExclusion devono precedere qualsiasi elemento RegistryExclusion.
ExclusionItems::FileExclusion [facoltativo] File da escludere dal pacchetto.
ExclusionItems::FileExclusion::ExcludePath [facoltativo] Percorso del file da escludere dal pacchetto.
ExclusionItems::RegistryExclusion [facoltativo] Chiave del Registro di sistema da escludere dal pacchetto.
ExclusionItems::RegistryExclusion:: ExcludePath Percorso del Registro di sistema da escludere dal pacchetto.
PrepareComputer::DisableDefragService [facoltativo] Disabilita l'utilità di deframmentazione di Windows durante la conversione dell'app. Se impostato su false, esegue l'override di ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableWindowsSearchService [facoltativo] Disabilita Windows Search durante la conversione dell'app. Se impostato su false, esegue l'override di ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableSmsHostService [facoltativo] Disabilita l'host SMS durante la conversione dell'app. Se impostato su false, esegue l'override di ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableWindowsUpdateService [facoltativo] Disabilita Windows Update durante la conversione dell'app. Se impostato su false, esegue l'override di ApplyAllPrepareComputerFixes.
SaveLocation [facoltativo] Elemento che specifica il percorso di salvataggio dello strumento. Se non specificato, il pacchetto viene salvato nella cartella Desktop.
SaveLocation::PackagePath [facoltativo] Percorso del file o della cartella in cui viene salvato il pacchetto MSIX risultante.
SaveLocation::TemplatePath [facoltativo] Percorso del file o della cartella in cui viene salvato il modello della riga di comando risultante.
Installer::Path Percorso del programma di installazione dell'applicazione.
Installer::Arguments [facoltativo] Argomenti da passare al programma di installazione. Lo strumento eseguirà automaticamente i programmi di installazione MSI automaticamente usando l'argomento "/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1". NOTA: è necessario passare gli argomenti per forzare l'esecuzione invisibile all'utente del programma di installazione se si usano .exe programma di installazione.
Installer::InstallLocation [facoltativo] Percorso completo della cartella radice dell'applicazione per i file installati, se installati, ad esempio "C:\Programmi (x86)\MyAppInstalllocation".
VirtualMachine [facoltativo] Elemento che specifica che la conversione verrà eseguita su una macchina virtuale locale.
VirtualMachine::Name Nome della macchina virtuale da usare per l'ambiente di conversione.
VirtualMachine::Username Nome utente della macchina virtuale da usare per l'ambiente di conversione.
RemoteMachine [facoltativo] Elemento per specificare che la conversione verrà eseguita in un computer remoto. Richiede la versione 2 dello schema del modello.
RemoteMachine:: ComputerName Nome del computer remoto da usare per l'ambiente di conversione. Richiede la versione 2 dello schema del modello.
RemoteMachine:: Nome utente Nome utente del computer remoto da usare per l'ambiente di conversione. Richiede la versione 2 dello schema del modello.
RemoteMachine:: EnableAutoLogon [facoltativo] Verrà eseguito automaticamente l'accesso quando si esegue una conversione che richiede un riavvio in un computer remoto, in modo che la conversione continui senza problemi. Richiede la versione 3 dello schema del modello.
PackageInformation::PackageName Nome del pacchetto MSIX.
PackageInformation::PackageDisplayName Nome visualizzato del pacchetto MSIX.
PackageInformation::PublisherName Editore del pacchetto MSIX.
PackageInformation::PublisherDisplayName Nome visualizzato dell'editore del pacchetto MSIX.
PackageInformation::Version Numero di versione del pacchetto MSIX.
PackageInformation::P ackageDescription [facoltativo] Descrizione del pacchetto MSIX. Richiede la versione 4 dello schema del modello.
PackageInformation:: MainPackageNameForModificationPackage [facoltativo] Nome dell'identità del pacchetto del nome del pacchetto principale. Viene usato durante la creazione di un pacchetto di modifica che accetta una dipendenza da un'applicazione principale (padre).
SigningInformation [facoltativo] Elemento per specificare le informazioni di firma per Firma di Device Guard. Richiede la versione 4 dello schema del modello.
SigningInformation:: DeviceGuardSigning [facoltativo] Elemento per specificare le Firma di Device Guard dati. Richiede la versione 4 dello schema del modello.
DeviceGuardSigning:: TokenFile Token Azure AD di accesso richiesto per Firma di Device Guard in formato JSON. Richiede lo schema del modello v4.
DeviceGuardSigning:: TimestampUrl [facoltativo] Fornisce un timestamp al momento della firma con Device Guard per garantire che l'applicazione verrà installata oltre la durata del certificato. Richiede la versione 4 dello schema del modello.
Applicazioni [facoltativo] 0 o più elementi Application per configurare le voci Application nel pacchetto MSIX.
Application::Id ID app dell'applicazione MSIX. Questo ID verrà usato per la voce Application rilevata che corrisponde al parametro ExecutableName specificato. Il pacchetto può contenere più valori di ID applicazione per gli eseguibili.

Questo valore è l'identificatore univoco dell'applicazione all'interno del pacchetto. È detto anche identificatore applicazione relativo al pacchetto. L'ID deve essere univoco all'interno del pacchetto (lo stesso ID non può essere usato più volte nello stesso pacchetto). Tuttavia, l'ID non deve essere univoco globalmente. Nel sistema può essere presente un altro pacchetto che usa lo stesso ID.

Questa stringa contiene campi alfanumerici separati da punti. Ogni campo deve iniziare con un carattere alfabetico ASCII. Non è possibile usarli come valori di campo: "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8" e "LPT9".
Application::DisplayName Nome visualizzato dell'app per il pacchetto MSIX. Questo nome visualizzato verrà usato per la voce Application rilevata che corrisponde al parametro ExecutableName specificato.
Application::ExecutableName Nome dell'eseguibile dell'applicazione MSIX che verrà aggiunto al manifesto del pacchetto. La voce Application corrispondente verrà ignorata se non viene rilevata un'applicazione con questo nome.
Application::Description [facoltativo] Descrizione dell'applicazione MSIX. Se questo parametro non viene usato, verrà usato Application:DisplayName. Questa descrizione verrà usata per la voce Application rilevata che corrisponde al parametro ExecutableName specificato.
Funzionalità [facoltativo] 0 o più elementi Capability per aggiungere funzionalità personalizzate al pacchetto MSIX. La funzionalità "runFullTrust" viene aggiunta per impostazione predefinita durante la conversione.
Capability::Name Funzionalità da aggiungere al pacchetto MSIX.

File modello di conversione di esempio

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