in Tools

InnoSetup PrepareToInstall untuk menginstall dependensi aplikasi sebelum instalasi terjadi

Bingung? sama. haha.

Intinya ada aplikasi lama yang di-reborn, tapi sayangnya sourcenya nggak lengkap apalagi untuk instalasi dependensinya. Untung masih ada installer lama dan source aplikasi PHP-nya. Setelah aplikasi PHP selesai dikerjakan oleh kolega, yang diperlukan untuk finishing adalah membuat installer/updater. Tentu saja client bakal bingung kalau harus install aplikasi lama, kemudian install update ke-2 lalu install update yang paling baru lagi. Cukup rumit dan menjengkelkan.

Yowes, berhubung aplikasi ini installernya dibikin pake innoSetup jadi cukup beberapa kali googling ketemu dengan yang namanya PrepareToInstall dan beberapa fungsi lainnya. Karena PrepareToInstall masuk dengan logic yang saya perlukan, jadi menginstall file lama, lalu ditumpuk dengan yang baru. Kelemahan PrepareToInstall dia mengharuskan ekstraksi data ke temp yang memakan waktu tergantung ukuran filenya. Pengennya sih bisa ngasih loader gitu biar lebih cihuy, tapi udah keburu mepet karena sorenya mau diminta sama kastamer. Ini kodenya siapa tau ada yang mau meng-improve.

[code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
ResultCode: Integer;
begin
ExtractTemporaryFile('APLIKASI-LAMA.exe');
if Exec(ExpandConstant('{tmp}\APLIKASI-LAMA.exe'), 'quit', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
begin
msgbox('Berhasil Menginstall Update 01-01-2014', mbInformation, MB_OK);
end
else begin
msgbox('Gagal Menginstall Update 01-01-2014 : ' + SysErrorMessage(ResultCode), mbInformation, MB_OK);
end;
ExtractTemporaryFile('Update-21-04-2014.exe');
if Exec(ExpandConstant('{tmp}\Update-21-04-2014.exe'), 'quit', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
begin
msgbox('Berhasil Menginstall Update 21-04-2014', mbInformation, MB_OK);
end
else begin
msgbox('Gagal Menginstall Update-21-04-2014 : ' + SysErrorMessage(ResultCode), mbInformation, MB_OK);
end;
end;

Kalau untuk menginstall dependensi yang nggak harus ada dulu, seperti dotNetFramework pakai kode standar aja dengan [run]. Google cukup membantu anda :p

Write a Comment

Comment