Compartir a través de


Cómo generar un archivo de plantilla para conversiones de línea de comandos

Con la herramienta de empaquetado MSIX, puedes realizar la conversión de dos maneras: a través de la interfaz de usuario interactiva o a través de nuestra opción de línea de comandos. Al usar la línea de comandos, debes proporcionar un archivo de plantilla para que la conversión funcione con tu configuración y necesidades específicas. Este artículo te ayudará a guiarte por el proceso de generación de un archivo de plantilla que te convenga.

Hay dos maneras de obtener un archivo de plantilla que te convenga:

  • Puedes usar la interfaz de usuario de la herramienta de empaquetado MSIX. En la configuración de la herramienta, puedes especificar que deseas generar un archivo de plantilla de conversión con cada paquete MSIX que crees.
  • Puedes tomar una plantilla de ejemplo y escribir manualmente las configuraciones que necesitas para cada conversión.

Generación de un archivo de plantilla de conversión a partir de la herramienta de empaquetado MSIX

  1. Inicia la herramienta de empaquetado MSIX.
  2. Ve a la configuración en la esquina superior derecha de la aplicación.
  3. Asegúrate de que está seleccionada la opción "Generar un archivo de línea de comandos con cada paquete".
  4. Realiza cualquier otro cambio o modificación en la configuración que necesites (por ejemplo, elementos de exclusión, códigos de salida).
  5. Guarde la configuración
  6. Sigue el flujo de trabajo del paquete de aplicación mediante un instalador.
    • Si no seleccionas un instalador, no podrás generar un archivo de plantilla de conversión.
    • Si usas un exe, deberás pasar una marca silenciosa al instalador para generar el archivo de plantilla de conversión.
  7. Al final de la conversión, tendrás un archivo de plantilla configurado en función del instalador que elegiste y la configuración actual que ahora puedes volver a usar para futuras conversiones.
    • De forma predeterminada, el archivo de plantilla de conversión se guardará en la misma ubicación que el paquete MSIX, pero puedes especificar una ubicación de guardado independiente para el archivo de plantilla en la página Crear paquete.
    • Todavía tendrás que realizar algunas modificaciones en función de qué MSIX deseas generar al final de cada conversión.

Edición manual del archivo de plantilla de conversión

Puedes editar manualmente los parámetros de plantilla para el archivo de plantilla de conversión para generar un archivo de plantilla que funcione automáticamente. Al generar el archivo de plantilla de conversión, presta atención a las características que agregues al archivo de plantilla, ya que algunas pueden requerir referencias de esquema adicionales para poder funcionar.

Referencia de parámetros de la plantilla de conversión

Esta es la lista completa de parámetros que puedes usar en el archivo de plantilla de conversión.

