InnoSetup覆蓋安裝的時候可能會由於源程序正在運行而安裝失敗,如下腳本可以關閉原運行進程。app
[code]
// 安裝前檢查關閉**進程
function InitializeSetup():Boolean;
//進程ID
var appWnd: HWND;
begin
Result := true;
//Log('Checking If Running...');
//根據窗體名字獲取進程ID
appWnd := FindWindowByWindowName('IE Scavenger');
if (appWnd <> 0) then
//進程存在,關閉
begin
//Log('Is Runing...');
//給進程發送關閉消息
PostMessage(appWnd, 18, 0, 0); // quit
end else
//進程不存在
begin
//Log('Not Runing...');
end;
end; 函數
InitializeSetup 函數在安裝程序初始化時調用,返回 False 中斷安裝,返回 True 反之。 ui
FindWindowByWindowName 獲取窗口名與指定字串匹配的頂層窗口的句柄。這個函數不搜索子窗口 ,且不執行區分大小寫搜索。若是沒有找到窗口則返回 0。 spa
運行流程就是根據窗口名獲取正在運行的程序,若是已經運行則強制關閉。相應的卸載的時候若是須要先關閉程序,能夠調用編寫InitializeUninstall函數,關閉源程序。這種是無痛關閉,沒有任何提示。你能夠本身添加提示,引導用戶進行操做。 code