Compartir a través de


Uso de la CLI de winapp con Tauri

Esta guía muestra cómo usar la CLI de winapp con una aplicación Tauri para depurar usando la identidad del paquete y empaquetar la aplicación como un 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. Windows 11
  2. Node.js - winget install OpenJS.NodeJS --source winget
  3. CLI de winapp - winget install microsoft.winappcli --source winget

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

npm create tauri-app@latest

Siga las indicaciones (nombre de Project: tauri-app, idioma de front-end: JavaScript, Package manager: npm).

Vaya al directorio project e instale las dependencias:

cd tauri-app
npm install

Ejecute la aplicación:

npm run tauri dev

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

Cambios en el back-end (Rust)

Agregue la windows dependencia. Abra src-tauri/Cargo.toml:

[target.'cfg(windows)'.dependencies]
windows = { version = "0.58", features = ["ApplicationModel"] }

Abra src-tauri/src/lib.rs y agregue el comando :

#[tauri::command]
fn get_package_family_name() -> String {
    #[cfg(target_os = "windows")]
    {
        use windows::ApplicationModel::Package;
        match Package::Current() {
            Ok(package) => {
                match package.Id() {
                    Ok(id) => match id.FamilyName() {
                        Ok(name) => name.to_string(),
                        Err(_) => "Error retrieving Family Name".to_string(),
                    },
                    Err(_) => "Error retrieving Package ID".to_string(),
                }
            }
            Err(_) => "No package identity".to_string(),
        }
    }
    #[cfg(not(target_os = "windows"))]
    {
        "Not running on Windows".to_string()
    }
}

Registre el comando en la run función :

pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![greet, get_package_family_name])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

Cambios de front-end (JavaScript)

En src/index.html, agregue un párrafo para mostrar el resultado:

<p id="pfn-msg"></p>

En src/main.js, invoque el comando :

const { invoke } = window.__TAURI__.core;

async function checkPackageIdentity() {
  const pfn = await invoke("get_package_family_name");
  const pfnMsgEl = document.querySelector("#pfn-msg");

  if (pfn !== "No package identity" && !pfn.startsWith("Error")) {
    pfnMsgEl.textContent = `Package family name: ${pfn}`;
  } else {
    pfnMsgEl.textContent = `Not running with package identity`;
  }
}

window.addEventListener("DOMContentLoaded", () => {
  checkPackageIdentity();
});

Ejecute la aplicación para confirmar que muestra "No se está ejecutando con la identidad del paquete":

npm run tauri dev

3. Inicializar el proyecto con la CLI de winapp

winapp init

Cuando se le solicite,

  • Nombre del paquete: presione Entrar para aceptar el valor predeterminado (tauri-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 (tauri-app.exe)
  • Configurar SDKs: seleccione "No configurar SDKs"

4. Depurar con identidad

Agregue un script a package.json:

"scripts": {
    "tauri:dev:withidentity": "cargo build --manifest-path src-tauri/Cargo.toml && winapp create-debug-identity src-tauri/target/debug/tauri-app.exe && .\\src-tauri\\target\\debug\\tauri-app.exe"
}

Ejecútelo:

npm run tauri:dev:withidentity

Debería ver que la aplicación muestra un nombre de familia del paquete.

5. Paquete con MSIX

  1. Compilación para lanzamiento:

    npm run tauri build
    
  2. Prepare el directorio del paquete:

    mkdir dist
    copy .\src-tauri\target\release\tauri-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 haciendo doble clic en el archivo generado .msix . Inicie desde el menú Inicio.