CLI 실행 파일을 MSIX로 패키징

이 가이드에서는 Windows 패키지 관리자(winget), Microsoft Store 또는 직접 배포를 통해 배포할 MSIX 패키지로 기존 명령줄 실행 파일을 패키징하는 방법을 안내합니다.

필수 조건

  • 패키지하려는 기존 CLI 실행 파일(.exe)
  • Windows 10 버전 1809 이상

단계

1. CLI 애플리케이션 구성

CLI 실행 파일 및 모든 종속성을 전용 폴더에 배치합니다. 이 폴더에는 MSIX 패키지에 포함해야 하는 모든 파일이 포함됩니다.

mkdir MyCliPackage
cd MyCliPackage
# Copy your CLI executable and dependencies here

2. winapp CLI 설치

Windows 패키지 관리자 통해 winapp CLI를 설치하거나, 이미 있는 경우 최신 버전으로 업데이트합니다.

# Install (or update if already installed)
winget install microsoft.winappcli --source winget

3. Package.appxmanifest를 생성합니다.

CLI 실행 파일에 대한 기본 Package.appxmanifest 및 필수 자산을 생성합니다.

winapp manifest generate --executable .\yourcli.exe

이 명령은 실행 파일에서 채워진 기본값을 사용하여 현재 디렉터리에 파일을 만듭니다 Package.appxmanifest .

4. 매니페스트 구성

생성된 Package.appxmanifest 항목을 편집하여 패키지를 사용자 지정합니다. 아래의 각 하위 단계에서는 변경해야 하는 내용과 그 이유를 설명합니다.

4.1 필수 네임스페이스 추가

Package 요소에 uap5 네임스페이스가 아직 없는 경우 해당 네임스페이스를 추가합니다. 이는 4.3단계의 실행 별칭에 필요합니다.

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  ...
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap uap5 rescap">

4.2 Application 요소 구성

요소 내에 <uap:VisualElements>을(를) 추가하여 시작 메뉴에서 앱을 숨기십시오 AppListEntry="none". CLI 도구는 터미널에서 호출되므로 시작 메뉴 항목이 필요하지 않습니다.

<uap:VisualElements
    DisplayName="YourApp"
    Description="My Application"
    BackgroundColor="transparent"
    Square150x150Logo="Assets\Square150x150Logo.png"
    Square44x44Logo="Assets\Square44x44Logo.png"
    AppListEntry="none">
</uap:VisualElements>

4.3 실행 별칭 확장 추가

사용자가 터미널 창에서 이름으로 CLI를 실행할 수 있도록 실행 별칭을 추가합니다. 요소 내에서 이 값을 추가합니다 <Application> (다음 <uap:VisualElements>).

<Extensions>
  <uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias>
      <uap5:ExecutionAlias Alias="yourcli.exe" />
    </uap5:AppExecutionAlias>
  </uap5:Extension>
</Extensions>

원하는 명령어로 yourcli.exe를 대체하십시오. 사용자가 MSIX를 설치하면 이 명령을 사용하여 CLI를 호출할 수 있습니다.

4.4 애플리케이션 메타데이터 업데이트

CLI 애플리케이션과 일치하도록 다음 필드를 업데이트합니다.

중요합니다

매니페스트의 Publisher 값은 서명 인증서의 게시자와 일치해야 합니다. 나중에 인증서를 생성하는 경우(5단계) 매니페스트에서 게시자를 사용합니다. 인증서를 생성한 후 게시자를 변경하는 경우 일치하도록 인증서를 다시 생성해야 합니다.

  • Identity: Name, PublisherVersion 업데이트

    <Identity
      Name="YourCompany.YourCLI"
      Publisher="CN=Your Company"
      Version="1.0.0.0" />
    
  • 속성: 표시 이름, 게시자 표시 이름 및 설명 업데이트

    <Properties>
      <DisplayName>Your CLI Tool</DisplayName>
      <PublisherDisplayName>Your Company</PublisherDisplayName>
      <Description>Description of your CLI tool</Description>
      <Logo>Assets\StoreLogo.png</Logo>
    </Properties>
    
  • VisualElements: 표시 이름 및 자산 참조 업데이트

    <uap:VisualElements
      DisplayName="Your CLI Tool"
      Description="Description of your CLI tool"
      BackgroundColor="transparent"
      Square150x150Logo="Assets\Square150x150Logo.png"
      Square44x44Logo="Assets\Square44x44Logo.png">
      <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" />
      <uap:SplashScreen Image="Assets\SplashScreen.png" />
    </uap:VisualElements>
    

참고: 패키지 디렉터리의 폴더에 Assets 적절한 아이콘 자산도 추가해야 합니다. 앱이 시작 메뉴에 표시되지 않지만 스토어 제출에는 아이콘이 계속 필요하며 다른 컨텍스트에 나타날 수 있습니다.

5. (선택 사항) 개발 인증서 생성

Microsoft Store 외부의 로컬 테스트 및 배포의 경우 인증서를 사용하여 MSIX 패키지에 서명해야 합니다.

개발 인증서를 생성합니다. 실수로 패키지에 포함하지 않도록 CLI 폴더 외부에 보관합니다.

# Navigate to a location outside your CLI folder (e.g., your home directory)
cd ~
winapp cert generate

그것은 홈 디렉터리에 devcert.pfx 파일(예: C:\Users\yourname\devcert.pfx)을 만듭니다.

개발 컴퓨터에서 이 인증서를 신뢰하려면 설치합니다(관리자 권한이 필요).

# Run PowerShell as Administrator
winapp cert install ~\devcert.pfx

6. CLI를 패키징하기

이제 MSIX 패키지를 만들 준비가 되었습니다.

# Navigate back outside of your project folder
# Package with dev certificate (for local testing/distribution)
winapp pack .\path\to\MyCliPackage --cert .\path\to\devcert.pfx

그러면 현재 디렉터리에 파일이 만들어집니다 .msix .

7. 설치 및 확인

MSIX 패키지를 설치하여 모든 것이 작동하는지 확인합니다.

Add-AppxPackage .\MyCliPackage.msix

4.3단계에서 실행 별칭을 추가한 경우 이제 모든 터미널에서 CLI를 실행할 수 있습니다.

yourcli --help

나중에 제거하려면 다음을 수행합니다.

Get-AppxPackage *YourCLI* | Remove-AppxPackage

  1. 배포할 준비가 되면 사용자가 자체 서명된 인증서를 설치할 필요가 없도록 인증 기관의 코드 서명 인증서로 MSIX에 서명할 수 있습니다.
  2. Microsoft Store 제출 전에 서명할 필요 없이 MSIX에 서명합니다.
  3. 지원하는 각 아키텍처에 대해 하나씩 여러 MSIX 패키지를 만들어야 할 수도 있습니다(x64, Arm64).

다음 단계

  • winget을 통한 배포: MSIX를 Windows 패키지 관리자 커뮤니티 리포지토리
  • Microsoft Store에 게시: winapp store를 사용하여 패키지를 제출하십시오.
  • CI/CD 설정: setup-WinAppCli GitHub 작업을 사용하여 파이프라인에서 패키징 자동화