Compartilhar via


Como gerar um arquivo de modelo para conversões de linha de comando

Com a Ferramenta de Empacotamento MSIX, você pode executar a conversão de duas maneiras: por meio da interface do usuário interativa ou por meio da nossa opção de linha de comando. Ao usar a linha de comando, você precisa fornecer um arquivo de modelo para que a conversão funcione com suas configurações e necessidades específicas. Este artigo ajudará a orientá-lo durante o processo de geração de um arquivo de modelo que funciona para você.

Há duas maneiras de obter um arquivo de modelo que funciona para você:

  • Você pode usar a interface do usuário da Ferramenta de Empacotamento MSIX. Nas configurações da ferramenta, você pode especificar que deseja gerar um arquivo de modelo de conversão com cada pacote MSIX criado.
  • Você pode pegar um modelo de exemplo e inserir manualmente as configurações necessárias para cada conversão.

Gerar um arquivo modelo de conversão usando a Ferramenta de Empacotamento MSIX

  1. Inicie a Ferramenta de Empacotamento MSIX.
  2. Vá para as configurações no canto superior direito do aplicativo.
  3. Verifique se a opção "Gerar um arquivo de linha de comando com cada pacote" está selecionada.
  4. Faça outras alterações ou modificações nas configurações necessárias (por exemplo, itens de exclusão, códigos de saída).
  5. Salve as configurações
  6. Percorra o fluxo de trabalho do Pacote de Aplicativos usando um instalador.
    • Se você não selecionar um instalador, não poderá gerar um arquivo de modelo de conversão.
    • Se você estiver usando um exe, precisará passar um sinalizador silencioso para o instalador para gerar o arquivo de modelo de conversão.
  7. No final da conversão, você terá um arquivo de modelo configurado com base no instalador escolhido e nas configurações atuais, que agora podem ser reutilizados para conversões futuras.
    • Por padrão, o arquivo de modelo de conversão será salvo no mesmo local do pacote MSIX, mas você pode especificar um local de salvamento separado para o arquivo de modelo na página Criar pacote.
    • Você ainda precisará fazer algumas modificações com base em qual MSIX você deseja produzir no final de cada conversão.

Editar manualmente o arquivo de modelo de conversão

Você pode editar manualmente os parâmetros de modelo para o arquivo de modelo de conversão para gerar um arquivo de modelo que funciona para você. Ao gerar o arquivo de modelo de conversão, preste atenção a quais recursos você adiciona ao arquivo de modelo, pois alguns podem exigir referências de esquema adicionais para funcionar.

Referência de parâmetros do modelo de conversão

Aqui está a lista completa de parâmetros que você pode usar no arquivo de modelo de conversão.

