Update Program di Delphi

Delphi adalah bahasa program yang sangat powerfull dalam membuat aplikasi berbasis desktop ataupun client server. 
Kelemahan program berbasis desktop adalah tidak bisa otomatis update. Mungkin bisa diupdate sebagian jika programnya menggunakan modul-modul. Tapi jika menggunakan single exe, otomatis harus diupdate secara keseluruhan.

Di artikel ini dibahas cara membuat program update menggunakan Delphi. Jadi programmer tidak perlu mengkopi ulang ke komputer user satu persatu. User juga tidak perlu mengambil dari Flash disk atau email lalu dikopikan ke folder tertentu, dimana program Exe tersebut berada. Jadi pada saat ada updatetan baru, Programmer meletakan Exe hasil kompilasi di hosting web. Di Program ada menu update, tinggal klik saja Program akan otomatis mengupdate sendiri. Jika ada updatetan baru pun User otomatis akan tau, yaitu pada saat membuka program ada Pesan bahwa User harus mengupdate programnya atau sekedar menyarankan untuk update program

Metode teknisnya yang digunakan disini adalah menggunakan 2 file exe, disini dicontohkan ada program Utama.exe dan Update.exe
1. Pada program Utama.exe dibuat menu update yang akan mengeksekusi Update.exe dan mengklose Utama.exe
2. Program update Exe akan mengambil file update tan yang diletakan di  web tempat situs kita atau hosting kita dan mengkopi ke folder temp
3. Program update Exe akan mengkopi Utama.exe yang baru dan mengkopikannya ke program asli Utama.exe, jadi Utama exe yang lama ditimpa
4. Update selesai, diberi sortcut untuk kembali membuka program Utama.exe.

Source code pada form Utama, menu Update adalah sbb

 ShellExecute(0,'open','update.exe','','',SW_NORMAL);

Source code pada program Update, tombol update adalah sbb


  if not KillApp('Utama') then
  begin
         ShowMessage('Update Gagal, karena program Utama tidak dapat diclose, silahkan program 
         Utama diclose secara manual') ;
         exit;
 end
 else
begin

    internetFile := 'http://contohupdate.com/Utama.exe';
    localFileName := 'C:\Program Files\Example\Utama.exe';

    if GetInetFile(internetFile, localFileName) then
    begin
      ShowMessage('Update Berhasil');
      ShellExecute(0,'open','Utama.exe','','',SW_MAXIMIZE);
      Application.Terminate;
    end
    else
      ShowMessage('Update Gagal, karena tidak berhasil download file Utama dari Server') ;

    close;
end;



function KillApp(const sCapt: PChar) : boolean;
  var AppHandle:THandle;
begin
  AppHandle:=FindWindow(Nil, sCapt) ;
  Result:=PostMessage(AppHandle, WM_QUIT, 0, 0) ;
end;



User merasa lebih nyaman dengan cara update seperti ini dibanding dia harus mengkopi-kopi file dari email atau langsung dari ftp. 

Cara tersebut juga bisa dikembangkan menjadi auto update, jadi memaksa user untuk mengupdate atau update otomatis jika ada upgrade version

Trik nya Program akan selalu mengecek update tan terakhir dulu via database, misalnya ada table lastversion, disitu diisikan versi terakhir dan setiap program kita release, lalu kita taruh konstanta yang merupakan versi di dalam program, konstanta versi tersebut dibanding dengan data last version, jika lebih tinggi lastversion maka munculkan dialog untuk update

salam








6 komentar:

Anonim mengatakan...

GetInetFile(internetFile, localFileName) => ini fungsi apa? juga ga ada di artikel..

tulisane ga jelas mas...
lebiha baik di tambah source code buat latihan, kasih ilmu jangan setengah setengah... males bacanya..

Anonim mengatakan...

tambah lagi...
coba buka link dibawah ini :

http://delphi.about.com/od/internetintranet/a/get_file_net.htm

lebih lengkap kaya nya bosss...

Admin mengatakan...

Saya minta maaf yah, sebelumnya
GetInetFile(internetFile, localFileName) adalah mengambil file dari ftp server. Jadi file updatetan kita letakan pada ftp server, pada saat klik update maka function GetInetFile(internetFile, localFileName)yang digunakan untuk mengkopi dari ftp server ke komputer kita

Admin mengatakan...

iya buat table dulu namanya bebas, itu yang mau kita backup

youga hartanto mengatakan...

kalau misalnya update pake jaringan lokal gimana mas? jadi file (.exe baru) di taruh di server lokal... kemudian ke pc client lewat LAN. mohon pencerahanya

Admin mengatakan...

Mas Youga : Silakan dibuat file sharing aja mas, jadi diserver file aplikasinya disharingkan, terus diclient tinggal dikonfigurasi, file aplikasi tersebut kalau sudah terbaca, tinggal dibuatkan sortcut ke desktop.

Kalau untuk skala LAN yang besar, file sharingnya direkomendasikan pakai linux yaitu samba, lebih stabil dan tahan virus, aplikasi juga bisa diupdate, walaupun user sedang menggunakannya

ada satu teknik lagi mas, untuk implementasi di WAN, yaitu dengan cloud, silakan dibaca link http://www.delphindo.com/search/label/Cloud%20Application%20dengan%20Delphi

Baca Juga