Paketlemeye genel bakış

Uygulamanızın Windows'a nasıl yüklendiğini, güncellendiğini ve entegre edildiğini paketleme belirler. WinUI 3 uygulamaları varsayılan olarak paketlenirken geleneksel Win32 uygulamaları gibi birçok masaüstü uygulaması paketlenmemiş olarak çalışır. Paketlenmiş veya paketlenmemiş bir uygulama arasında seçim, kullanabileceğiniz özellikleri, kullandığınız dağıtım modelini ve müşterilerinizin aldığı genel deneyimi etkiler.

Uyarı

Yeni bir WinUI 3 uygulaması mı oluşturuyorsunuz? Varsayılan olarak zaten paketlenmiş durumdasınız. Aşağıdaki kılavuz, genellikle mevcut bir uygulamayı taşıma, kurumsal makinelere dağıtma veya başlangıçta paketlenmiş olmayan bir uygulamaya Windows özellikleri ekleme gibi açık bir seçim yapması gereken geliştiricilere yöneliktir.

Uygulama paketleme neden önemlidir?

Paketlenmiş uygulamalar temiz bir yükleme modelinden, otomatik güncelleştirmelerden ve arka plan görevleri, bildirimler, bağlam menüsü uzantıları, paylaşım hedefleri ve diğer genişletilebilirlik noktaları gibi paket kimliği gerektiren Windows özelliklere erişim sağlar. Paketleme ayrıca Microsoft Store ve kurumsal dağıtım araçları gibi kanallar aracılığıyla daha temiz dağıtımlar, güvenilir güncelleştirmeler ve kolaylaştırılmış dağıtım sağlamaya da yardımcı olur.

Paket kimliği gerektiren özellikler

Birçok Windows özelliği yalnızca tam MSIX paketleme veya dış konumlu paketleme (Seyrek paketleme) aracılığıyla paket kimliğine sahip uygulamalarda çalışır. Örnek olarak arka plan görevleri, anında iletme bildirimleri, paylaşım hedefleri, özel bağlam menüsü uzantıları, bildirim tabanlı dosya türü ve protokol ilişkilendirmeleri ve Windows AI API'leri verilebilir.

Listenin tamamı için bkz. Paket kimliği gerektiren özellikler.

Tip

Paketi açtıysanız ve Windows API'leri çağırırken E_ILLEGAL_METHOD_CALL veya APPMODEL_ERROR_NO_PACKAGE hatalarıyla karşılarsanız, paket kimliği gereksinimi de bu olur. En düşük sürtünmeli çözüm olarak dış konumlu (Seyrek paketleme) paketleme işlemine bakın.

çalışma zamanında işleminizin paket kimliğine sahip olup olmadığını algılamak için kullanın GetCurrentPackageFullName. Kurallı C++ ve C# örnekleri için MSIX İç blogundaki Bu Bir Paketlenmiş İşlem mi? konusuna bakın.

Bir bakışta paketleme modelleri

Model Paket kimliği Yükleyici Uygun mağaza En iyi kullanım alanı:
Paketlenmiş (MSIX) ✅ Evet MSIX yükleyicinin yerini aldı ✅ Evet (MSIX gönderimi) Yeni uygulamalar, Mağaza yayımlama, kurumsal MDM
Dış konumlu paketleme ✅ Evet Mevcut yükleyiciniz ✅ Evet (MSI/EXE gönderimi) Kendi yükleyicisi olan mevcut uygulamalar, ISV'ler
Ambalajsız ❌ Hayır MSI veya EXE yükleyicisi (ayrıca: Mağaza dışı dağıtım için XCopy veya betik) ✅ Evet (MSI/EXE gönderimi — sessiz yükleme desteğine sahip bir MSI veya EXE yükleyicisi gerektirir) Geniş Win32 dağıtımı, iç araçlar

Paketlenmiş uygulamalar (MSIX)

Paketlenmiş uygulamalar MSIX kullanır ve, birçok Windows genişletilebilirlik noktası için gerekli olan paket kimliğine sahiptir. Paket kimliği, Windows platform API'lerinin çağıranı güvenilir bir şekilde tanımlamasını sağlar. Bu nedenle bu özellikler buna bağlıdır.

  • Paketlenmiş uygulamalar genellikle dosya sistemi ve kayıt defteri sanallaştırması ile basit bir uygulama kapsayıcısında çalışır (bkz. Eski uygulamalar için AppContainer ve MSIX AppContainer uygulamaları).
  • Uygulamalar gerekirse bir uygulama kapsayıcısında çalıştırılmayacak şekilde de yapılandırılabilir.
  • MSIX hem paketleme hem de yükleme için kullanılır (bkz. MSIX nedir?).

Dış konumlu paketleme (Seyrek paketleme)

