Bir Windows uygulamasını güvenle dağıtmak için üç şey gerekir: kullanıcınıza uygun bir kurulum paketi (MSI, MSIX ya da EXE), güvenilir bir sertifikayla atılmış kod imzası ve indirilen dosyanın doğruluğunu kontrol eden bir otomatik güncelleme mekanizması. Bunlardan biri eksik kaldığında kullanıcı ya güvenlik uyarısıyla karşılaşır ya da eski bir sürümde takılı kalır.
Uygulamayı yazmak işin yarısıdır; kullanıcının bilgisayarına sorunsuz ulaştırmak ve yıllarca güncel tutmak diğer yarısı. Masaüstü uygulama geliştirme projelerinde dağıtım hattını bu yüzden ilk sürümden önce kuruyoruz. Bu yazıda kurulum formatlarını, kod imzalamayı, SmartScreen'i, güncelleme kanallarını ve Microsoft Store seçeneğini sırayla ele alıyoruz.
MSI, MSIX ve EXE: Hangi kurulum formatını seçmelisiniz?
Windows'ta üç yaygın kurulum biçimi vardır ve her biri farklı bir kullanıcıya daha iyi hizmet eder:
- MSI: Windows Installer'ın paket formatıdır. Kurulum adımları paketin içindeki bir veritabanında tanımlanır ve bir hata olursa işlem geri alınır. Kurumsal BT ekipleri MSI'yı sever, çünkü Group Policy ve Microsoft Intune gibi araçlarla sessiz ve toplu kurulum kolaydır. WiX Toolset bu alanda yaygın kullanılan açık kaynak bir araçtır.
- MSIX: Microsoft'un modern paket formatıdır. Uygulama yalıtılmış bir yapıda kurulur, kaldırıldığında geride iz bırakmaz ve güncellemelerde yalnızca değişen parçalar indirilir. Paketin imzalı olması zorunludur. Sürücü kurulumu gibi bazı derin sistem işleri ise MSIX'in sınırları dışında kalır.
- EXE kurulum sihirbazı: Inno Setup ya da NSIS gibi araçlarla hazırlanan klasik kurulumdur. En esnek seçenektir: ön koşulları kurabilir, dil seçimi sunabilir, özel adımlar ekleyebilir. Esnekliğin bedeli, kurulumun ve kaldırmanın doğruluğunun tamamen sizin elinizde olmasıdır.
- Taşınabilir sürüm: Kurulum gerektirmeyen, sıkıştırılmış bir klasör içinde dağıtılan sürümdür. Hızlı denemeler için pratiktir, ama güncelleme ve kaldırma tamamen kullanıcıya kalır.
Bir de kurulumun kapsamı vardır. Makine geneli kurulum Program Files klasörüne yazar ve yönetici izni ister. Kullanıcı bazlı kurulum ise kullanıcının kendi profil klasörüne yazar ve yönetici izni gerektirmez. Bireysel kullanıcılara dağıtılan araçlarda kullanıcı bazlı kurulum, kurumsal ortamlarda makine geneli kurulum daha yaygındır.
Kurumsal müşterileriniz varsa sessiz kurulum parametrelerini belgeleyin; MSI için bu, msiexec komutunun /quiet seçeneğidir. Kaldırma işleminin ayarları ve geçici dosyaları da temizlediğinden emin olun.
Kod imzalama nedir ve neden gereklidir?
Kod imzalama, uygulama dosyalarına yayıncının kimliğini kanıtlayan ve dosyanın imzalandıktan sonra değiştirilmediğini gösteren dijital bir imza eklemektir. Windows bu imzayı Authenticode ile doğrular. İmzalı bir kurulumda kullanıcı, izin penceresinde "Bilinmeyen yayıncı" yerine şirketinizin adını görür.
- Sertifika: Kod imzalama sertifikası tanınmış bir sertifika otoritesinden alınır ve otorite şirketinizin kimliğini doğrular. Kuruluş doğrulamalı (OV) ve genişletilmiş doğrulamalı (EV) türleri vardır.
- Özel anahtar: Sektör kuralları gereği sertifikanın özel anahtarı artık donanımda, yani bir USB token'da ya da bulut tabanlı bir donanım güvenlik modülünde (HSM) tutulur. Bu, imzalamayı derleme hattına bağlarken baştan planlanması gereken bir ayrıntıdır.
- Zaman damgası: İmzayı bir zaman damgası sunucusuyla birlikte atın. Böylece sertifikanın süresi dolsa bile, süresi dolmadan önce imzalanmış dosyalar geçerli kalır.
- Ne imzalanır: Yalnızca kurulum dosyası değil, uygulamanın kendi EXE ve DLL dosyaları da imzalanmalıdır. Güvenlik yazılımları ve kurumsal politikalar her dosyaya ayrı bakabilir.
İmzalamayı elle yapmak yerine derleme ve yayın hattına bağlamak hem hatayı hem de anahtarın yanlış ellere geçme riskini azaltır. Otomatik yayın hattı kurmanın genel ilkelerini Dramsız DevOps yazımızda anlatıyoruz.
SmartScreen uyarısı neden çıkar ve itibar nasıl oluşur?
Microsoft Defender SmartScreen, internetten indirilen ve henüz yeterince tanınmayan dosyalarda "Windows bilgisayarınızı korudu" uyarısını gösterir. Kullanıcı Ek bilgi ve ardından Yine de çalıştır seçeneğiyle devam edebilir, ama birçok kullanıcı bu noktada vazgeçer.
- SmartScreen kararını dosyanın ve onu imzalayan sertifikanın zamanla biriktirdiği itibara göre verir. İmzasız dosyalar bu itibarı biriktiremez.
- Yeni bir sertifikayla ya da yeni bir ürünle ilk dağıtımda uyarı görülmesi olağandır. İndirme sayısı arttıkça ve zaman geçtikçe uyarı azalır.
- Sertifika türünün itibara etkisi Microsoft'un politikasına bağlıdır ve zaman içinde değişebilir. Sertifika almadan önce güncel durumu kontrol edin.
- Windows 11'de Akıllı Uygulama Denetimi açık olan cihazlarda imzasız ve tanınmayan uygulamalar doğrudan engellenebilir.
Kullanıcılarınıza karşı açık olun: İlk sürümlerde uyarı görülebileceğini indirme sayfasında kısaca belirtin ve nasıl devam edileceğini gösterin. Böylece uyarı bir güven sorununa dönüşmez.
Otomatik güncelleme nasıl güvenli kurulur?
Güvenli bir güncelleme akışı genellikle şu beş adımdan oluşur. Hazır güncelleme kütüphaneleri bu adımların çoğunu sizin yerinize yapar; yine de her adımın gerçekten uygulandığını kontrol edin.
- Sürüm bilgisini güvenli bir kaynaktan alın. Uygulama açılışta ya da belirli aralıklarla HTTPS üzerinden bir sürüm dosyasını kontrol eder. Bu dosyada en yeni sürüm numarası, indirme adresi, dosya özeti ve sürüm notları bulunur.
- Arka planda indirin. Kullanıcının işini kesmeden indirin; bağlantı koparsa indirme kaldığı yerden devam etsin.
- Bütünlüğü doğrulayın. İndirilen dosyanın SHA-256 ya da SHA-512 gibi bir özetini hesaplayın ve sürüm dosyasındaki değerle karşılaştırın. Ardından dosyanın kod imzasını ve imzalayanın sizin sertifikanız olduğunu kontrol edin. Özet dosyanın bozulmadan geldiğini, imza ise sizden geldiğini gösterir.
- Doğru anda kurun. Kullanıcı bir iş yaparken uygulamayı kapatmayın. Kurulumu uygulama kapanırken ya da bir sonraki açılışta yapın.
- Geri dönüş yolu bırakın. Yeni sürüm açılmıyorsa bir önceki sürüme dönebilmelisiniz. En azından eski kurulum dosyalarını erişilebilir tutun.
Kendi ürünümüz Next Notify bu akışın bir örneğidir: yeni sürümü arka planda indirir, SHA-512 özetini doğrular ve ayar penceresi kapanınca sessizce kurar.
Güncelleme kanalları nasıl yönetilir?
Her yeni sürümü aynı anda herkese göndermek, bir hatanın da herkese aynı anda ulaşması demektir. Kanal ve kademe kullanmak bu riski azaltır:
- Kararlı ve beta kanalları: Yeni özellikleri önce gönüllü kullanıcılara ya da iç ekibe açın, sorun yoksa kararlı kanala taşıyın.
- Kademeli dağıtım: Yeni sürümü önce kullanıcıların küçük bir kısmına sunun, hata ve çökme raporlarını izleyin, sonra oranı artırın.
- Zorunlu güncelleme: Güvenlik açığı kapatan sürümleri ertelenemez olarak işaretleyin; diğerlerinde kullanıcıya erteleme hakkı tanıyın.
- Sürüm notları: Her sürümde neyin değiştiğini kısa ve anlaşılır biçimde yazın. Kullanıcı neyin değiştiğini bildiğinde güncellemeye daha kolay güvenir.
- Sürüm numaralandırma: Anlamlı bir sürüm şeması kullanın. Destek ekibinin hangi kullanıcının hangi sürümde olduğunu bilmesi sorun çözmeyi hızlandırır.
Microsoft Store bir seçenek mi?
Evet, özellikle bireysel kullanıcılara ulaşan uygulamalar için. Microsoft Store artık yalnızca MSIX paketlerini değil, klasik MSI ve EXE kurulumlarını da kabul ediyor.
- Store üzerinden dağıtılan MSIX paketleri Microsoft tarafından imzalanır. Kendi kod imzalama sertifikanıza ihtiyaç duymazsınız ve kullanıcı SmartScreen uyarısı görmez.
- MSIX paketlerinde güncellemeleri Store dağıtır. MSI ve EXE gönderimlerinde ise kurulum dosyası sizin sunucunuzda durur, güncellemeyi siz yönetirsiniz ve bu dosyaların imzalı olması beklenir.
- Store'da aranabilir olmak keşfi kolaylaştırır. Kurumsal ortamlarda ise Store erişimi politikalarla kapatılmış olabilir.
- Her gönderim bir sertifikasyon incelemesinden geçer; yayın takviminizi buna göre planlayın.
- Mağaza sayfası için açıklama, ekran görüntüleri ve yaş derecelendirmesi gibi bilgileri önceden hazırlayın.
Store'a ek olarak Windows Paket Yöneticisi (winget) de geliştiricilerin ve BT ekiplerinin sık kullandığı bir dağıtım kanalıdır. Hangi teknolojiyle geliştirdiğiniz de dağıtım araçlarınızı etkiler; seçenekleri Electron, Tauri ve .NET yazımızda karşılaştırıyoruz.
Kullanıcı kodunuzu görmez; kurulum penceresini, uyarıyı ve güncellemeyi görür.
Sık sorulan sorular
Kod imzalama sertifikası olmadan uygulama dağıtılabilir mi?
Teknik olarak evet, ama kullanıcı SmartScreen uyarısıyla karşılaşır, Akıllı Uygulama Denetimi açık cihazlarda uygulama engellenebilir ve birçok kurumsal politika imzasız yazılıma izin vermez. Ciddi bir ürün için imza fiilen zorunludur.
EXE mi, MSI mı, MSIX mi daha iyi?
Hedef kitleye bağlıdır. Kurumsal dağıtım için MSI, temiz kurulum ve Store için MSIX, en fazla esneklik için EXE öne çıkar. Bazı ürünler birden fazla formatı birlikte sunar.
Otomatik güncellemeyi kullanıcı kapatabilmeli mi?
Bireysel araçlarda erteleme seçeneği sunmak iyi bir uygulamadır, ama güvenlik güncellemeleri ertelenemez olmalıdır. Kurumsal ortamlarda ise güncelleme zamanlamasını genellikle BT ekibi yönetmek ister.
Hash doğrulaması tek başına yeterli mi?
Değildir. Özet, dosyanın yolda bozulmadığını gösterir; ama özet ile dosya aynı sunucudan geliyorsa ikisi birlikte değiştirilebilir. Bu yüzden özet doğrulamasını kod imzası kontrolüyle birlikte kullanın.
Nereden başlamalı?
Önce kullanıcınızı tanımlayın: bireysel kullanıcı mı, kurumsal BT ekibi mi, ikisi birden mi? Bu cevap kurulum formatını, imzalama ihtiyacını ve güncelleme politikasını büyük ölçüde belirler. Ardından ilk sürümden önce imzalama ve güncelleme hattını küçük bir test sürümüyle uçtan uca deneyin. Kısa kontrol listeniz şu olsun: imzalı kurulum, imzalı uygulama dosyaları, zaman damgası, özet ve imza doğrulamalı güncelleme, çalışan bir geri dönüş yolu.
Windows uygulamanızın kurulum, imzalama ve güncelleme hattını birlikte kurmak isterseniz bizimle iletişime geçin.