Compartir a través de


Referencia de la CLI para el desarrollo de aplicaciones de Windows

Importante

La CLI de desarrollo de Windows App se encuentra actualmente en public preview. Las características y comandos pueden cambiar antes de la versión final.

En esta página se documentan todos los comandos disponibles para la CLI de winapp.

Opciones globales

Todos los comandos admiten estas opciones globales:

Opción Descripción
--verbose, -v Activar salida detallada para el registro exhaustivo
--quiet, -q Suprimir mensajes de progreso
--help, -h Mostrar la ayuda del comando

Directorio de caché global

WinApp crea un directorio para almacenar en caché los archivos que se pueden compartir entre varios proyectos. De manera predeterminada, será $UserProfile/.winapp.

Para usar una ubicación diferente, establezca la variable de WINAPP_CLI_CACHE_DIRECTORY entorno:

$env:WINAPP_CLI_CACHE_DIRECTORY = "d:\temp\.winapp"

Comandos de instalación

inicialización

Inicialice un directorio con Windows SDK, Windows App SDK y los recursos necesarios para el desarrollo moderno de Windows.

winapp init [base-directory] [options]

Argumentos:

Argumento Descripción
base-directory Directorio base/raíz para la aplicación o área de trabajo (valor predeterminado: directorio actual)

Opciones:

Opción Descripción
--config-dir <path> Directorio para leer o almacenar la configuración (valor predeterminado: directorio actual)
--setup-sdks Modo de instalación del SDK: stable (valor predeterminado), preview, experimentalo none
--ignore-config, --no-config No use el archivo de configuración para la administración de versiones
--no-gitignore No actualice el archivo .gitignore
--use-defaults, --no-prompt No solicitar y usar la configuración predeterminada de todas las indicaciones
--config-only Controle solo las operaciones del archivo de configuración, omita la instalación del paquete.

Qué hace:

  • Crea un archivo de configuración winapp.yaml
  • Descarga paquetes de Windows SDK y Windows App SDK
  • Genera encabezados y archivos binarios de C++/WinRT
  • Crea AppxManifest.xml
  • Configura las herramientas de compilación y habilita el modo de desarrollador
  • Actualiza .gitignore para excluir los archivos generados.

Detección automática de proyectos .NET:

Cuando se encuentra un archivo .csproj en el directorio de destino, init utiliza un flujo optimizado específico de .NET.

  • Valida y actualiza TargetFramework a un TFM compatible con Windows (por ejemplo, net10.0-windows10.0.26100.0)
  • Agrega Microsoft.WindowsAppSDK y Microsoft.Windows.SDK.BuildTools como entradas de NuGet PackageReference directamente en .csproj
  • Genera appxmanifest.xml, recursos y un certificado de desarrollo
  • No crea ni descarga una proyección de C++ winapp.yaml (utilice dotnet restore para paquetes NuGet)

Ejemplos:

# Initialize current directory
winapp init

# Initialize with experimental packages
winapp init --setup-sdks experimental

# Initialize specific directory without prompts
winapp init ./my-project --use-defaults

# Initialize a .NET project (auto-detected from .csproj)
cd my-dotnet-app
winapp init

Sugerencia

Si ejecutó init con --setup-sdks none y más tarde necesita los SDK, vuelva a ejecutar winapp init --use-defaults --setup-sdks stable. Esto conserva los archivos existentes (manifiesto, etc.).

restaurar

Restaure los paquetes y vuelva a generar archivos en función de la configuración existente winapp.yaml .

winapp restore [options]

Opciones:

Opción Descripción
--config-dir <path> Directorio que contiene winapp.yaml (valor predeterminado: directorio actual)

Qué hace:

  • Lee la configuración existente winapp.yaml.
  • Descarga o actualiza paquetes del SDK en versiones especificadas
  • Regenera encabezados y archivos binarios de C++/WinRT

Nota:

Para los proyectos de .NET inicializados con winapp init, no hay winapp.yaml. Use dotnet restore para restaurar paquetes NuGet en su lugar.

Ejemplos:

# Restore from winapp.yaml in current directory
winapp restore

actualización