Dış konumla paketleme ( seyrek paketler olarak da adlandırılır), yükleyicinizi, ikili konumlarınızı veya güncelleştirme işleminizi değiştirmeden mevcut uygulamanızın yanına küçük bir kimlik paketi kaydetmenizi sağlar. Windows 10 sürüm 2004(derleme 19041) ile kullanıma sunulmuştur.

Bu, kendi yükleyicisi (NSIS, WiX, InstallShield vb.) aracılığıyla gelen ve MSIX ile değiştirmek istemeyen mevcut Win32/WPF/WinForms uygulamaları için harika bir noktadır. Hafif bir kimlik paketi kaydedersiniz, ikili dosyalarınız oldukları yerde kalır ve paket kimliğiyle sınırlandırılmış Windows özelliklerinin tamamının kilidini açarsınız.

Kapasite MSIX Dış konum
Yükleyicinizin yerini alır Evet Hayır
Paketin içindeki ikili dosyalar Evet Hayır (dış)
Uygun mağaza Evet (MSIX gönderimi) Evet (MSI/EXE gönderimi)
Paket kimliği Evet Evet
Güncelleştirme mekanizması MSIX güncelleştirmesi Mevcut mekanizmanız

Tam izlenecek yol: Dış konumla paketleyerek paket kimliği verme

Paketlenmemiş uygulamalar

Paketlenmemiş uygulamalar MSIX kullanmaz ve paket kimliğine sahip değildir; bu da yukarıda listelenen özelliklere erişemeyecekleri anlamına gelir.

  • API yüzeyi erişimi, dosya sistemi erişimi, kayıt defteri erişimi, yükseltme ve işlem modeli açısından tamamen sınırsızdır.
  • Yükleme ve güncelleştirmeler , , .exeözel yükleyicileri, ClickOnce veya xcopy dağıtımlarını gerektirir.msi.

Paketi kaldırmayı taahhüt etmeden önce yukarıdaki özellikler tablosunu yol haritanızla karşılaştırın. Bildirimler, arka plan görevleri veya yapay zeka API'leri ufuktaysa paketlenmiş olarak başlamayı göz önünde bulundurun.

Senaryoya göre seçme

Scenario Önerilen model Ayrıntılar
Microsoft Store'a yayın yapan bağımsız geliştirici Paketlenmiş (MSIX) önerilir MSIX tercih edilen yöntemdir; Mağaza tarafından yönetilen güncelleştirmeleri, değişiklik indirmelerini ve temiz kaldırmayı etkinleştirir. WinUI 3 uygulamaları varsayılan olarak paketlenir. Kod imzalama, Mağaza tarafından ücretsiz olarak işlenir.Paketlenmiş uygulamanızı dağıtma

Mevcut MSI veya EXE yükleyicisine sahip Win32 uygulamaları MSI/EXE gönderim yolu aracılığıyla Da Store'da yayımlayabilir, ancak Mağaza güncelleştirmeleri mevcut kullanıcılara göndermez; güncelleştirmeler uygulama veya yükleyici tarafından işlenmelidir.
Intune veya Yapılandırma Yöneticisi aracılığıyla dağıtılan Kurumsal uygulama Mevcut yükleyiciler için paketlenmiş veya harici konum Yeni uygulamalar MSIX kullanmalıdır. Mevcut uygulamalar, kendi yükleyicileri ile harici konum kullanarak paketleme yapabilir. Code signing: kendi kendine imzalanmış bir sertifika (Intune, Grup İlkesi veya Yapılandırma Yöneticisi aracılığıyla güven sağlanan) veya Azure Artifact Signing (eski adıyla Güvenilir İmzalama) kullanın. → Paketlenmiş uygulamaları dağıtma
ISV, kendi yükleyicisi ile doğrudan indirme sunuyor Dış konumla paketleme Mevcut yükleyicinizle birlikte basit bir kimlik paketi kaydedin. Kod imzalama: Depolama dışı dağıtım için CA'ya güvenilen bir sertifika gereklidir. Azure Yapıt İmzalama (eski adıyla Güvenilir İmzalama) önerilen düşük maliyetli seçenektir. → Paket kimliği verme

Alternatif olarak, MSI/EXE gönderim yolu aracılığıyla mevcut yükleyicinizi Mağaza'ya gönderin.
İç araç veya geliştirici yardımcı programı Ambalajsız İnşa etmek ve yayımlamak en kolay olanıdır. Windows Uygulama SDK'sı NuGet aracılığıyla çalışır, ancak bazı özellikler kullanılamaz.

Tip

Kod imzalama gereksinimleri ve maliyetleri dağıtım yoluna göre farklılık gösterir. Seçeneklerinizin tam dökümü için bkz. Windows uygulama geliştiricileri için kod imzalama seçenekleri.

Çerçeveye bağımlı ve bağımsız dağıtım karşılaştırması

Paketleme modelinden ayrı olarak, Windows Uygulama SDK'sı kullanan uygulamalar çalışma zamanı bağımlılıklarını nasıl taşıyabileceklerini seçer: çerçeveye bağımlı (Windows Uygulama SDK'sı çalışma zamanı kullanıcının makinesine yüklenir) veya bağımsız (tüm Windows Uygulama SDK'sı ikili dosyalar uygulamanızla birlikte gönderilir). Bu seçim paketlemeden bağımsızdır.

Tam karşılaştırma ve dağıtım kılavuzu için bkz. Windows Uygulama SDK'sı dağıtıma genel bakış.

MSIX ile Başlamaya Başlayın

Bir Win32 masaüstü uygulaması (bazen classic masaüstü uygulaması olarak adlandırılır) veya Windows Presentation Foundation (WPF) ve Windows Forms (WinForms) gibi bir .NET uygulaması oluşturursanız, UYGULAMANıZı MSIX kullanarak paketleyip dağıtabilirsiniz.

Eski yükleyicilerden MSIX'e geçiş

Uygulamanız şu anda eski bir yükleyici kullanıyorsa temiz yükleme/kaldırma, otomatik güncelleştirmeler, Mağaza dağıtımı ve paket kimliği elde etmek için MSIX'e geçiş yapabilirsiniz. Geçiş yolu, geçerli yükleyici teknolojinize ve kaynak koda erişiminizin olup olmadığına bağlıdır.

Mevcut yükleyici Önerilen geçiş yolu Kaynak kodu gerekli mi?
MSI (Windows Yükleyicisi) MSI'yi doğrudan MSIX'e dönüştürmek için MSIX Paketleme Aracı'nı kullanın. Özel eylemler de dahil olmak üzere çoğu MSI desenini destekler. Hayır
ClickOnce (.NET) Visual Studio MSIX paketleme projesini kullanarak kaynaktan yeniden derleyin. ClickOnce otomatik güncelleştirmesi Mağaza güncelleştirmeleri veya Uygulama Yükleyicisi ile değiştirilebilir. Evet
InstallShield / Gelişmiş Yükleyici Temiz bir VM'de yükleme yakalamak için MSIX Paketleme Aracı'nı kullanın. Karmaşık özel eylemlerin Paket Düzenleyicisi'nde el ile düzeltilmesi gerekebilir. Hayır
Inno Kurulumu / NSIS MSIX Paketleme Aracı'nın VM tabanlı yakalama iş akışını kullanın. EXE yükleyicisini aracın temiz ortamında çalıştırın. Hayır
App-V (sanal paketler) MSIX Paketleme Aracı'nı kullanarak doğrudan dönüştürün; giriş olarak App-V 5.x paketlerini destekler. Hayır
Gerekli değişikliklerle MSIX Uygulama kodunuzu değiştirmeden çalışma zamanı düzeltmelerini (dosya/kayıt defteri yeniden yönlendirme) uygulamak için Paket Destek Çerçevesi'ni kullanın. Hayır

Tip

Çekirdek sürücüleri, SYSTEM olarak çalışan hizmetler veya MSIX’in desteklemediği makine genelinde geçerli COM kayıtları içeren karmaşık yükleyicilere sahip uygulamalar için dış konumlu MSIX’i (dış konumla paketlenmiş) değerlendirin. Bu, yükseltilmiş erişim gerektiren bileşenler için geleneksel bir yükleyici kullanırken Windows özellikleri için paket kimliği sağlar. Bkz. Dış konumla paketleyerek paket kimliği verme.

Dikkat edilmesi gereken temel konular

  • Temiz bir VM üzerinde test — MSIX Paketleme Aracı yükleme sırasında tüm değişiklikleri yakalar. İlişkisiz sistem değişikliklerini yakalamaktan kaçınmak için temiz bir Windows görüntüsünde çalıştırın.
  • Paket Destek Çerçevesi — Dönüştürülen uygulamanızda çalışma zamanı sorunları varsa (dosya yolu varsayımları, HKLM'ye kayıt defteri yazma işlemleri), Paket Destek Çerçevesi kaynağınızı değiştirmeden bunları düzeltebilir.
  • Eski yükleyiciyle yan yana — Geçiş sırasında MSIX sürümünü eski yükleyiciyle birlikte dağıtabilirsiniz. Paket kimliği ve depolama konumları MSIX ve MSI/EXE yüklemeleri arasında farklılık gösterdiği için açık bir ayar/veri geçişi (örneğin, ilk çalıştırmada içeri aktarma) planlayın.

Diğer yükleme teknolojileri