Bir uygulamada (programın online update işleminde) yeni exe yi indirmeden önce programı sonlandırmak için Application.terminate komutu kullanıyorum. Ancak bazan program sonlandığı halde hafızadan silinmiyor (onu da yeni exe yi kopyalamak için eskisini silememesinden anlıyorum. Hatta ctrl-alt-del ile bakınca hala çalışıyor gözüküyor.) Bu durum delphi 2010 ile derlediklerimde daha sık görülmeye başladı. Programın sonlandığından/hafızadan atıldığından nasıl emin olabiliriz?
Bir de delphi 2010 da bir başka programı çalıştırmak için Winexec(....) komutu her zaman düzgün çalışmayabiliyor. ShellExecute(.....) veya CreateProcess(....) i öneren yazıları okudum. Sizler program update işlerinde nasıl bir yol izliyorsunuz? Oluşabilecek hataları yakalama rutinleri ile birlikte anlatabilirseniz sevinirim..
Application.terminate den emin olmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Application.terminate den emin olmak
s.a.
ben önce çalışan exe dosyasının ismini değiştiriyorum. sonra yeni exe yi koyuyorum. yeni programı çalıştırıp eski programı kapatıyorum.
Not:evet çalışan programın ismi değiştirilebiliyor.
ben önce çalışan exe dosyasının ismini değiştiriyorum. sonra yeni exe yi koyuyorum. yeni programı çalıştırıp eski programı kapatıyorum.
Not:evet çalışan programın ismi değiştirilebiliyor.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Application.terminate den emin olmak
XP kullanıyorum ,Application.terminate ile bahsettiğiniz konularda hiç sıkıntı çekmedim belki işletim sistemi fark ediyordur. Yada kodlama ile alakalı bi sıkıntı olabilir kesin bir şey söylemek mümkün değil...aslangeri gibi alternatif yollar denemek lazım...
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Application.terminate den emin olmak
Kod: Tümünü seç
Halt;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Application.terminate den emin olmak
Merhaba..
Kendi yazılımlarımda uyguladığım yöntemlerden en etkini :
1. Sürüm kontrolü WEB'de bulunduracağınız bir text dosyadan alınarak, farklı ise güncel Dosya WEB üzerinden indirilecek.
2. Çalışmakta olan dosyanın RESOURCE içinden update EXE dosya temp dizine extract edilecek.
3. WinExec ile extract edilen EXE dosya çalıştırılacak, bu yapılırken çalışmakta olan yazılım kendi handle nosu parametre olarak gönderilecek.
4. Parametre geçilen handle no yardımı ile çalışan yazılımın kendisi yeni exe tarafından "Kill Process" edilecek ( handle nosunu sorgulayarak listelerden düştüğünü görerek emin oluyoruz).
5. Karşıdan kopyalanan dosya, orjinal exe üzerine yazılacak.
6. Sonra yeni EXE çalıştırılacak, bu defa çalışırken çalışmakta olan "Update exe" yazılımı çalıştırdığı yeni sürüm yazılıma parametre olarak kendi adını ve yolunu verecek.
7. Parametre alan yeni yazılım, parametre aldığını görerek update edildiğini anlayacak ve UPDATE exe'sini silecek..
EK: Rename işlemi bendeki uygulamalarda her zaman kurtarıcı olamadı. Kişisel bir durumdan kaynaklı. Kendimce ayar ve geçici dosya isimlerini ChangeFileExt(Application.Exename, '.INI' ) şeklinde dosya adı ile aynı, uzantısı farklı şeklinde dosyalar ile çalışıyorum. Dolayısı ile çalışan yeni exe'nin adı değişik olunca, mevcut olması gereken isimden farklı INI dosyalarına odaklanıyor.
Kendi yazılımlarımda uyguladığım yöntemlerden en etkini :
1. Sürüm kontrolü WEB'de bulunduracağınız bir text dosyadan alınarak, farklı ise güncel Dosya WEB üzerinden indirilecek.
2. Çalışmakta olan dosyanın RESOURCE içinden update EXE dosya temp dizine extract edilecek.
3. WinExec ile extract edilen EXE dosya çalıştırılacak, bu yapılırken çalışmakta olan yazılım kendi handle nosu parametre olarak gönderilecek.
4. Parametre geçilen handle no yardımı ile çalışan yazılımın kendisi yeni exe tarafından "Kill Process" edilecek ( handle nosunu sorgulayarak listelerden düştüğünü görerek emin oluyoruz).
5. Karşıdan kopyalanan dosya, orjinal exe üzerine yazılacak.
6. Sonra yeni EXE çalıştırılacak, bu defa çalışırken çalışmakta olan "Update exe" yazılımı çalıştırdığı yeni sürüm yazılıma parametre olarak kendi adını ve yolunu verecek.
7. Parametre alan yeni yazılım, parametre aldığını görerek update edildiğini anlayacak ve UPDATE exe'sini silecek..
EK: Rename işlemi bendeki uygulamalarda her zaman kurtarıcı olamadı. Kişisel bir durumdan kaynaklı. Kendimce ayar ve geçici dosya isimlerini ChangeFileExt(Application.Exename, '.INI' ) şeklinde dosya adı ile aynı, uzantısı farklı şeklinde dosyalar ile çalışıyorum. Dolayısı ile çalışan yeni exe'nin adı değişik olunca, mevcut olması gereken isimden farklı INI dosyalarına odaklanıyor.