Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Squirrel.Windows ile Auto-Update: Delta Paketleri Kafayı Yedirtti!

✖ Kapat
Duyuru
✖ Kapat
Duyuru

devnix

Okur Üye
Üye
Katılım
14 Mart 2026
Mesajlar
71
🔥 "Sadece birkaç satır kod" dediler...

Dostlar, selam. Bugün sizlere, "kullanıcı deneyimi için şart" diyerek girdiğim ve neredeyse ruh sağlığımı kaybettiğim bir maceradan bahsedeceğim: Squirrel.Windows ile auto-update mekanizması kurmak. Özellikle de o lanet olası delta paketleri (sadece değişen dosyaları güncelleyen) konusunda yaşadıklarımı anlatacağım. Meğerse setup'ı çalıştırmak, işin en basit kısmıymış.

🔍 Neden Squirrel? Çünkü "GitHub Desktop da kullanıyor"

Araştırdım, ClickOnce biraz fazla sınırlı geldi, özelleştirmesi zordu. Electron Builder'ın updater'ı da güzeldi ama benim uygulamam .NET Core masaüstüydü. Squirrel.Windows, GitHub'ın arkasındaki isim, NuGet paketleriyle çalışıyor, delta updates desteği var diye gözüme girdi. "Tamam," dedim, "birkaç komutla hallederim."

C#:
var mgr = new UpdateManager("https://update-serverim.com");
await mgr.UpdateApp();

İşte o ünlü iki satır. Sorun şu ki, bu iki satırın çalışması için arka planda bir sürü ritüel tamamlamanız gerekiyor.

⚙️ Delta Paketi Oluşturma Cehennemi

Asıl facia, güncelleme paketlerinizi hazırlarken başlıyor. Squirrel, RELEASES adında bir dosya ve bir sürü nupkg dosyası bekliyor. Delta paketi oluşturmak için, bir önceki sürümün nupkg'ının de aynı yerde olması lazım. `Squirrel.exe --releasify` komutunu çalıştırdığınızda, eğer önceki sürüm paketi de dizindeyse, otomatik olarak bir delta nupkg'ı da oluşturuyor. Harika değil mi?

Değil! Çünkü build pipeline'ınızı (ben GitHub Actions kullanıyorum) buna göre dizayn etmeniz gerekiyor. Her yeni build'de, bir önceki sürümün paketini bir yerden çekip, build ortamına koymanız, sonra yeni paketi oluşturmanız, sonra çıkan delta'yı ve full paketi sunucuya yüklemeniz lazım. Bu süreçte bir yerde dosya ismi yanlış yazılsa, veya önceki sürüm paketi bulunamasa, sessiz sedasız sadece full paket oluşturuyor ve siz farkına varmıyorsunuz. Kullanıcılar her seferinde 200 MB'lık full setup'ı indiriyor, ben de "neden delta çalışmıyor?" diye terminale bakakalıyorum.

💡 Yakaladığım Püf Noktalar ve İsyanlar

1. Sürüm Numarası Kutsaldır: Assembly Version'unuz her yeni sürümde KESİNLİKLE ve KESİNLİKLE artmalı. Squirrel buna bakar. Aynı sürüm numarasıyla paket oluşturursanız, update mekanizması hiçbir şey yapmaz.
2. RELEASES Dosyasındaki SHA1: Bu dosya paketlerin hash'lerini tutar. Manuel müdahale ETMEYİN. Eğer sunucunuza yüklediğiniz nupkg dosyasıyla, RELEASES dosyasındaki hash uyuşmazsa, update başarısız olur. Süreci tamamen otomatize etmek şart.
3. Code Signing: Uygulamanızı imzalamazsanız, Windows SmartScreen canınıza okur. Squirrel ile paketledikten SONRA da setup.exe'yi imzalamayı unutmayın. İki ayrı imzalama işlemi... Şaka gibi.

Sonuç olarak, Squirrel güçlü ve kullanışlı bir araç, evet. Ama özellikle delta update süreçleri, basit bir "paketle ve yükle" işleminden çok daha karmaşık bir CI/CD pipeline tasarımı gerektiriyor. Yoksa kullanıcıya faydası dokunan delta update'i asla devreye alamazsınız.

Siz bu tarz bir auto-update mekanizması kurdunuz mu? Delta paketleri için daha temiz, daha az sinir bozucu bir yöntem bulan var mı aranızda? Ya da NetSparkle gibi alternatiflere mi geçsem? Fikirlerinizi bekliyorum!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri