我的InnoSetup脚本在安装过程结束时打开一个网页(使用用户的默认浏览器):
[Run]
Filename: http://example.com; Flags: shellexec
但是,如果应用程序已存在,即用户正在安装新版本的程序,我希望不打开该网页。只应在初始安装后打开网页。 (我认为值得一提的是,安装显然包含AppID,并在安装文件旁边的注册表中输入值。)
谢谢你,一如既往 - Al C.
是的,这很容易用脚本编写。
写吧
[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;
如果用户选择将可执行文件安装到与上次不同的位置,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;
有关如何在IsUpgrade
部分中使用[Code]
的示例,请参阅
Excludes part of Code section if installation is update in Inno Setup
检查这是你的“AppId”包含一个左括号: Checking if installation is fresh or upgrade does not work when AppId contains a curly bracket