ConversionSettings Descripción
Configuración:: AllowTelemetry [opcional] Habilita el registro de telemetría para esta invocación de la herramienta.
Configuración:: ApplyAllPrepareComputerFixes [opcional] Aplica todas las correcciones recomendadas de preparación del equipo. No se puede establecer cuando se utilizan otros atributos.
Configuración:: GenerateCommandLineFile [opcional] Copia la entrada del archivo de plantilla en el directorio SaveLocation para un uso futuro.
Configuración:: AllowPromptForPassword [opcional] Indica a la herramienta que solicite al usuario que escriba las contraseñas para la máquina virtual, así como para el certificado de firma, si es necesario y no están especificadas.
Configuración:: EnforceMicrosoftStoreVersioningRequirements [opcional] Indica a la herramienta que aplique el esquema de control de versiones del paquete necesario para la implementación de Microsoft Store y Microsoft Store para Empresas.
Configuración:: ServerPortNumber [opcional] Se usa al conectarse a una máquina remota. Requiere la versión 2 del esquema de plantilla.
Configuración:: AddPackageIntegrity [opcional] Agrega integridad de paquete a todos los MSIX generados. Requiere la versión 5 del esquema de plantilla.
ValidInstallerExitCodes [opcional] 0 o más elementos ValidInstallerExitCode. Requiere la versión 2 del esquema de plantilla.
ValidInstallerExitCodes:: ValidInstallerExitCode [opcional] Especifica los códigos de salida del instalador con los que es posible que la herramienta no esté familiarizada o requiera un reinicio. Requiere la versión 2 del esquema de plantilla.
ValidInstallerExitCodes:: ValidInstallerExitCode:: Reboot [opcional] Especifica si un código de salida debe desencadenar un reinicio durante la conversión. Requiere la versión 3 del esquema de plantilla.
ExclusionItems [opcional] 0 o más elementos FileExclusion o RegistryExclusion. Todos los elementos FileExclusion deben aparecer antes que cualquier elemento RegistryExclusion.
ExclusionItems::FileExclusion [opcional] Archivo que se debe excluir del empaquetado.
ExclusionItems::FileExclusion::ExcludePath Ruta de acceso al archivo que se debe excluir del empaquetado.
ExclusionItems::RegistryExclusion [opcional] Clave del Registro que se debe excluir del empaquetado.
ExclusionItems::RegistryExclusion:: ExcludePath Ruta de acceso al Registro que se debe excluir del empaquetado.
PrepareComputer::DisableDefragService [opcional] Deshabilita el Desfragmentador de Windows mientras se convierte la aplicación. Si se establece en false, invalida ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableWindowsSearchService [opcional] Deshabilita Windows Search mientras se convierte la aplicación. Si se establece en false, invalida ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableSmsHostService [opcional] Deshabilita el Host de SMS mientras se convierte la aplicación. Si se establece en false, invalida ApplyAllPrepareComputerFixes.
PrepareComputer:: DisableWindowsUpdateService [opcional] Deshabilita Windows Update mientras se convierte la aplicación. Si se establece en false, invalida ApplyAllPrepareComputerFixes.
SaveLocation [opcional] Elemento para especificar la ubicación de almacenamiento de la herramienta. Si no se especifica, el paquete se guardará en la carpeta Escritorio.
SaveLocation::PackagePath [opcional] Ruta de acceso al archivo o a la carpeta donde se guarda el paquete de MSIX resultante.
SaveLocation::TemplatePath [opcional] Ruta de acceso al archivo o a la carpeta donde se guarda la plantilla de la línea de comandos resultante.
Installer::Path Ruta de acceso al instalador de la aplicación.
Installer::Arguments [opcional] Argumentos que se van a pasar al instalador. La herramienta ejecutará automáticamente los instaladores de MSI en modo silencioso con el argumento "/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1". NOTA: Debes pasar los argumentos para forzar al instalador a ejecutarse en modo silencioso si utilizas instaladores .exe.
Installer::InstallLocation [opcional] Ruta de acceso completa a la carpeta raíz de la aplicación para los archivos instalados si se hubieran instalado (por ejemplo, "C:\Archivos de programa (x86)\Ubicacióndeinstalacióndemiaplicación").
Installer::IsUnattendedInstallWithoutArgument [opcional] Este atributo se debe usar si la aplicación permite la instalación desatendida sin argumentos silenciosos. Este atributo solo se utiliza con los instaladores .exe.
VirtualMachine [opcional] Elemento con el que se especifica que la conversión se ejecutará en una máquina virtual local.
VirtualMachine::Name [opcional] Nombre de la máquina virtual que se va a utilizar para el entorno de conversión.
VirtualMachine::Username Nombre de usuario de la máquina virtual que se va a utilizar para el entorno de conversión.
RemoteMachine [opcional] Elemento con el que se especifica que la conversión se ejecutará en una máquina remota. Requiere la versión 2 del esquema de plantilla.
RemoteMachine:: ComputerName Nombre de la máquina remota que se va a utilizar para el entorno de conversión. Requiere la versión 2 del esquema de plantilla.
RemoteMachine:: Username Nombre de usuario de la máquina remota que se va a utilizar para el entorno de conversión. Requiere la versión 2 del esquema de plantilla.
RemoteMachine:: EnableAutoLogon [opcional] Esto volverá a iniciar sesión automáticamente al realizar una conversión que requiera un reinicio en una máquina remota para que la conversión continúe sin problemas. Requiere la Versión 3 del esquema de plantilla.
PackageInformation::PackageName Nombre de paquete del paquete de MSIX.
PackageInformation::PackageDisplayName Nombre de paquete para mostrar del paquete de MSIX.
PackageInformation::PublisherName Publicador para el paquete de MSIX.
PackageInformation::PublisherDisplayName Nombre para mostrar del publicador para el paquete de MSIX.
PackageInformation::Version Número de versión para el paquete de MSIX.
PackageInformation::PackageDescription [opcional] Descripción del paquete MSIX. Requiere la versión 4 del esquema de plantilla.
PackageInformation:: MainPackageNameForModificationPackage [opcional] Nombre de identidad de paquete del paquete principal. Se usa al crear un paquete de modificación que toma una dependencia en una aplicación principal (primaria).
SigningInformation [opcional] Elemento para especificar información de firma para la firma de Device Guard. Requiere la versión 4 del esquema de plantilla.
SigningInformation:: DeviceGuardSigning [opcional] Elemento para especificar la información de firma de Device Guard. Requiere la versión 4 del esquema de plantilla.
DeviceGuardSigning:: TokenFile El token de acceso de Azure AD necesario para la firma de Device Guard en formato JSON. Requiere la versión 4 de esquema de plantilla.
DeviceGuardSigning:: TimestampUrl [opcional] Proporciona una marca de tiempo en el momento de la firma con Device Guard para asegurarse de que la aplicación se instalará más allá de la duración del certificado. Requiere la versión 4 del esquema de plantilla.
APLICACIONES [opcional] 0 o más elementos Application para configurar las entradas de aplicación en el paquete de MSIX.
Application::Id Identificador de aplicación para la aplicación de MSIX. Este identificador se utilizará para la entrada de aplicación detectada que coincida con el parámetro ExecutableName especificado. Puedes tener varios valores Application ID para los archivos ejecutables en el paquete.

