이 가이드에서는 Tauri 애플리케이션에서 winapp CLI를 사용하여 패키지 ID로 디버그하고 애플리케이션을 MSIX로 패키지하는 방법을 보여 줍니다.
패키지 ID는 Windows app 모델의 핵심 개념입니다. 이를 통해 애플리케이션은 알림, 보안, AI API 등과 같은 특정 Windows API를 access, 깨끗한 설치/제거 환경 등을 사용할 수 있습니다.
필수 조건
- Windows 11
-
Node.js -
winget install OpenJS.NodeJS --source winget -
winapp CLI -
winget install microsoft.winappcli --source winget
1. 새 Tauri 앱 만들기
npm create tauri-app@latest
프롬프트(Project 이름: tauri-app, 프런트 엔드 언어: JavaScript, Package manager: npm)를 따릅니다.
project 디렉터리로 이동하여 종속성을 설치합니다.
cd tauri-app
npm install
앱을 실행합니다.
npm run tauri dev
2. ID를 확인하도록 코드 업데이트
백엔드 변경 (Rust)
windows 종속성을 추가합니다. 열기 src-tauri/Cargo.toml:
[target.'cfg(windows)'.dependencies]
windows = { version = "0.58", features = ["ApplicationModel"] }
src-tauri/src/lib.rs 명령을 열고 추가합니다.
#[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()
}
}
함수에 명령을 등록합니다.run
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");
}
프런트 엔드 변경 내용(JavaScript)
에서 src/index.html결과를 표시하는 단락을 추가합니다.
<p id="pfn-msg"></p>
에서 src/main.js다음 명령을 호출합니다.
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();
});
앱을 실행하여 "패키지 ID로 실행되지 않음"이 표시되는지 확인합니다.
npm run tauri dev
3. winapp CLI를 사용하여 project 초기화
winapp init
프롬프트가 표시되면
- 패키지 이름: Enter 키를 눌러 기본값 적용(tauri-app)
- Publisher 이름: Enter 키를 눌러 기본값을 적용하거나 이름을 입력합니다.
- 버전: Enter 키를 눌러 1.0.0.0 허용
- 진입점: Enter 키를 눌러 기본값(tauri-app.exe)을 적용합니다.
- SDK 설정: "SDK 설정 안 함"을 선택합니다.
4. ID를 사용하여 디버그
스크립트를 추가합니다 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"
}
다음을 실행합니다.
npm run tauri:dev:withidentity
앱에 패키지 패밀리 이름이 표시됩니다.
5. MSIX를 사용하여 패키지
릴리스용 빌드:
npm run tauri build패키지 디렉터리 준비:
mkdir dist copy .\src-tauri\target\release\tauri-app.exe .\dist\개발 인증서 생성:
winapp cert generate --if-exists skip패키지 및 서명:
winapp pack .\dist --cert .\devcert.pfx인증서 설치 (관리자 권한으로 실행):
winapp cert install .\devcert.pfx생성된 파일을 두 번 클릭하여
.msix합니다. 시작 메뉴에서 시작합니다.
관련 토픽
Windows developer