Generar componentes del paquete MSIX

En este artículo se muestra cómo generar componentes del paquete MSIX para empaquetar una aplicación mediante herramientas de línea de comandos (sin usar Visual Studio o MSIX Packaging Tool).

Para empaquetar manualmente una aplicación, debes crear un archivo de manifiesto del paquete, agregar los componentes del paquete y, posteriormente, ejecutar la herramienta de línea de comandos MakeAppx.exe para generar un paquete MSIX.

Primero, prepárate para empaquetar

Si todavía no lo has hecho, consulta esta sección sobre lo que necesitas saber antes de empaquetar una aplicación.

Crear un manifiesto de paquete

Crea un archivo y denomínalo appxmanifest.xml; a continuación, agrégale este código XML.

Esta es una plantilla básica que contiene los elementos y atributos que necesita el paquete. Agregaremos los valores de estos en la siguiente sección.

<?xml version="1.0" encoding="utf-8"?>
<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="" Version="" Publisher="" ProcessorArchitecture="" />
  <Properties>
    <DisplayName></DisplayName>
    <PublisherDisplayName></PublisherDisplayName>
    <Description></Description>
    <Logo></Logo>
  </Properties>
  <Resources>
    <Resource Language="" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="" MaxVersionTested="" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust"/>
  </Capabilities>
  <Applications>
    <Application Id="" Executable=""
      uap10:RuntimeBehavior="packagedClassicApp"
      uap10:TrustLevel="mediumIL">
      <uap:VisualElements DisplayName="" Description=""	Square150x150Logo=""
        Square44x44Logo="" BackgroundColor="" />
    </Application>
  </Applications>
</Package>

Nota:

Si el paquete se instala en sistemas anteriores a Windows 10, versión 2004 (10.0; compilación 19041), use el atributo EntryPoint en lugar de uap10:RuntimeBehavior y uap10:TrustLevel. Para obtener más información y ejemplos, vea uap10 se introdujo en Windows 10, versión 2004 (10.0; compilación 19041).

Rellenar los elementos de nivel de paquete del archivo

Rellena esta plantilla con la información que describe el paquete.

Información de identidad

Este es un ejemplo del elemento Identity con texto del marcador de posición de los atributos. Puede establecer el atributo ProcessorArchitecture en x64, x86, arm (por ejemplo, ARM de 32 bits), arm64 o neutral.

<Identity Name="MyCompany.MySuite.MyApp"
          Version="1.0.0.0"
          Publisher="CN=MyCompany, O=MyCompany, L=MyCity, S=MyState, C=MyCountry"
			    ProcessorArchitecture="x64">

Nota:

Si has reservado el nombre de la aplicación en Microsoft Store, puedes obtener los elementos Name y Publisher mediante el Centro de partners. Si vas a transferir localmente la aplicación a otros sistemas, puedes proporcionar tus propios nombres a estos elementos, siempre y cuando el nombre del editor que elijas coincida con el nombre que aparece en el certificado que uses para firmar la aplicación.

Propiedades

El elemento Properties tiene tres elementos secundarios obligatorios. Este es un ejemplo del nodo Properties con texto de marcador de posición de los elementos. El elemento DisplayName es el nombre de la aplicación que reservas en Store, para las aplicaciones que se cargan a Store.

<Properties>
  <DisplayName>MyApp</DisplayName>
  <PublisherDisplayName>MyCompany</PublisherDisplayName>
  <Logo>images\icon.png</Logo>
</Properties>

Recursos

Este es un ejemplo del nodo Resources.

<Resources>
  <Resource Language="en-us" />
</Resources>

Dependencias

En el caso de las aplicaciones de escritorio para las que creas un paquete, establece siempre el atributo Name en Windows.Desktop.

<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>

Funcionalidades

Para un paquete que contenga una o varias aplicaciones de plena confianza, deberá declarar la funcionalidad restringida runFullTrust, como se muestra más abajo. Para obtener detalles completos y una definición de aplicación de plena confianza, busque Nivel de permisos de plena confianza en declaraciones de capacidad de aplicación).

<Capabilities>
  <rescap:Capability Name="runFullTrust"/>
</Capabilities>

Rellenar los elementos de nivel de aplicación

Rellena esta plantilla con la información que describe la aplicación.

Elemento Application

En el caso de las aplicaciones de escritorio para las que crea un paquete, configure el elemento Aplicación de la siguiente manera.

<Applications>
  <Application Id="MyApp" Executable="MyApp.exe"
		 uap10:RuntimeBehavior="packagedClassicApp"
     uap10:TrustLevel="mediumIL">
   </Application>
</Applications>

Nota:

