Rust와 함께 winapp CLI 사용

이 가이드에서는 Rust 애플리케이션에서 winapp CLI를 사용하여 패키지 ID로 디버그하고 애플리케이션을 MSIX로 패키지하는 방법을 보여 줍니다.

패키지 ID는 Windows app 모델의 핵심 개념입니다. 이를 통해 애플리케이션은 알림, 보안, AI API 등과 같은 특정 Windows API를 access, 깨끗한 설치/제거 환경 등을 사용할 수 있습니다.

필수 조건

  1. Rust 도구 체인: rustup 또는 winget을 사용하여 Rust를 설치합니다.

    winget install Rustlang.Rustup --source winget
    
  2. winapp CLI: winget을 winapp 통해 도구를 설치합니다.

    winget install microsoft.winappcli --source winget
    

1. 새 Rust 앱 만들기

cargo new rust-app
cd rust-app

실행하여 모든 것이 작동하는지 확인합니다.

cargo run

2. ID를 확인하도록 코드 업데이트

Cargo.toml에 다음의 windows 의존성을 추가합니다.

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. ID 없이 실행

cargo run

"패키지되지 않음"이 표시됩니다.

4. winapp CLI를 사용하여 project 초기화

winapp init

프롬프트가 표시되면

  • 패키지 이름: Enter 키를 눌러 기본값(rust-app)을 적용합니다.
  • Publisher 이름: Enter 키를 눌러 기본값을 적용하거나 이름을 입력합니다.
  • 버전: Enter 키를 눌러 1.0.0.0 허용
  • 진입점: Enter 키를 눌러 기본값(rust-app.exe)을 적용합니다.
  • SDK 설정: "SDK 설정 안 함"을 선택합니다.

그러면 앱 ID에 대한 폴더가 만들어집니다 appxmanifest.xmlAssets .

5. ID를 사용하여 디버그

  1. 실행 파일을 빌드합니다.

    cargo build
    
  2. 디버그 ID 적용:

    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에 서명합니다. 제출하기 전에 서명할 필요가 없습니다.
  • 지원하는 각 아키텍처(x64, Arm64)에 대해 별도의 MSIX 패키지가 필요할 수 있습니다.