Compartir a través de


Uso de la CLI de winapp con Rust

En esta guía se muestra cómo utilizar la CLI de winapp con una aplicación de Rust para depurarla utilizando la identidad del paquete y empaquetar su aplicación como MSIX.

La identidad del paquete es un concepto básico en el modelo de Windows app. Permite a tu aplicación acceder a APIs específicas de Windows (como notificaciones, seguridad, APIs de IA, etc.), tener una experiencia de instalación y desinstalación limpia, etc.

Prerrequisitos

  1. Cadena de herramientas de Rust: instale Rust mediante rustup o winget:

    winget install Rustlang.Rustup --source winget
    
  2. CLI de winapp: instale la winapp herramienta mediante winget:

    winget install microsoft.winappcli --source winget
    

1. Creación de una nueva aplicación de Rust

cargo new rust-app
cd rust-app

Ejecútelo para asegurarse de que todo funciona:

cargo run

2. Actualización del código para comprobar la identidad

Agregue la dependencia windows a su Cargo.toml:

cargo add windows --features ApplicationModel

Reemplace el contenido de src/main.rs:

use windows::ApplicationModel::Package;

fn main() {
    match Package::Current() {
        Ok(package) => {
            match package.Id() {
                Ok(id) => match id.FamilyName() {
                    Ok(name) => println!("Package Family Name: {}", name),
                    Err(e) => println!("Error getting family name: {}", e),
                },
                Err(e) => println!("Error getting package ID: {}", e),
            }
        }
        Err(_) => println!("Not packaged"),
    }
}

3. Ejecutar sin identidad

cargo run

Debería ver "No empaquetado".

4. Inicie el proyecto con la CLI de winapp

winapp init

Cuando se le solicite,

  • Nombre del paquete: presione Entrar para aceptar el valor predeterminado (rust-app)
  • Nombre del editor: Presione Intro para aceptar el valor predeterminado o escriba su nombre.
  • Versión: presione Entrar para aceptar 1.0.0.0.
  • Punto de entrada: presione Entrar para aceptar el valor predeterminado (rust-app.exe)
  • Configurar SDKs: seleccione "No configurar SDKs"

Esto crea las carpetas appxmanifest.xml y Assets para la identidad de la aplicación.

5. Depurar con identidad

  1. Compile el archivo ejecutable:

    cargo build
    
  2. Aplicar la identidad de depuración:

    winapp create-debug-identity .\target\debug\rust-app.exe
    
  3. Ejecute el archivo ejecutable (no utilice cargo run ya que podría reconstruir):

    .\target\debug\rust-app.exe
    

Debería ver lo siguiente:

Package Family Name: rust-app_12345abcde

6. Empaquetar con MSIX

  1. Compilación para lanzamiento:

    cargo build --release
    
  2. Prepare el directorio del paquete:

    mkdir dist
    copy .\target\release\rust-app.exe .\dist\
    
  3. Genere un certificado de desarrollo:

    winapp cert generate --if-exists skip
    
  4. Empaquetar y firmar:

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Instale el certificado (ejecute como administrador):

    winapp cert install .\devcert.pfx
    
  6. Instale y ejecute:

    Add-AppxPackage .\rust-app.msix
    rust-app
    

Sugerencia

  • Firme su MSIX con un certificado de firma de código de una entidad de certificación para la distribución de producción.
  • La Microsoft Store firma el MSIX por ti, no es necesario firmar antes de la submisión.
  • Es posible que necesite paquetes MSIX independientes para cada arquitectura que admita (x64, Arm64).