Si el paquete se instala en sistemas anteriores a Windows 10, versión 2004 (10.0; compilación 19041), use el atributo EntryPoint en lugar de uap10:RuntimeBehavior y uap10:TrustLevel. Para obtener más información y ejemplos, vea uap10 se introdujo en Windows 10, versión 2004 (10.0; Compilación 19041).

Elementos visuales

Este es un ejemplo del nodo VisualElements.

<uap:VisualElements
	BackgroundColor="#464646"
	DisplayName="My App"
	Square150x150Logo="images\icon.png"
	Square44x44Logo="images\small_icon.png"
	Description="A useful description" />

(Opcional) Agregar recursos sin placa basados en el destino

Los activos basados en destino son para iconos o ventanas que aparecen en la barra de tareas de Windows, la vista de tareas, ALT+TAB, el asistente para el espacio restante y la esquina inferior derecha de los mosaicos de Inicio. Puedes obtener más información sobre ellos aquí.

  1. Obtén las imágenes de 44 x 44 correctas y cópialas en la carpeta que contiene las imágenes (es decir, los recursos).

  2. Para cada imagen 44x44, cree una copia en la misma carpeta y anexe .targetsize-44_altform-unplated al nombre de archivo. Debe tener dos copias de cada icono, cada una con un nombre específico. Por ejemplo, después de completar el proceso, es posible que la carpeta de recursos contenga MYAPP_44x44.png y MYAPP_44x44.targetsize-44_altform-unplated.png.

    Nota:

    En este ejemplo, el icono denominado MYAPP_44x44.png es el icono al que se hará referencia en el atributo del logotipo Square44x44Logo del paquete MSIX.

  3. En el archivo de manifiesto, establezca el elemento BackgroundColor en cada icono que vaya a ser transparente.

  4. Continúa con la siguiente subsección para generar un nuevo archivo de índice de recursos del paquete.

Generar un archivo de índice de recursos del paquete (PRI) mediante MakePri

Si creas recursos basados en el destino, tal y como se describe en la sección anterior, o modificas cualquiera de los recursos visuales de la aplicación después de crear el paquete, tendrás que generar un nuevo archivo PRI.

En función de la ruta de instalación del SDK, aquí es donde está MakePri.exe en su equipo Windows 10:

  • x86: C:\Archivos de programa (x86)\Windows Kits\10\bin<número_compilación>\x86\makepri.exe
  • x64: C:\Archivos de programa (x86)\Windows Kits\10\bin\<número_compilación>\x64\makepri.exe

No hay ninguna versión de ARM de esta herramienta.

  1. Abre una ventana del símbolo del sistema o PowerShell.

  2. Cambia el directorio a la carpeta raíz del paquete y crea un archivo priconfig.xml mediante el comando <path>\makepri.exe createconfig /cf priconfig.xml /dq en-US.

  3. Crea los archivos resources.pri mediante el comando <path>\makepri.exe new /pr <PHYSICAL_PATH_TO_FOLDER> /cf <PHYSICAL_PATH_TO_FOLDER>\priconfig.xml.

    Por ejemplo, el comando de la aplicación podría tener el siguiente aspecto: <path>\makepri.exe new /pr c:\MYAPP /cf c:\MYAPP\priconfig.xml.

  4. Empaqueta tu aplicación mediante las instrucciones del siguiente paso.

Prueba de la aplicación antes del empaquetado

Puede implementar una aplicación no empaquetada y probarla antes de empaquetarla o firmarla. Para ello, ejecuta el siguiente cmdlet desde una ventana de PowerShell. Asegúrate de pasar el archivo de manifiesto de la aplicación que se encuentra en la raíz del directorio del paquete con todos los demás componentes del paquete:

Add-AppxPackage –Register AppxManifest.xml

Una vez hecho esto. La aplicación se implementará en el sistema y podrás probarla para asegurarte de que todo funciona antes del empaquetado. Para actualizar los archivos .exe o .dll de la aplicación, reemplaza los archivos existentes en el paquete con los nuevos, aumenta el número de versión en AppxManifest.xml y, a continuación, vuelve a ejecutar el comando anterior.

Empaquetar los componentes en un MSIX

El siguiente paso consiste en usar MakeAppx.exe para generar un paquete MSIX para la aplicación. Makeappx se incluye en Windows SDK y, si tiene instalado Visual Studio, puede obtener acceso a él fácilmente a través del símbolo del sistema para desarrolladores de Visual Studio.

Consulta Crear un paquete MSIX con la herramienta MakeAppx.exe

Nota:

Una aplicación empaquetada se ejecuta siempre como un usuario interactivo, por lo que cualquier unidad en la que instales la aplicación empaquetada debe tener un formato NTFS.