ConversionSettings Descrição
Configurações:: PermitirTelemetria [opcional] Habilita o registro em log de telemetria para essa invocação da ferramenta.
Configurações:: ApplyAllPrepareComputerFixes [opcional] Aplica todas as correções de preparação do computador recomendadas. Não é possível definir quando outros atributos são usados.
Configurações:: GenerateCommandLineFile [opcional] Copia a entrada do arquivo de modelo para o diretório SaveLocation para uso futuro.
Configurações:: AllowPromptForPassword [opcional] Instrui a ferramenta a solicitar que o usuário insira senhas para a Máquina Virtual e para o certificado de assinatura, se for necessário e não especificado.
Configurações:: EnforceMicrosoftStoreVersioningRequirements [opcional] Instrui a ferramenta a impor o esquema de controle de versão de pacote necessário para implantação da Microsoft Store e da Microsoft Store para Empresas.
Configurações:: Número da Porta do Servidor [opcional] Usado ao se conectar a um computador remoto. Requer a versão 2 do modelo de esquema.
Configurações:: AddPackageIntegrity [opcional] Adiciona integridade do pacote a cada MSIX gerado. Requer a v5 do esquema de modelo.
CódigoDeSaídaDoInstaladorVálido [opcional] 0 ou mais elementos ValidInstallerExitCode. Requer a versão 2 do modelo de esquema.
ValidInstallerExitCodes:: ValidInstallerExitCode [opcional] Especifique os códigos de saída do instalador com os quais a ferramenta pode não estar familiarizada ou exigir uma reinicialização. Requer a versão 2 do modelo de esquema.
ValidInstallerExitCodes:: ValidInstallerExitCode:: Reinicialização [opcional] Especifique se um código de saída deve disparar uma reinicialização durante a conversão. Requer a v3 do esquema de modelo.
Itens de Exclusão [opcional] 0 ou mais elementos de exclusão de arquivos ou exclusão de registros. Todos os elementos FileExclusion devem aparecer antes de qualquer elemento RegistryExclusion.
ExclusionItems::FileExclusion [opcional] Um arquivo a ser excluído para empacotamento.
ExclusionItems::FileExclusion::ExcludePath Caminho do arquivo a ser excluído para o empacotamento.
ItensDeExclusão::ExclusãoDeRegistro [opcional] Uma chave do Registro a ser excluído para o empacotamento.
ExclusionItems::RegistryExclusion:: ExcludePath Caminho do Registro a ser excluído para o empacotamento.
PrepareComputer::D isableDefragService [opcional] Desabilita o Desfragmentador do Windows enquanto o aplicativo está sendo convertido. Se for definido como false, substituirá ApplyAllPrepareComputerFixes.
PrepareComputer:: DesativarServiçoDePesquisaDoWindows [opcional] Desabilita a Pesquisa do Windows enquanto o aplicativo está sendo convertido. Se for definido como false, substituirá ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableSmsHostService [opcional] Desativa o Host SMS enquanto o aplicativo está sendo convertido. Se for definido como false, substituirá ApplyAllPrepareComputerFixes.
PrepareComputer:: DesabilitarServiçoDeAtualizaçãoDoWindows [opcional] Desabilita o Windows Update enquanto o aplicativo está sendo convertido. Se for definido como false, substituirá ApplyAllPrepareComputerFixes.
SaveLocation [opcional] Um elemento para especificar o local de salvamento da ferramenta. Se não for especificado, o pacote será salvo na pasta Desktop.
SaveLocation::P ackagePath [opcional] O caminho para o arquivo ou pasta em que o pacote MSIX resultante é salvo.
SaveLocation::TemplatePath [opcional] O caminho para o arquivo ou pasta em que o modelo de linha de comando resultante é salvo.
Installer::P ath O caminho para o instalador do aplicativo.
Installer::Arguments [opcional] Os argumentos a serem passados para o instalador. A ferramenta executará de forma automática os instaladores MSI silenciosamente usando o argumento "/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1". NOTA: você deve passar os argumentos para forçar o instalador a executar em modo silencioso se estiver usando instaladores .exe.
Installer::InstallLocation [opcional] O caminho completo para a pasta raiz do aplicativo para os arquivos instalados se ele estiver instalado (por exemplo, "C:\Arquivos de Programas (x86)\MyAppInstalllocation").
Installer::IsUnattendedInstallWithoutArgument [opcional] Esse atributo deverá ser usado se o aplicativo permitir a instalação "Autônoma" sem argumentos silenciosos. Esse atributo é usado apenas para instaladores de .exe.
Máquina virtual [opcional] Um elemento para especificar que a conversão será executada em uma Máquina Virtual local.
VirtualMachine::Name O nome da máquina virtual a ser usada para o ambiente de conversão.
VirtualMachine::Username O nome de usuário da máquina virtual a ser usada para o ambiente de conversão.
RemoteMachine [opcional] Um elemento para especificar que a conversão será executada em um computador remoto. Requer a versão 2 do modelo de esquema.
RemoteMachine:: ComputerName O nome do computador remoto a ser usado para o ambiente de conversão. Requer a versão 2 do modelo de esquema.
RemoteMachine:: Nome de usuário O nome de usuário do computador remoto a ser usado para o ambiente de conversão. Requer a versão 2 do modelo de esquema.
RemoteMachine:: EnableAutoLogon [opcional] Isso fará você entrar automaticamente ao executar uma conversão que exige uma reinicialização em uma máquina remota, permitindo que a conversão continue sem interrupção. Requer a V3 do esquema de modelo.
PackageInformation::P ackageName O nome do pacote MSIX.
PackageInformation::P ackageDisplayName O nome de exibição do pacote MSIX.
PackageInformation::P ublisherName O fornecedor do pacote MSIX.
PackageInformation::P ublisherDisplayName O nome de exibição do fornecedor do pacote MSIX.
PackageInformation::Version O número da versão do pacote MSIX.
PackageInformation::P ackageDescription [opcional] A descrição do pacote MSIX. Requer v4 do esquema de modelo.
InformaçõesDoPacote:: NomeDoPacotePrincipalParaPacoteDeModificação [opcional] O nome da identidade do pacote do nome do pacote principal. Isso é usado ao criar um pacote de modificação que depende de um aplicativo principal (mãe).
Informações de Assinatura [opcional] Um elemento para especificar as informações de assinatura para o processo de certificação do Device Guard. Requer v4 do esquema de modelo.
SigningInformation:: DeviceGuardSigning [opcional] Um elemento para especificar informações de assinatura do Device Guard. Requer v4 do esquema de modelo.
DeviceGuardSigning:: TokenFile O token de acesso do Azure AD necessário para a entrada do Device Guard no formato JSON. Requer esquema de modelo v4.
DeviceGuardSigning:: TimestampUrl [opcional] Fornece um carimbo de data/hora no momento da assinatura com o Device Guard para garantir que seu aplicativo será instalado além do tempo de vida do certificado. Requer v4 do esquema de modelo.
Aplicativos [opcional] 0 ou mais elementos Application para configurar as entradas de Application no pacote MSIX.
Aplicativo::Id A ID do Aplicativo MSIX. Essa ID será usada para a entrada de aplicativo detectada que corresponde ao ExecutableName especificado. Você pode ter vários valores de ID do aplicativo para executáveis no pacote.

