本指南演示如何将 winapp CLI 与 Rust 应用程序配合使用,以包标识进行调试,并将应用程序打包为 MSIX。
包标识是Windows app模型中的核心概念。 它允许应用程序access特定的 Windows API(例如通知、安全、AI API 等),具有全新安装/卸载体验等。
先决条件
Rust 工具链:使用 rustup 或 winget 安装 Rust:
winget install Rustlang.Rustup --source wingetwinapp CLI:通过 winget 安装
winapp该工具: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 接受默认值或输入名称
- 版本:按 Enter 接受 1.0.0.0
- 入口点:按 Enter 接受默认值(rust-app.exe)
- 设置 SDK:选择“不设置 SDK”
这会为应用标识创建 appxmanifest.xml 和 Assets 文件夹。
5. 使用身份进行调试
生成可执行文件:
cargo build应用调试标识:
winapp create-debug-identity .\target\debug\rust-app.exe运行可执行文件 (不要使用
cargo run,因为使用它可能会导致重新生成):.\target\debug\rust-app.exe
你应该会看到:
Package Family Name: rust-app_12345abcde
6. 使用 MSIX 打包
准备发布
cargo build --release准备包目录:
mkdir dist copy .\target\release\rust-app.exe .\dist\生成开发证书:
winapp cert generate --if-exists skip打包和签名:
winapp pack .\dist --cert .\devcert.pfx安装证书 (以管理员身份运行):
winapp cert install .\devcert.pfx安装和运行:
Add-AppxPackage .\rust-app.msix rust-app
小窍门
- 使用证书颁发机构的代码签名证书对 MSIX 进行签名,以便进行生产分发。
- 微软商店为你签署MSIX,无需在提交之前签署。
- 对于支持的每个体系结构,可能需要单独的 MSIX 包(x64,Arm64)。
相关主题
- winapp CLI 参考
- winapp CLI 概述
- 在 Windows 上开始使用 Rust