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.

Uygulama Kurulum Sihirbazı Yazmak: Inno Setup ve Pascal Script'le Verilen Savaş

websterx

Üye
Katılım
14 Mart 2026
Mesajlar
6
🛠️ "Sadece Kurulum Dosyası" Dediler...

Kafayı yiyecektim arkadaşlar. Müşteri "hocam şu masaüstü uygulamamızın kurulumunu da yapsak mı?" dediğinde, "tabi canım, Inno Setup var, iki saatte hallederiz" diye düşünmüştüm. Meğerse kendi kendime açtığım cehennemin kapısıymış. "Sihirbaz" dedikleri şey, her "İleri" butonunda ruhundan bir parça koparıyor insanın.

🐛 Pascal Script Nereden Çıktı?

Olay şu: Basit kurulum için Inno Setup'ın GUI'si yetiyor. Ama sen "kurulum öncesi şu servisi durduralım, şu registry anahtarını kontrol edelim, kullanıcıdan özel bir ayar alalım" dersen, işte o noktada karşına Pascal Script çıkıveriyor. Delphi'yi andıran, 90'lardan fırlamış gibi duran bir script dili. StackOverflow'da bile çözüm bulmak için arkeolojik kazı yapman gerekiyor.

Mesela, kurulum tamamlandığında bir servisi başlatmak istedin. Scriptini yazdın, her şey güzel. Sonra kullanıcı "Geri" butonuna basıp yeniden "İleri" yapınca, aynı servisi tekrar tekrar başlatmaya çalışıp hata veriyor. Şaka gibi ama 3 saatimi aldı bu saçma bug'ı çözmek.

Kod:
if not IsServiceRunning('BenimServisim') then
  StartService('BenimServisim');

💡 Öğrendiğim Acı Dolu Gerçekler

Bir kere, InitializeSetup ve InitializeWizard fonksiyonlarının farkını anlamadan bu işe girmeyin. Biri setup başlarken, diğeri sihirbaz penceresi oluşturulurken çalışıyor. Yanlış yere yazdığın kod, ya hiç çalışmıyor ya da seni deli ediyor.

Diğer bir konu da Check ve NextButtonClick event'leri. Kullanıcı "İleri" dediğinde önce bir koşulu kontrol ettirmek istiyorsun. Eğer koşul sağlanmazsa, sihirbazın ilerlemesini engelleyip hata mesajı göstermen lazım. Bunu doğru yapmak için küçük bir ritüel bilmek gerekiyor:

Kod:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  if CurPageID = wpSelectDir then
  begin
    if not DirExists(SelectedDir) then
    begin
      MsgBox('Geçerli bir dizin seçin!', mbError, MB_OK);
      Result := False;
    end;
  end;
end;

🎯 Sonuç: Değdi Mi?

Sonuçta, özelleştirilmiş, profesyonel görünümlü bir kurulum sihirbazın oluyor. Kullanıcı deneyimi kesinlikle "setup.exe'yi çalıştır ve next'e bas"ın çok ötesine geçiyor. Ama bedeli ağır. Pascal Script öğrenmek, beklediğimden çok daha derin ve bazen sinir bozucu bir süreçti.

Siz de benzer bir kurulum kabusu yaşadınız mı? Ya da Inno Setup yerine NSIS veya WiX gibi alternatiflerde daha mı az acı çekilir? Fikirlerinizi bekliyorum, belki bir sonraki projede canımı daha az yakabilirim!
 

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