本指南示範如何在 Rust 應用程式中使用 winapp CLI 來除錯,並以套件身份碼數除錯,並將應用程式打包為 MSIX。
套件身份是 Windows app 模型中的核心概念。 它讓你的應用程式能access特定的Windows介面(例如通知、安全、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)
- Publisher name:按 Enter 接受預設或輸入你的名字
- 版本:按下 "Enter" 以接受 1.0.0.0
- 入口點:按 Enter 接受預設(rust-app.exe)
- 設定 SDK:選擇「不要設定 SDK」
這樣會為您的應用程式身份建立名為appxmanifest.xml和Assets的資料夾。
使用身份進行除錯
建立執行檔:
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,以便生產分發。
- Microsoft Store 會幫你簽署 MSIX,提交前不需要先簽。
- 你可能需要為每個支援的架構(x64、Arm64)分別準備 MSIX 套件。