Actualice los paquetes a sus versiones más recientes y actualice el archivo de configuración.

winapp update [options]

Opciones:

Opción Descripción
--config-dir <path> Directorio que contiene winapp.yaml (valor predeterminado: directorio actual)
--setup-sdks Modo de instalación del SDK: stable (valor predeterminado), preview, experimentalo none

Qué hace:

  • Lee la configuración existente winapp.yaml.
  • Actualiza todos los paquetes a sus versiones disponibles más recientes
  • Actualiza el winapp.yaml archivo con nuevos números de versión
  • Regenera encabezados y archivos binarios de C++/WinRT

Ejemplos:

# Update packages to latest versions
winapp update

# Update including experimental packages
winapp update --setup-sdks experimental

Comandos de empaquetado

pack

Cree paquetes MSIX a partir de directorios de aplicaciones preparados. Requiere que el archivo appxmanifest.xml esté presente en el directorio de destino, en el directorio actual o pasado con la opción --manifest.

winapp pack <input-folder> [options]

Argumentos:

Argumento Descripción
input-folder Directorio que contiene los archivos de aplicación que se van a empaquetar

Opciones:

Opción Descripción
--output <filename> Nombre de archivo MSIX de salida (valor predeterminado: <name>.msix)
--name <name> Nombre del paquete (valor predeterminado: del manifiesto)
--manifest <path> Ruta de acceso a AppxManifest.xml (valor predeterminado: detección automática)
--cert <path> Ruta de acceso al certificado de firma (habilita la firma automática)
--cert-password <password> Contraseña de certificado (valor predeterminado: "contraseña")
--generate-cert Generación de un nuevo certificado de desarrollo
--install-cert Instalación del certificado en la máquina
--publisher <name> nombre de Publisher para la generación de certificados
--self-contained Agrupar el tiempo de ejecución de Windows App SDK
--skip-pri Omitir la generación de archivos PRI
--executable <path> Ruta de acceso al archivo ejecutable en relación con la carpeta de entrada. Se utiliza para resolver los marcadores de posición $targetnametoken$ en el manifiesto.

Qué hace:

  • Valida y procesa archivos AppxManifest.xml
  • Resuelve los $placeholder$ tokens en el manifiesto (consulte Marcadores de posición del manifiesto)
  • Garantiza las dependencias adecuadas del framework
  • Actualiza manifiestos lado a lado con registros
  • Controla la implementación de Windows App SDK independiente.
  • Firma el paquete si se proporciona el certificado

Ejemplos:

# Package directory with auto-detected manifest
winapp pack ./dist

# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx

# Package with generated and installed certificate and self-contained runtime
winapp pack ./dist --generate-cert --install-cert --self-contained

# Package with explicit executable
winapp pack ./dist --executable MyApp.exe

crear-debug-identidad

Cree una identidad de aplicación para la depuración sin empaquetado MSIX completo mediante ubicación externa/empaquetado disperso.

winapp create-debug-identity [entrypoint] [options]

Argumentos:

Argumento Descripción
entrypoint Ruta de acceso al archivo ejecutable (.exe) o script que necesita identidad

Opciones:

Opción Descripción
--manifest <path> Ruta de acceso a AppxManifest.xml (valor predeterminado: ./appxmanifest.xml)
--no-install No instale el paquete después de la creación
--keep-identity Mantenga la identidad del manifiesto tal cual, sin anexar .debug al nombre del paquete y al ID de la aplicación.

Qué hace:

  • Modifica el manifiesto lado a lado del ejecutable.
  • Registra el paquete disperso para la identidad.
  • Habilita la depuración de APIs que requieren identidad

Ejemplos:

# Add identity to executable using local manifest
winapp create-debug-identity ./bin/MyApp.exe

# Add identity with custom manifest location
winapp create-debug-identity ./dist/app.exe --manifest ./custom-manifest.xml

Comandos de manifiesto

generar manifiesto

Genere AppxManifest.xml a partir de plantillas.

winapp manifest generate [directory] [options]

Argumentos:

Argumento Descripción
directory Directorio en el que se va a generar el manifiesto (valor predeterminado: directorio actual)

Opciones:

