Application.terminate den emin olmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Application.terminate den emin olmak

Mesaj gönderen varyemez »

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..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Application.terminate den emin olmak

Mesaj gönderen aslangeri »

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.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Application.terminate den emin olmak

Mesaj gönderen Battosai »

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...
Kullanıcı avatarı
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

Mesaj gönderen sabanakman »

Kod: Tümünü seç

Halt;
Deneyin bir de.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Application.terminate den emin olmak

Mesaj gönderen mrmarman »

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.
Resim
Resim ....Resim
Cevapla