Поделиться через


Использование интерфейса командной строки winapp с Rust

В этом руководстве показано, как использовать winapp CLI с приложением Rust для отладки с помощью удостоверения пакета и упаковки приложения в виде MSIX.

Идентификатор пакета — это основная концепция модели приложений Windows. Это позволяет вашему приложению получить доступ к определенным Windows API (например, уведомления, безопасность, API ИИ и т. д.), обеспечивать чистые процессы установки и удаления, и многое другое.

Необходимые условия

  1. Rust Toolchain: Установите Rust с помощью rustup или winget:

    winget install Rustlang.Rustup --source winget
    
  2. winapp CLI: установите winapp средство с помощью winget:

    winget install microsoft.winappcli --source winget
    

1. Создание нового приложения Rust

cargo new rust-app
cd rust-app

Запустите его, чтобы убедиться, что все работает:

cargo run

2. Обновление кода для проверки удостоверения

Добавьте зависимость windows в вашу Cargo.toml.

cargo add windows --features ApplicationModel

Замените содержимое 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. Запуск без идентификации

cargo run

Должно появиться сообщение "Не упаковано".

4. Инициализируйте проект с помощью winapp CLI

winapp init

Когда появится запрос:

  • Имя пакета: нажмите Enter, чтобы принять значение по умолчанию (rust-app)
  • Имя издателя: нажмите клавишу Enter, чтобы принять значение по умолчанию или введите своё имя.
  • Версия: нажмите клавишу ВВОД, чтобы принять 1.0.0.0
  • Точка входа: нажмите клавишу ВВОД, чтобы принять значение по умолчанию (rust-app.exe)
  • Настройка SDK: Выберите "Не настраивать SDK"

При этом создаются папки appxmanifest.xml и Assets для удостоверения приложения.

5. Отладка с идентификацией

  1. Создайте исполняемый файл:

    cargo build
    
  2. Применить идентификатор отладки:

    winapp create-debug-identity .\target\debug\rust-app.exe
    
  3. Запустите исполняемый файл (не используйте cargo run, так как это может привести к перестройке):

    .\target\debug\rust-app.exe
    

Вы должны увидеть:

Package Family Name: rust-app_12345abcde

6. Пакет с MSIX

  1. Сборка для релиза:

    cargo build --release
    
  2. Подготовка каталога пакета:

    mkdir dist
    copy .\target\release\rust-app.exe .\dist\
    
  3. Создайте сертификат разработки:

    winapp cert generate --if-exists skip
    
  4. Пакет и знак:

    winapp pack .\dist --cert .\devcert.pfx
    
  5. Установите сертификат (запуск от имени администратора):

    winapp cert install .\devcert.pfx
    
  6. Установка и запуск:

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

Подсказка

  • Подпишите свой MSIX сертификатом подписи кода из центра сертификации для промышленного распространения.
  • Microsoft Store подписывает MSIX для вас, не нужно подписывать перед отправкой.
  • Вам могут потребоваться отдельные пакеты MSIX для каждой поддерживаемой архитектуры (x64, Arm64).