Opción Descripción
--package-name <name> Nombre del paquete (valor predeterminado: nombre de carpeta)
--publisher-name <name> Publisher CN (valor predeterminado: CN=<current user>)
--version <version> Versión (valor predeterminado: "1.0.0.0")
--description <text> Descripción (valor predeterminado: "Mi aplicación")
--entrypoint <path> Ejecutable o script de punto de entrada
--template <type> Tipo de plantilla: packaged (valor predeterminado) o sparse
--logo-path <path> Ruta de acceso al archivo de imagen de logotipo
--if-exists <Error\|Overwrite\|Skip> Comportamiento si el archivo ya existe (valor predeterminado: Error)

Plantillas:

Marcadores de posición del manifiesto

Los manifiestos generados usan $placeholder$ tokens (delimitados por signos de dólar) que se resuelven automáticamente en tiempo de empaquetado.

Marcador de posición Determinado a Ejemplo
$targetnametoken$ Nombre ejecutable sin extensión Executable="$targetnametoken$.exe" se convierte en Executable="MyApp.exe".
$targetentrypoint$ Windows.FullTrustApplication Siempre resuelto automáticamente

Cómo se resuelven los marcadores de posición:

  • winapp pack resuelve $targetnametoken$ con la opción de --executable o detectando automáticamente el único .exe en la carpeta de entrada.
  • winapp create-debug-identity resuelve $targetnametoken$ desde el argumento del punto de entrada cuando se proporciona.
  • winapp manifest generate --executable extrae los metadatos del archivo ejecutable, pero mantiene el manifiesto $targetnametoken$.exe para su resolución posterior.

Sugerencia

Mantener $targetnametoken$ en el manifiesto registrado evita la codificación fija de nombres de ejecutables y funciona con compilaciones de Visual Studio y winapp pack.

Ejemplos:

# Generate standard manifest interactively
winapp manifest generate

# Generate with all options specified
winapp manifest generate ./src --package-name MyApp --publisher-name "CN=My Company" --if-exists overwrite

manifiesto update-assets

Genere todos los recursos de imagen MSIX necesarios a partir de una sola imagen de origen.

winapp manifest update-assets <image-path> [options]

Argumentos:

Argumento Descripción
image-path Ruta de acceso al archivo de imagen de origen (PNG, JPG, GIF, etc.)

Opciones:

Opción Descripción
--manifest <path> Ruta de acceso al archivo AppxManifest.xml (valor predeterminado: buscar directorio actual)

Toma una sola imagen de origen y genera automáticamente los 12 recursos de imagen MSIX necesarios en las dimensiones correctas. Los recursos se guardan en el directorio Assets relativo a la ubicación del manifiesto.

Ejemplos:

# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png

# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/appxmanifest.xml

Comandos de certificado y firma

generar certificado

Genere certificados de desarrollo para la firma de paquetes.

winapp cert generate [options]

Opciones:

Opción Descripción
--manifest <appxmanifest.xml> Extracción de información de publisher de appxmanifest.xml
--publisher <name> Nombre del editor para el certificado
--output <path> Ruta de acceso del archivo de certificado de salida
--password <password> Contraseña de certificado (valor predeterminado: "contraseña")
--valid-days <days> Número de días que el certificado es válido (valor predeterminado: 365)
--install Instale el certificado en el almacén del equipo local después de generarlo
--if-exists <Error\|Overwrite\|Skip> Comportamiento si el archivo de certificado ya existe (valor predeterminado: Error)

instalación de certificado

Instale el certificado en el almacén de certificados del equipo.

winapp cert install <cert-path>

Argumentos:

Argumento Descripción
cert-path Ruta de acceso al archivo de certificado que se va a instalar

Ejemplos:

# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx

# Install certificate to machine
winapp cert install ./mycert.pfx

firmar

Firma de paquetes y ejecutables MSIX con certificados.

winapp sign <file-path> [options]

Argumentos:

Argumento Descripción
file-path Ruta de acceso al paquete MSIX o al ejecutable para firmar

Opciones:

Opción Descripción
--cert <path> Ruta de acceso al certificado de firma
--cert-password <password> Contraseña de certificado (valor predeterminado: "contraseña")

