Inno Setup 在安裝程序開始前和卸載程序開始前,檢查並關閉運行的進程


 

(2011-12-29 11:54:56)
標簽:

innosetup

it

分類: 開發工具經驗累積
Inno Setup在安裝程序前,如果有使用的進程在運行,會有錯誤提示,而使得Installer無法寫入。
同樣,在卸載程序前,如果有使用的進程仍在運行,會有錯誤提示,之后卸載不干凈,需要手動清除。
 
所以,只要在安裝程序前或者卸載程序前,檢查並關閉掉用到的正在運行的進程,就沒有問題啦。
 
[code]
// 安裝前檢查關閉**進程
procedure CurStepChanged(CurStep: TSetupStep);
var appWnd: HWND;
begin
  if CurStep = ssInstall then
  begin
     // 檢查××進程是否在運行,是則關閉進程
     appWnd := FindWindowByWindowName('進程窗口名稱');
     if (appWnd <> 0) then
     begin
        PostMessage(appWnd, 18, 0, 0);       // quit
     end;
  end;
end;
 
// 卸載前檢查關閉**進程
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var appWnd: HWND;
begin
   // 檢查**進程是否在運行,是則關閉進程
   appWnd := FindWindowByWindowName('進程窗口名稱');
   if (appWnd <> 0) then
   begin
      PostMessage(appWnd, 18, 0, 0);       // quit
   end;
end;
 
其中,Pascal提供了兩個函數用於查找進程窗口: FindWindowByClassNameFindWindowByWindowName,前者是根據類名,后者是根據窗口名,查找與之匹配的頂層窗口句柄。
可以開啟進程,然后使用spy++工具,獲取進程對應的窗口名或類名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM