EDUpdater.Tool 1.0.7

dotnet add package EDUpdater.Tool --version 1.0.7
                    
NuGet\Install-Package EDUpdater.Tool -Version 1.0.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EDUpdater.Tool" Version="1.0.7">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EDUpdater.Tool" Version="1.0.7" />
                    
Directory.Packages.props
<PackageReference Include="EDUpdater.Tool">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EDUpdater.Tool --version 1.0.7
                    
#r "nuget: EDUpdater.Tool, 1.0.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EDUpdater.Tool@1.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EDUpdater.Tool&version=1.0.7
                    
Install as a Cake Addin
#tool nuget:?package=EDUpdater.Tool&version=1.0.7
                    
Install as a Cake Tool

EDUpdater - Kullanım ve Gereksinimler

Bu araç, uzak bir .zip arşivini indirip belirtilen klasöre açarak uygulama/servis güncellemesi yapar. Aşağıda parametreler, çıkış kodları, gerekli izinler ve dikkat edilmesi gerekenler kısa ve net olarak açıklanmıştır.

Komut satırı parametreleri

  • --zip-url <url> (zorunlu)

  • İndirilecek .zip dosyasının tam HTTP/HTTPS URL'si.

  • --extract-to <path> (zorunlu)

  • Dosyaların açılacağı hedef klasör (uygulama dizini).

  • --zip-password <pwd> (opsiyonel)

  • Eğer arşiv parolalıysa buraya parola verin.

  • --pid <pid> (opsiyonel, tercih edilen yeniden başlatma yöntemi)

  • Güncellemeyi başlatan uygulamanın PID'si. Verilirse önce bu süreç hedeflenir ve yeniden başlatılır.

  • --service-name <name> (opsiyonel, Windows servisleri için)

  • Windows hizmeti adı. Sağlanırsa güncelleme sonrası sc stop / sc start ile servis kontrolü yapılır.

  • --zip-hash <sha256> (opsiyonel, bütünlük doğrulama)

  • İndirilen zip dosyasının beklenen SHA256 hash değeri (hex). Sağlanırsa indirme sonrası doğrulama yapılır; eşleşmezse güncelleme iptal edilir.

Örnek kullanım

  • Parolasız zip, PID ile yeniden başlatma: EDUpdater.exe --zip-url https://example.com/update.zip --extract-to "C:\Program\MyApp" --pid 1234

  • Parolasız zip, SHA256 doğrulama ile: EDUpdater.exe --zip-url https://example.com/update.zip --extract-to "C:\Program\MyApp" --zip-hash A1B2C3D4...

  • Parolalı zip, servis ile güncelleme (Windows): EDUpdater.exe --zip-url https://example.com/update.zip --extract-to "C:\Program\MyService" --zip-password secret --service-name MyService

Çalışma mantığı (kısa)

  1. Log dosyası başlatılır (%TEMP%/ed_updater_<tarih>.log).
  2. Zip dosyası geçici bir dosyaya streaming olarak indirilir (ilerleme raporlanır).
  3. --zip-hash verilmişse SHA256 doğrulaması yapılır.
  4. İçerik önce ayrı bir geçici klasöre çıkarılır. (Path traversal kontrolleri uygulanır.)
  5. Çıkarılan dosyalar hedef klasöre taşınır / atomik olarak değiştirilir. Varolan dosyalar .bak uzantısıyla yedeklenir.
  6. Hata durumunda .bak dosyalarından otomatik rollback yapılır.
  7. Eğer --service-name verilmişse servis sc stop (polling ile bekleme) / sc start ile kontrol edilir.
  8. Eğer --pid verilmişse bu PID öncelikli olarak kapatılıp yeniden başlatılır; verilmemise hedef klasör altındaki çalışan süreçler otomatik tespit edilir.

Exit kodları

  • 0 – Başarılı güncelleme.
  • 1 – İndirme hatası (ağ/URL/HTTP problemi) veya kullanıcı iptali (Ctrl+C).
  • 2 – Arşiv şifreli fakat parola sağlanmadı veya parola hatası.
  • 3 – Zip açma/okuma hatası (bozuk arşiv veya desteklenmeyen format).
  • 4 – Açma sırasında genel hata (disk/izin vb.).
  • 5 – PID doğrulama / PID bulunamadı hatası.
  • 6 – Dosyaları hedefe taşırken/replace sırasında hata (rollback denenmiştir).
  • 7 – SHA256 hash doğrulama başarısız (indirilen dosya beklenen hash ile eşleşmiyor).

(Uygulama içinde hata mesajı stderr'e yazılır; hata kodları otomasyon/CI için kullanılabilir.)

Gerekli izinler ve uyarılar

  • Servis durdurma/başlatma (--service-name) ve süreç sonlandırma/kill işlemleri yönetici (elevated) izni gerektirebilir. Windows'ta sc stop ve sc start komutları için yeterli hak gerekir.
  • Process.MainModule bilgisine erişim bazı süreçlerde (sistem/protected) engellenebilir; o durumda süreç atlanır ve kullanıcı uyarılır.
  • Dosyaları değiştirmek için hedef klasörde yazma izinlerinizin olması gerekir.
  • ZIP içeriğini hedef klasöre çıkarmadan önce geçici klasöre çıkarıyoruz; ancak yine de hedef dizine yazma izni gereklidir.

Güvenlik notları

  • Path traversal (ör. ../) kontrolleri eklidir; zip içindeki entry'ler hedef dışına çıkarılamaz.
  • İndirme için HTTPS kullanılması önerilir.
  • --zip-hash parametresi ile indirilen dosyanın bütünlüğü doğrulanabilir (SHA256).
  • Yedekleme (.bak) ve otomatik rollback mekanizması kritik dosyalar için koruma sağlar.

Loglama

  • Tüm çıktı hem konsola hem %TEMP%/ed_updater_<tarih>.log dosyasına yazılır.
  • Arka planda çalıştırma senaryolarında log dosyasını kontrol edin.

Hatalar / Sorun Giderme

  • "PID bulunamadı" hatası: Verilen PID artık mevcut değil veya yanlış. Uygulamayı çağıran süreç kendi PID'sini gönderiyorsa Process.GetCurrentProcess().Id değerini kullanın.
  • Servis komutları başarısız oluyorsa: manuel olarak sc query <name> ile servis durumunu kontrol edin ve güncelleme için gerekli yetkilerin (Administrator) verildiğinden emin olun.
  • Zip açma hatası alıyorsanız: arşivin parolalı olup olmadığını, farklı bir şifreleme kullanıp kullanmadığını (AES vb.) kontrol edin.

Tavsiyeler / En iyi uygulamalar

  • Mümkünse updater'ı çağıran uygulama kendi PID'sini --pid ile vererek daha güvenilir yeniden başlatma sağlayın.
  • Büyük arşivler için disk alanı, timeout ve retry ayarlarını ortamınıza göre güncelleyin.
  • Üretim ortamında loglama/monitoring ekleyin (ör. dosyaya veya merkezi log servisine yazma).

Bu README kısa ve doğrudan kullanım/kritik gereksinimleri özetler. İstersen bu dosyaya örnek komut satırı betikleri, daha detaylı rollback talimatları veya Windows servis durum bekleme (timeout loop) ekleyebilirim.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.7 208 3/2/2026
1.0.2 421 10/28/2025