Compartir por


Empaqueta tu aplicación mediante MSIX de proyecto único

MSIX de un solo proyecto es una característica que le permite crear una aplicación de escritorio WinUI 3 empaquetada sin necesidad de un proyecto de empaquetado independiente. Una aplicación WinUI es una que usa el marco WinUI para su interfaz de usuario (UI); y usa el Windows App SDK. Para empaquetar una aplicación de escritorio que no es una aplicación WinUI, consulte Configurar la aplicación de escritorio para el empaquetado MSIX en Visual Studio.

La característica MSIX de proyecto único está disponible como una extensión de Visual Studio que puede usar para estos escenarios:

  • Cree una aplicación de escritorio nueva WinUI con la plantilla de proyecto de Visual Studio Blank App, Packaged (WinUI in Desktop) que viene con Windows App SDK. El proyecto está configurado para compilar tu aplicación en un paquete MSIX sin necesidad de un proyecto de empaquetado independiente.
  • Modifique una aplicación de escritorio WinUI existente que utiliza un proyecto de empaquetado independiente. La modificación implica quitar el proyecto de empaquetado independiente, como se muestra en la ilustración siguiente.

Comparando proyecto de empaquetado con proyecto único

Información general

En esta sección se presentan algunos detalles importantes sobre la característica MSIX de un solo proyecto.

Ventajas

Antes de la introducción de la característica MSIX de un proyecto único, si quería crear una aplicación de escritorio de WinUI empaquetada, necesitaba dos proyectos en la solución: el proyecto de la aplicación, además de un Windows Application Packaging Project (consulte Configure su aplicación de escritorio para el empaquetado MSIX en Visual Studio). La característica MSIX de proyecto único permite desarrollar y compilar tu aplicación usando solo un proyecto para tu aplicación. Esto proporciona una estructura de proyecto más limpia y una experiencia de desarrollo más sencilla. Por ejemplo, ya no es necesario seleccionar el proyecto de empaquetado independiente como proyecto de inicio.

Tipos de proyectos compatibles

