CLI Yürütülebilir Dosyasını MSIX Olarak Paketleme

Bu kılavuz, mevcut komut satırı yürütülebilir dosyasını Windows Paket Yöneticisi (winget), Microsoft Store veya doğrudan dağıtım aracılığıyla dağıtım için MSIX paketi olarak paketleme konusunda size yol gösterir.

Önkoşullar

  • Paketlemek istediğiniz mevcut bir CLI yürütülebilir dosyası (.exe)
  • Windows 10 sürüm 1809 veya üzeri

Adımlar

1. CLI Uygulamanızı Düzenleme

CLI yürütülebilir dosyanızı ve tüm bağımlılıklarınızı ayrılmış bir klasöre yerleştirin. Bu klasör, MSIX paketinize eklenmesi gereken tüm dosyaları içerir.

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

2. winapp CLI'yi yükleme

winapp CLI'yi Windows Paket Yöneticisi aracılığıyla yükleyin veya zaten sahipseniz en son sürüme güncelleştirin:

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

3. Package.appxmanifest'i oluşturma

CLI yürütülebilir dosyanız için temel Package.appxmanifest ve gerekli assets oluşturun.

winapp manifest generate --executable .\yourcli.exe

Bu komut geçerli dizinde yürütülebilir dosyanızdan doldurulan varsayılan değerleri içeren bir Package.appxmanifest dosya oluşturur.

4. Manifesto Yapılandırma

Paketinizi özelleştirmek için oluşturulan Package.appxmanifest öğesini düzenleyin. Aşağıdaki her alt adım, nelerin ve neden değiştireceğini açıklar.

4.1 Gerekli Ad Alanını Ekle

uap5 Henüz mevcut değilse ad alanını Package öğesine ekleyin. Bu, 4.3. adımda yürütme takma adı için gereklidir.

<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 Uygulama Öğesini Yapılandırma

<uap:VisualElements> öğesinde, uygulamayı Başlat menüsünden gizlemek için AppListEntry="none" ekleyin. CLI araçları terminalden çağrılır, bu nedenle Başlat menüsü girdisine gerek yoktur:

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

4.3 Çalıştırma Takma Adı Uzantısı Ekle

Kullanıcıların CLI'nizi herhangi bir terminal penceresinden isimle çalıştırabilmesi için bir çalıştırma takma adı ekleyin. Bunu <Application> öğesine ekleyin (sonra <uap:VisualElements>):

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

yourcli.exe değerini CLI'nız için istenen komut adıyla değiştirin. Kullanıcı MSIX'i yükledikten sonra cli'nizi bu komutla çağırabilecektir.

4.4 Uygulama Meta Verilerini Güncelleştirme

Aşağıdaki alanları CLI uygulamanızla eşleşecek şekilde güncelleştirin.

Önemli

Manifestinizdeki Publisher değeri, imzalama sertifikanızdaki yayıcı ile eşleşmelidir. Daha sonra bir sertifika oluşturursanız (5. adım), bildiriminizdeki yayımcıyı kullanır. Sertifikayı oluşturdıktan sonra yayımcıyı değiştirirseniz, sertifikayı eşleşecek şekilde yeniden oluşturmanız gerekir.

  • Identity: güncelleştirme Name, Publisher ve Version

    <Identity
      Name="YourCompany.YourCLI"
      Publisher="CN=Your Company"
      Version="1.0.0.0" />
    
  • Özellikler: Görüntülenen adı, yayımcı görüntülenen adını ve açıklamayı güncelleme

    <Properties>
      <DisplayName>Your CLI Tool</DisplayName>
      <PublisherDisplayName>Your Company</PublisherDisplayName>
      <Description>Description of your CLI tool</Description>
      <Logo>Assets\StoreLogo.png</Logo>
    </Properties>
    
  • VisualElements: Görünen adı ve varlık referanslarını güncelleştirme

    <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>
    

Not: Paket dizininizdeki bir Assets klasöre uygun simge varlıkları da eklemelisiniz. Uygulama Başlat menüsünde görünmese de Mağaza gönderimi için simgeler gereklidir ve diğer bağlamlarda görünebilir.

5. (İsteğe Bağlı) Geliştirme Sertifikası Oluşturma

Microsoft Store dışında yerel test ve dağıtım için MSIX paketinizi bir sertifikayla imzalamanız gerekir.

Geliştirme sertifikası oluşturun. Yanlışlıkla pakete eklemekten kaçınmak için CLI klasörünüzün dışında tutun:

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

Bu, giriş dizininizde bir devcert.pfx dosya oluşturur (örn. C:\Users\yourname\devcert.pfx).

Geliştirme makinenizde bu sertifikaya güvenmek için yükleyin (yönetici ayrıcalıkları gerekir):

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

6. CLI'nızı paketleme

Artık MSIX paketini oluşturmaya hazırsınız:

# 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

Bu, geçerli dizinde bir .msix dosya oluşturur.

7. Yükleme ve Doğrulama

Her şeyin çalıştığını doğrulamak için MSIX paketini yükleyin:

Add-AppxPackage .\MyCliPackage.msix

4.3. adımda bir yürütme diğer adı eklediyseniz, cli'nizi artık herhangi bir terminalden çalıştırabilirsiniz:

yourcli --help

Daha sonra kaldırmak için:

Get-AppxPackage *YourCLI* | Remove-AppxPackage

Tips

  1. Dağıtıma hazır olduğunuzda, kullanıcılarınızın otomatik olarak imzalanan bir sertifika yüklemesini gerektirmeyecek şekilde MSIX'inizi Sertifika Yetkilisi'nden bir kod imzalama sertifikasıyla imzalayabilirsiniz
  2. Microsoft Store MSIX'i sizin için imzalar, göndermeden önce imzalamanız gerekmez.
  3. Desteklediğiniz her mimari için bir tane olmak üzere birden çok MSIX paketi oluşturmanız gerekebilir (x64, Arm64)

Sonraki Adımlar

  • winget aracılığıyla dağıtın: MSIX'inizi Windows Paket Yöneticisi Topluluk Deposu'na gönderin
  • Microsoft Store: Paketinizi göndermek için kullanın
  • CI/CD'yi ayarlayın: İşlem hattınızda paketlemeyi otomatikleştirmek için setup-WinAppCli GitHub Eylemi'ni kullanın