Este valor es el identificador único de la aplicación dentro del paquete. Este valor se conoce a veces como el identificador de aplicación relativa del paquete (PRAID). El identificador debe ser único dentro del paquete (no se puede utilizar el mismo identificador más de una vez en el mismo paquete). Sin embargo, no es necesario que este identificador sea único de manera global. Puede haber otro paquete en el sistema que utilice el mismo identificador.

Esta cadena contiene campos alfanuméricos separados por puntos. Cada campo debe empezar por un carácter alfabético ASCII. No puedes utilizar los siguientes 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" y "LPT9".
Application::DisplayName Nombre para mostrar de la aplicación del paquete de MSIX. Este nombre para mostrar se utilizará para la entrada de aplicación detectada que coincida con el parámetro ExecutableName especificado.
Application::ExecutableName Nombre del archivo ejecutable de la aplicación de MSIX que se agregará al manifiesto de paquete. La entrada de aplicación correspondiente se omitirá si no se detecta ninguna aplicación con este nombre.
Application::Description [opcional] Descripción de la aplicación para la aplicación de MSIX. Si no se utiliza, se usará Application DisplayName. Esta descripción se utilizará para la entrada de aplicación detectada que coincida con el parámetro ExecutableName especificado.
Funcionalidades [opcional] 0 o más elementos Capability para agregar funcionalidades personalizadas al paquete de MSIX. La funcionalidad "runFullTrust" se agrega de manera predeterminada durante la conversión.
Capability::Name Funcionalidad para agregar al paquete de MSIX.

Archivo de muestra de plantilla de conversión

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