La característica de MSIX de un solo proyecto admite plantillas WinUI en Visual Studio (C# y C++) para el Windows App SDK.

Limitaciones

MSIX de un solo proyecto admite un solo programa ejecutable en el paquete MSIX generado. Si necesita combinar varios ejecutables en un único paquete MSIX, deberá seguir usando un proyecto de empaquetado de aplicaciones de Windows en su solución.

Instalar las herramientas de empaquetado MSIX para un solo proyecto

Las herramientas de empaquetado MSIX de un solo proyecto incluyen plantillas de proyectos de Visual Studio que puede usar para crear nuevas aplicaciones empaquetadas de escritorio de WinUI. Estas herramientas se incluyen con la extensión Windows App SDK para Visual Studio. Para obtener instrucciones de instalación para el Windows App SDK, consulte Instalar herramientas para la Windows App SDK.

Windows App SDK 0.8 y la versión C# de 1.0 Preview 3: Las herramientas de empaquetado MSIX de un solo proyecto no son incluidas con la extensión Windows App SDK para Visual Studio con la versión 0.8 del Windows App SDK, ni para proyectos de C# con la versión preliminar 3 o anteriores del Windows App SDK 1.0. Por lo tanto, si usa esas versiones, podría necesitar instalar explícitamente las herramientas de empaquetado MSIX de un solo proyecto. Consulte la información que figura más abajo:

Para confirmar que tiene instalada la extensión, haga clic en Extensions>Administrar extensiones>Installed >All y compruebe que Single-project MSIX Packaging Tools aparece.

Crear un nuevo project

Si está utilizando Windows App SDK 1.0 Preview 2 o una versión posterior, puede crear una nueva aplicación basada en WinUI que incluya compatibilidad con MSIX de un solo proyecto simplemente utilizando la plantilla Blank App, empaquetada (WinUI en escritorio). Para obtener más información, consulte Create your first WinUI project.

Modificar un project existente

Siga los pasos de esta sección para modificar una aplicación existente basada en WinUI que use un proyecto de empaquetado independiente. Los pasos incluyen mover el manifiesto del paquete (y otra compatibilidad necesaria para compilar un paquete MSIX) al proyecto de la aplicación y, a continuación, quitar el proyecto de empaquetado independiente.

Paso 1: Crear o abrir un proyecto de empaquetado existente

Si ya tiene una solución para una aplicación de escritorio WinUI (consulte Plantillas WinUI en Visual Studio) que incluye un Proyecto de empaquetado de aplicaciones de Windows (consulte Configurar la aplicación de escritorio para el empaquetado MSIX en Visual Studio), entonces abra esa solución en Visual Studio ahora.

Si no es así, cree una nueva aplicación de escritorio WinUI en Visual Studio con la plantilla Blank App, empaquetada con Windows Application Packaging Project (WinUI en Desktop). La solución tendrá un aspecto similar a la captura de pantalla siguiente.

solución mediante el proyecto de empaquetado

Paso 2: Editar la configuración del proyecto de la aplicación

A continuación, edite algunas opciones de configuración para usar la característica MSIX de un solo proyecto. Hay diferentes instrucciones en función del tipo de project y Visual Studio versión.

  1. En Solution Explorer, haga doble clic en el nodo project de la aplicación para abrir el archivo .csproj en el editor XML. Agregue el siguiente XML dentro del elemento principal <PropertyGroup>.

    <EnableMsixTooling>true</EnableMsixTooling>
    <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
    

    Cuando haya terminado, el elemento <PropertyGroup> debe ser similar al siguiente.

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
        ...
        <UseWinUI>true</UseWinUI>
        <EnableMsixTooling>true</EnableMsixTooling>
        <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
      </PropertyGroup>
    
  2. Guarde los cambios y cierre el archivo .csproj.

  3. Realice uno de los procedimientos siguientes, en función de la versión de Visual Studio.

    Para Visual Studio 2022 o posterior:

    1. En Solution Explorer, haga clic con el botón derecho en la carpeta Propiedades en el nodo de proyecto de la aplicación y seleccione Agregar>Nuevo elemento....

    2. Seleccione Archivo de texto, asigne al nuevo archivo el nombre launchConfiguración.json y haga clic en Agregar. Asegúrese de que el nuevo archivo está en la carpeta Properties de la aplicación project.

    3. Copie la siguiente configuración en el nuevo archivo. Puede cambiar los valores según sea necesario para su escenario. El valor MyApp puede ser cualquier cadena; no es necesario que coincida con el nombre de la aplicación.

      {
          "profiles": {
              "MyApp": {
                  "commandName": "MsixPackage",
                  "commandLineArgs": "", /* Command line arguments to pass to the app. */
                  "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */
                  "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */
                  "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */
                  "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */
                  "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */
                  "remoteDebugMachine": "", /* The name of the remote machine. */
                  "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */
              }
          }
      }
      
    4. Guarde y cierre el archivo launchSettings.json.

Paso 3: Mover archivos al proyecto de la aplicación

A continuación, mueva varios archivos importantes al proyecto de la aplicación. Hay instrucciones diferentes en función del tipo de project.

  1. En File Explorer, mueva el archivo Package.appxmanifest y la carpeta Images desde el proyecto de empaquetado al proyecto de aplicación. Coloque esta carpeta y archivo en el nivel más alto de la jerarquía de carpetas del proyecto de la aplicación.
  2. En Visual Studio, en Solution Explorer, seleccione varias imágenes dentro de la carpeta Images. En la ventana Propiedades, establezca Acción de compilación en Contenido.
  3. Retire el proyecto de empaquetado de su solución.

Ilustración de mover archivos a la app principal

Paso 4: Habilitar la implementación en Configuration Manager

  1. Seleccione Build>Configuration Manager.
  2. En Configuration Manager, haga clic en la casilla Deploy para cada combinación de configuración y plataforma (por ejemplo, Debug y x86, Debug y arm64, Release y x64, etc.

    Nota

    Asegúrese de usar los menús desplegables Active solution configuration (Configuración de solución activa) y Active solution platform (Plataforma de solución activa) en la parte superior en lugar de los menús desplegables Configuración y Plataforma en la misma fila que la casilla Implementar.

Habilitar Implementación en Configuration Manager

Paso 5: Implementación de la aplicación

Construya y despliegue su proyecto de aplicación. Visual Studio compilará la aplicación en un paquete MSIX, instalará el paquete y, a continuación, ejecutará la aplicación.

Paso 6: Empaquetar la aplicación para publicar

Utiliza el comando Package & Publish en Visual Studio para empaquetar tu aplicación y publicarla en la Microsoft Store.

Automatiza la compilación y el empaquetado de tu aplicación MSIX de un solo proyecto.

Puede usar msbuild para compilar y empaquetar la aplicación MSIX de un solo proyecto, lo que le permite automatizar el flujo de trabajo. La técnica para una solución de un solo proyecto y la línea de comandos es solo ligeramente diferente de lo que ya podría estar haciendo si tiene una solución de dos proyectos, una que tiene un Windows Application Packaging Project (consulte Set up your desktop application for MSIX packaging in Visual Studio).

La opción de comando de compilación importante para una solución de proyecto único es /p:GenerateAppxPackageOnBuild=true. Sin esa opción, el proyecto se compilará, pero no obtendrá un paquete MSIX. Incluya esa opción que hará que se genere el paquete MSIX.

Hay un ejemplo completo en forma de una Acción de GitHub que compila una solución de proyecto único de WinUI.

Nota

MSIX de proyecto único no admite actualmente la producción de paquetes MSIX agrupados (consulte Bundling MSIX packages). Genera solo un único MSIX. Pero puede agrupar archivos .msix en un paquete MSIX mediante la GitHub Action MSIX Bundler.

Cómo se ejecutan las aplicaciones de escritorio empaquetadas en Windows

Para profundizar más en lo que sucede con los archivos y las entradas del Registro al crear un paquete de Windows app para la aplicación de escritorio, consulte Introducción a cómo se ejecutan las aplicaciones de escritorio empaquetadas en Windows.

Envío de comentarios

Para enviarnos sus comentarios, informar problemas o formular preguntas sobre la característica MSIX de un solo proyecto, publique una discusión o un problema en el repositorio Windows App SDK GitHub.