2010-07-08 17 views
2

我InnoSetup腳本在安裝過程結束時打開一個網頁(用戶的默認瀏覽器):Can Inno安裝程序對新的安裝和更新有不同的響應嗎?

[Run] 
Filename: http://example.com; Flags: shellexec 

不過,我想在網頁如果應用程序已經被打開存在,即,如果用戶正在安裝該程序的新版本。網頁應該只有在首次安裝後打開。 (我想這是值得一提的是,安裝包括一個AppID,很明顯,在安裝文件旁邊的註冊表值進入)

感謝您一如既往 - 鋁C.

回答

6

是的,這很容易使用腳本。

只要寫

[Run] 
Filename: "http://example.com"; Flags: shellexec; Check: NotAnUpdate 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    if CurPageID = wpInstalling then 
    IsUpdate := FileExists(ExpandConstant('{app}\TheFileNameOfMyApp.exe')); 
end; 

function NotAnUpdate: Boolean; 
begin 
    result := not IsUpdate; 
end; 
+0

感謝您的超級快速回復!我發現 [代碼] 函數NotAnUpdate:Boolean; 開始 結果:= not FileExists(ExpandConstant('{app} \ app.exe')); 結束; 保持網頁不會打開 - 每一次。難道我做錯了什麼? – 2010-07-08 16:06:01

+0

對不起......不知道評論是未格式化的:-( – 2010-07-08 16:06:52

+0

@Al C:嗯......不應該,當然,你必須用你app的實際文件名替換「app.exe」 ,但是你知道,對嗎?但是,「{app}」是一個常量,它將自動被Program Files子文件夾的路徑所取代 – 2010-07-08 16:09:53

2

The answer by @AndreasRejbrand將無法​​正常工作,如果用戶選擇的可執行文件安裝到不同的位置比上一次。

您可以查詢特定的安裝程序,Inno Setup的註冊表項:

#define AppId "your-app-id" 
#define SetupReg "Software\Microsoft\Windows\CurrentVersion\Uninstall\" + AppId + "_is1" 
#define SetupAppPathReg "Inno Setup: App Path" 

[Setup] 
AppId={#AppId} 
... 

[Run] 
Filename: "https://www.example.com/"; Flags: shellexec; Check: not IsUpgrade 
... 
[Code] 

function IsUpgrade: Boolean; 
var S: string; 
begin 
    Result := 
     RegQueryStringValue(HKLM, '{#SetupReg}', '{#SetupAppPathReg}', S) or 
     RegQueryStringValue(HKCU, '{#SetupReg}', '{#SetupAppPathReg}', S); 
end; 
相關問題