Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az útmutató bemutatja, hogyan használhatja a winapp CLI-t egy Rust-alkalmazással a csomagadentitás hibakereséséhez és az alkalmazás MSIX-ként való csomagolásához.
A teljes munkapéldát az adattár Rust-mintájában tekintsd meg.
A csomagidentitás a Windows app modell alapvető fogalma. Lehetővé teszi, hogy az alkalmazás hozzáférjen bizonyos Windows API-khoz (például értesítések, biztonság, AI API-k stb.), tiszta telepítési/eltávolítási felülettel rendelkezik, és így tovább.
Egy standard végrehajtható fájl (mint amilyet a cargo build-vel hoznak létre) nem rendelkezik csomagidentitással. Ez az útmutató bemutatja, hogyan lehet egy elemet hozzáadni hibakereséshez, majd hogyan csomagolhatja be terjesztés céljából.
Előfeltételek
Rust Toolchain: A Rust telepítése rustup vagy winget használatával (vagy frissítés, ha már telepítve van):
winget install Rustlang.Rustup --source wingetwinapp CLI: Telepítse az eszközt a
winappwingettel (vagy frissítse, ha már telepítve van):winget install microsoft.winappcli --source winget
1. Új Rust-alkalmazás létrehozása
Először hozzon létre egy egyszerű Rust-alkalmazást:
cargo new rust-app
cd rust-app
Futtassa le, hogy megbizonyosodjon arról, minden rendben működik:
cargo run
A kimenetnek a következőnek kell lennie: "Hello, world!"
2. Kód frissítése az identitás ellenőrzéséhez
Frissítjük az alkalmazást, hogy ellenőrizze, a csomagazonossággal fut-e. Ez segít ellenőrizni, hogy az identitás megfelelően működik-e a későbbi lépésekben. A windows láda használatával fogjuk elérni Windows API-kat.
Először adja hozzá a windows függőséget a Cargo.toml parancs futtatásával.
cargo add windows --features ApplicationModel
Ez hozzáadja a Windows API-kötéseket a ApplicationModel funkcióval, amely hozzáférést biztosít az identitás ellenőrzéséhez szükséges Package API-hoz.
Ezután cserélje le a teljes tartalmat src/main.rs a következő kódra. Ez a kód megkísérli lekérni az aktuális csomagidentitást. Ha sikerül, kinyomtatja a csomagcsalád nevét; ellenkező esetben a "Nincs csomagolva" felirat jelenik meg.
Megjegyzés:
A full-minta tartalmaz egy Windows értesítés megjelenítésére szolgáló kódot is, ha identitás van jelen, de ebben az útmutatóban az identitásellenőrzésre összpontosítunk.
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. Futtatás identitás nélkül
Most hozza létre és futtassa az alkalmazást a szokásos módon:
cargo run
A "Nincs csomagolva" kimenetnek kell megjelennie. Ez megerősíti, hogy a standard végrehajtható fájl csomagidentitás nélkül fut.
4. A Project inicializálása winapp parancssori felülettel
A winapp init parancs egyetlen lépésben állítja be a szükséges elemeket: az alkalmazásjegyzéket és az eszközöket. A jegyzék meghatározza az alkalmazás identitását (név, közzétevő, verzió), amelyet Windows api-hozzáférés biztosításához használ.
Futtassa a következő parancsot, és kövesse az utasításokat:
winapp init
Amikor a rendszer kéri:
- Csomag neve: Nyomja le az Enter billentyűt az alapértelmezett (rust-app) elfogadásához
- Publisher név: Az Enter billentyűt lenyomva fogadja el az alapértelmezett értéket, vagy adja meg a nevét
- Verzió: Nyomja le az Enter billentyűt az 1.0.0.0 elfogadásához
- Leírás: Nyomja le az Enter billentyűt az alapértelmezett érték elfogadásához, vagy adjon meg egy leírást
-
SDK-k beállítása: Válassza a "Ne állítsd be az SDK-kat" lehetőséget (A Rust a saját
windowsládát használja, nem a C++ SDK fejléceket)
Ez a parancs a következő lesz:
- Létrehozza
Package.appxmanifest– az alkalmazás identitását meghatározó jegyzék - Mappa létrehozása
Assets– az MSIX-csomagoláshoz és az Áruház beküldéséhez szükséges ikonok
Megjegyzés:
Mivel nem kezelik az SDK-csomagokat, nem winapp.yaml jön létre – Rust a Cargo-n keresztül használja a windows crate-et, így nincs mit winapp restore/update nyomon követnie.
Megnyithatja Package.appxmanifest az olyan tulajdonságok további testreszabásához, mint a megjelenítendő név, a közzétevő és a képességek.
Végrehajtási alias hozzáadása (konzolalkalmazásokhoz)
Mivel cargo new létrehoz egy konzolalkalmazást, végrehajtási aliast kell hozzáadnunk a jegyzékhez. Nélküle winapp run elindítja az alkalmazást az AUMID aktiválással, amely egy új ablakot nyit meg – és az ablak azonnal bezárul, amikor egy konzolalkalmazás befejeződik, és lenyeli a kimenetet.
Az alias lehetővé teszi, hogy a felhasználók az MSIX telepítése után név alapján futtatják az alkalmazást bármely terminálról. A jegyzékfájl egy aliast, például rust-app.exe regisztrál (ami alapértelmezés szerint a projekt exe nevéhez igazodik), amelyet a felhasználók rust-app vagy rust-app.exe néven hívhatnak meg.
Hagyja ki ezt a lépést, ha felhasználói felületi alkalmazást ( a saját ablakát megjelenítő Rust-alkalmazást) hoz létre. Ezek az alkalmazások jól működnek az alapértelmezett AUMID-indítással.
Adja hozzá az aliast:
winapp manifest add-alias
Ez hozzáad egy uap5:ExecutionAlias bejegyzést a Package.appxmanifest fájlhoz.
5. Hibakeresés identitással
Az identitást (például értesítéseket) igénylő funkciók teszteléséhez az alkalmazás teljes csomagolása nélkül használja a következőt winapp run: . Ez a teljes buildkimeneti mappát laza elrendezési csomagként regisztrálja – akárcsak egy valódi MSIX-telepítést –, és elindítja az alkalmazást. A hibakereséshez nincs szükség tanúsítványra vagy aláírásra.
A végrehajtható fájl létrehozása:
cargo buildFuttatás identitással:
winapp run .\target\debug --with-alias
A --with-alias jelző a végrehajtási aliasán keresztül indítja el az alkalmazást, így a konzol kimenete az aktuális terminálban marad. Ehhez szükség van a uap5:ExecutionAlias-re, amit a 4. lépésben adtunk hozzá.
Megjegyzés:
winapp run a csomagot a rendszeren is regisztrálja. Ezért előfordulhat, hogy az MSIX "már telepítve" állapotban jelenik meg, amikor később a 6. lépésben megpróbálja telepíteni. A fejlesztési csomagok megtisztítására használható winapp unregister , ha elkészült.
Most a következőhöz hasonló kimenetnek kell megjelennie:
Package Family Name: rust-app_12345abcde
Ez megerősíti, hogy az alkalmazás érvényes csomagazonosítóval fut!
Jótanács
A speciális hibakeresési munkafolyamatokat (hibakeresők csatolása, IDE-beállítás, indítási hibakeresés) a hibakeresési útmutatóban találja.
6. Csomag MSIX-lel
Miután készen áll az alkalmazás terjesztésére, ugyanazzal a jegyzékfájllal MSIX-ként csomagolhatja be. Az MSIX tiszta telepítést/eltávolítást, automatikus frissítéseket és megbízható telepítési élményt biztosít.
A csomagkönyvtár előkészítése
Először hozza létre az alkalmazást kiadási módban az optimális teljesítmény érdekében:
cargo build --release
Ezután hozzon létre egy könyvtárat, amely csak a terjesztéshez szükséges fájlokat tartalmazza. A target\release mappa olyan összeállítási összetevőket tartalmaz, amelyek nem részei az alkalmazásnak – csak a végrehajtható fájlra van szükségünk:
mkdir dist
copy .\target\release\rust-app.exe .\dist\
Fejlesztési tanúsítvány létrehozása
Az MSIX-csomagokat alá kell írni. Helyi teszteléshez hozzon létre egy önaláírt fejlesztési tanúsítványt:
winapp cert generate --if-exists skip
Fontos
A tanúsítvány kiadójának meg kell egyeznie a Publisher-vel a Package.appxmanifest-ben. A cert generate parancs ezt automatikusan felolvassa a jegyzékből.
Aláírás és csomagolás
Most már egy lépésben csomagolhat és jelentkezhet be:
winapp pack .\dist --cert .\devcert.pfx
Megjegyzés: A
packparancs automatikusan a Package.appxmanifestet használja az aktuális könyvtárból, és a csomagolás előtt átmásolja a célmappába. A létrehozott .msix fájl az aktuális könyvtárban lesz.
A tanúsítvány telepítése
Az MSIX-csomag telepítése előtt meg kell bíznia a fejlesztési tanúsítványban a számítógépen. Futtassa ezt a parancsot rendszergazdaként (ezt tanúsítványonként csak egyszer kell elvégeznie):
winapp cert install .\devcert.pfx
Telepítés és futtatás
Megjegyzés:
Ha az 5. lépésben használta winapp run , előfordulhat, hogy a csomag már regisztrálva van a rendszeren. Először winapp unregister távolítsa el a fejlesztési regisztrációt, majd telepítse a kiadási csomagot.
Telepítse a csomagot a létrehozott .msix fájlra duplán kattintva vagy a PowerShell-lel:
Add-AppxPackage .\rust-app.msix
Mostantól a terminál bármely pontjáról futtathatja az alkalmazást a következő beírással:
rust-app
Látnia kell a "Csomagcsalád neve" kimenetet, amely megerősíti, hogy telepítve van, és identitással fut.
Jótanács
Ha újra kell csomagolnia az alkalmazást (például a kódmódosítások után), növelje a verziószámot a VersionPackage.appxmanifest futtatása előtt. Windows egy telepített csomag frissítéséhez magasabb verziószám szükséges.
Tips
- Miután készen áll a terjesztésre, aláírhatja az MSIX-et egy hitelesítésszolgáltató kódaláíró tanúsítványával, hogy a felhasználóknak ne kelljen önaláírt tanúsítványt telepíteniük
- A Microsoft Store aláírja Önnek az MSIX-et, a beküldés előtt nem kell aláírnia.
- Előfordulhat, hogy több MSIX-csomagot kell létrehoznia, egyet minden támogatott architektúrához (x64, Arm64)
Következő lépések
- Distribute via winget: Küldje el MSIX-ét a Windows Csomagkezelő közösségi adattárba
- Tegye közzé a Microsoft Store-ban: Küldje be a csomagot a
winapp storesegítségével -
Set up CI/CD: A
setup-WinAppCliGitHub Művelettel automatizálhatja a csomagolást a folyamatban - Explore Windows API-k: Csomagidentitással mostantól használhatja az Értesítések, a helyi eszközi AI, és egyéb identitásfüggő API-kat
Windows developer