2008年10月16日 星期四

Inno Setup 如何在安裝程式前,先檢查並關閉之前的程式

在建立Installer時,有可能user的程式因為還在執行,而Installer無法寫入。
底下是在Install時直接關閉前一個程式。

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var appWnd: HWND;
begin
if (CurStep = ssInstall) then
begin
appWnd := FindWindowByClassName('your class name');
if (appWnd <> 0) then
begin
PostMessage(appWnd, 18, 0, 0); // quit
end;
end;
end;

11 則留言:

奧利佛 提到...

請問如何在 "啟動" 建立捷徑啊?
謝謝

高橋旺 提到...

[Icons]
Name: "{commonstartup}\yourapp"; Filename: "{app}\yourapp.exe"; WorkingDir: {app};

高橋旺 提到...

我有將另外一種做法寫下來,參考一下吧.. :)

匿名 提到...

請問,
我製作出來的安奘檔,在檔案總管下看到的版本資訊為0.0.0.0,要怎麼改變這檔案版本資訊呢?
謝謝 !

高橋旺 提到...

在[Setup]裡多加底下設定值
VersionInfoVersion=1.2.3.4

Unknown 提到...

您好:

請問一下,貼上[code]之後無法使用,是因為還要設定甚麼參數嗎?

謝謝^^"

高橋旺 提到...

你要修改一下FindWindowByClassName的參數喔,確保可以找到你的程式handle。

FindWindow有兩種找法,分別是class name和windows name,使用class name的話,你可以用Visual Studio的Spy工具查主視窗class name是什麼,若是用windows name的話,找的則是視窗標題,但是有可能其他程式跟你是同樣名稱的。

Unknown 提到...

請問一下,怎麼才能在複製整個目錄??像我下面這行指令並不能複製整個目錄。有什麼辦法不需要一個一個子目錄去指令嗎??謝謝


Source: "C:\Program Files\Java\jdk1.6.0_14\*.*"; DestDir: "{app}\jdk1.6.0_14"

高橋旺 提到...

試試下面這段指令..

Source: "C:\Program Files\Java\jdk1.6.0_14\*"; DestDir: "{app}\jdk1.6.0_14"; Flags: ecursesubdirs

ballwarm 提到...

果然是高手,謝謝啦…

匿名 提到...

您好,請問一下,若是有兩個程式的 classname 相同,而 windowname 又會因使用者而隨時改變時,還有別的辦法可以判別兩個程式嗎?

LinkWithin

Related Posts with Thumbnails