Ejemplos:

# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx

# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword

Comandos de utilidad

herramienta

Acceda a las herramientas de Windows SDK directamente. Usa herramientas disponibles en Microsoft.Windows.SDK.BuildTools.

winapp tool <tool-name> [tool-arguments]

Herramientas disponibles:

  • makeappx - Creación y manipulación de paquetes de aplicaciones
  • signtool - Firmar archivos y comprobar firmas
  • mt - Herramienta de manifiesto para ensamblados en paralelo
  • Y otras herramientas de Windows SDK de Microsoft.Windows.SDK.BuildTools

Ejemplos:

# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix

store

Ejecute un comando de la CLI para desarrolladores de Microsoft Store. Este comando descarga la CLI para desarrolladores de Microsoft Store si aún no se ha descargado. Obtenga más información en la CLI para desarrolladores de Microsoft Store.

winapp store [args...]

Argumentos:

Argumento Descripción
args... Argumentos para pasar directamente a la msstore CLI

Ejemplos:

# List all apps in your Microsoft Partner Center account
winapp store app list

# Publish a package to the Microsoft Store
winapp store publish ./myapp.msix --appId <your-app-id>

get-winapp-path

Obtenga rutas de acceso a los componentes de Windows SDK instalados.

winapp get-winapp-path [options]

Devuelve rutas de acceso a la carpeta del área de trabajo .winapp, los directorios de instalación de paquetes y las ubicaciones de encabezados generadas.


comandos Node.js/Electron

Estos comandos solo están disponibles en el paquete NPM.

node crear-complemento

Genera plantillas de complemento nativas de C++ o C# con integración del SDK de Windows y del Windows App SDK.

npx winapp node create-addon [options]

Opciones:

Opción Descripción
--name <name> Nombre del complemento (valor predeterminado: "nativeWindowsAddon")
--template Seleccione el tipo de complemento: cs o cpp (valor predeterminado: cpp)
--verbose Habilitar salida detallada

Qué hace:

  • Crea un directorio addon con archivos de plantilla
  • Genera archivos binding.gyp y addon con ejemplos de Windows SDK
  • Instala las dependencias de npm necesarias.
  • Agrega un script de compilación a package.json

Ejemplos:

# Generate addon with default name
npx winapp node create-addon

# Generate custom named C# addon
npx winapp node create-addon --name myWindowsAddon --template cs

node add-electron-debug-identity

Agregue la identidad de la aplicación al proceso de desarrollo de Electron mediante el empaquetado disperso. Requiere un appxmanifest.xml (cree uno con winapp init o winapp manifest generate).

Importante

Hay un problema conocido con el empaquetado disperso de aplicaciones Electron que hace que la aplicación se bloquee al iniciar o no representar contenido web. El problema se ha corregido en Windows, pero aún no se ha propagado a todos los dispositivos. Puede deshabilitar el espacio aislado en su aplicación Electron utilizando el --no-sandbox indicador como solución alternativa. Este problema no afecta al empaquetado MSIX completo.

Para eliminar la identidad de depuración de Electron, use winapp node clear-electron-debug-identity.

npx winapp node add-electron-debug-identity [options]

Opciones:

Opción Descripción
--manifest <path> Ruta de acceso a la appxmanifest.xml personalizada (valor predeterminado: appxmanifest.xml en el directorio actual)
--no-install No instale ni modifique las dependencias; configure solo la identidad de depuración de Electron
--keep-identity Mantenga la identidad del manifiesto tal cual, sin añadir .debug
--verbose Habilitar salida detallada

Ejemplos:

# Add identity to Electron development process
npx winapp node add-electron-debug-identity

# Use a custom manifest file
npx winapp node add-electron-debug-identity --manifest ./custom/appxmanifest.xml

node limpiar-electron-debug-identity

Elimine la identidad del paquete del proceso de depuración de Electron restaurando el electron.exe original de la copia de seguridad.

npx winapp node clear-electron-debug-identity [options]

Opciones:

Opción Descripción
--verbose Habilitar salida detallada

Ejemplos:

# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity