1 puan yazan kck4156 3 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş

MSIX, Windows’un modern paketleme formatıdır. Sandbox tabanlı çalıştığı için kayıt defteri veya dosya ilişkilendirmeleri gibi sistem değişiklikleri izole edilir ve kaldırıldığında geride hiçbir kalıntı bırakmaz. Ayrıca x64, x86 ve ARM64’ü tek bir dosyada MSIXBundle olarak da paketleyebilirsiniz.

Sorun dağıtımda.

MSIX’i Store dışında kurmak için kullanıcının geliştirici modunu açması, PowerShell’i başlatması ve sertifikaya güvenmesi gerekir. Geliştiriciler için doğal bir süreç olsa da, genel kullanıcı için bunların hepsi birer engeldir. Electron veya Tauri ile uygulama geliştirseniz bile, MSIX paketlemeyi desteklemeyen çok sayıda framework var.

Bu yüzden geliştirdim. MSIX Installer Generator, MSIX paketlemeden çift tıklamayla çalışan EXE yükleyici oluşturmaya kadar her şeyi tek seferde yapan bir araçtır.

Nasıl başladı

Bu proje aslında başlangıçta MSIX ile ilgili değildi.

WinUI 3 ile yapılmış bir uygulamayı Store dışında dağıtmak için, .atp adlı kendi paket formatını kullanan bir yükleyici framework’ü geliştiriyordum. Yapı 7z ile sıkıştırılıp yükleyiciye veriliyor, kayıt defteri kaydı veya Başlat menüsü kısayolu oluşturma gibi işlemleri de yükleyici yapıyordu. Basit EXE paketleme için de gayet iyi çalışıyordu.

Derken bir anda “MSIX kullanırsam sandbox desteği de geliyor, bunu yükleyici yapmak için kullansam nasıl olur?” diye düşündüm. Mevcut .atp yaklaşımı kullanışlı olsa da, sonuçta doğrudan kayıt defterine yazan ve AppData altında klasör oluşturan geleneksel bir kurulum yöntemiydi; bu yüzden temiz bir kaldırma garanti edilemiyordu. MSIX kullanıldığında ise Windows her şeyi otomatik olarak sandbox içinde izole ediyor ve kaldırma sırasında hiçbir kalıntı bırakmıyor.

Bu yüzden MSIX kurulum desteği eklemeye başladım, ama ilerledikçe sertifika üretimi, manifest yazımı ve paketleme gibi her şeyi kullanıcının elle yapması gerektiğinin sorun olduğunu fark ettim. Ayrıca birçok framework de MSIX paketlemeyi desteklemiyordu. Sonunda paketlemeyi de otomatikleştiren bir araç geliştirdim ve şimdi bu araç MSIX paketlemeden EXE yükleyici oluşturmaya kadar her şeyi tek seferde işliyor.

Hangi sorunu çözmek istedim

MSIX ile dağıtım yapmaya çalışınca kullanıcı deneyimi çok kötüydü.

  • “Geliştirici modunu açın” → kullanıcı afallıyor
  • “PowerShell’i yönetici yetkisiyle açıp komutu girin” → daha da afallıyor
  • “Sertifikaya güvenin” → en çok burada afallıyor

Çift tıklayınca işi biten geleneksel EXE yükleyicinin sadeliğini ve MSIX’in sandbox avantajlarını aynı anda elde etmek istedim.

MSIX Installer Generator ne yapıyor

Temelde iki şey yapıyor.

1. MSIX paketleme

Sertifika üretimi, manifest yazımı ve build çıktısının paketlenmesi GUI üzerinden yapılıyor. Framework MSIX paketlemeyi desteklemese bile yalnızca build output klasörünü belirtmeniz yeterli. x64, ARM64 gibi mimariye göre klasörler eklendiğinde PE header okunarak otomatik algılama yapılıyor ve tek bir .msix ya da çoklu mimarili .msixbundle oluşturuluyor.

2. EXE yükleyici oluşturma

Oluşturulan MSIX’i, çift tıklamayla tek seferde kurulan bağımsız bir EXE yükleyiciye dönüştürüyor. Sideloading için gerekli tüm süreçleri (sertifika kurulumu, bağımlılıkların işlenmesi vb.) yükleyici kendi başına hallediyor. Kullanıcı açısından bakınca tek yapılması gereken yükleyiciyi indirip çalıştırmak. PowerShell de yok, geliştirici modu da yok, sertifika istemi de yok.

CLI aracı da var

GUI dışında aticmsixgen adlı bir CLI aracını da NuGet’e yükledim. CI veya yapay zeka otomasyon iş akışlarında komut satırı üzerinden MSIX paketleme ve EXE oluşturma işlemlerinin tamamı yapılabiliyor. NativeAOT ile derlendiği için runtime bağımlılığı olmayan tek bir çalıştırılabilir dosya.

dotnet tool install --global aticmsixgen  

Sertifika üretimi, manifest yazımı, MSIX paketleme ve EXE oluşturmanın tamamı CLI üzerinden yapılabiliyor.

Şu kişiler için çok uygun

  • MSIX ile dağıtım yapmak isteyip sideloading sürecini yük olarak görenler
  • Electron, Tauri, WPF gibi MSIX paketlemeyi varsayılan olarak desteklemeyen framework’leri kullananlar
  • x64, ARM64 gibi birden fazla mimariyi tek bir yükleyiciyle dağıtmak isteyenler
  • CI içinde MSIX paketleme ve EXE oluşturmayı otomatikleştirmek isteyenler

Bağlantılar

MIT lisanslıdır; geri bildirim veya sorunları GitHub üzerinden bırakabilirsiniz. Türkçe yazmanız da sorun olmaz.

Henüz yorum yok.

Henüz yorum yok.