Esse valor é o identificador exclusivo do aplicativo dentro do pacote. Às vezes, esse valor é chamado de PRAID (identificador de aplicativo relativo ao pacote). A ID deve ser exclusiva dentro do pacote (a mesma ID não pode ser usada mais de uma vez no mesmo pacote). No entanto, a ID não deve ser exclusiva globalmente. Pode haver outro pacote no sistema que usa a mesma ID.

Essa cadeia de caracteres contém campos alfanuméricos separados por períodos. Cada campo deve começar com um caractere alfabético ASCII. Não é possível usá-los como valores de 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::D isplayName O nome de exibição do aplicativo para o pacote MSIX. Esse Nome de Exibição será usado para a entrada de aplicativo detectada que corresponde ao ExecutableName especificado
Aplicativo::NomeExecutável O nome do executável do aplicativo MSIX que será adicionado ao manifesto do pacote. A entrada de aplicativo correspondente será ignorada se nenhum aplicativo com esse nome for detectado.
Aplicativo::Descrição [opcional] A descrição do aplicativo para seu aplicativo MSIX. Se não for usado, o Application DisplayName será usado. Essa descrição será usada para a entrada de aplicativo detectada que corresponde ao ExecutableName especificado
Capacidades [opcional] 0 ou mais elementos de funcionalidade para adicionar recursos personalizados ao pacote MSIX. A funcionalidade "runFullTrust" é adicionada por padrão durante a conversão.
Capacidade::Nome A capacidade a ser adicionada ao pacote MSIX.

Arquivo de exemplo de modelo de conversão

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