我想在同一个系统上多次安装同一个应用程序,例如两个用户使用两个不同的 Web 服务(每个用户都有自己的)。
在我的设置脚本中,我想根据用户的输入更改
AppID
andAppName
(例如,如果用户输入了“一” ,我的默认值AppName="Service App"
应该更改为)。AppName="Service App One"
以上更改应反映在“选择开始菜单文件夹”页面中。
如何捕获“选择开始菜单文件夹”和“选择目标位置”向导页面的下一个单击事件?这是验证用户输入所必需的。
我想在同一个系统上多次安装同一个应用程序,例如两个用户使用两个不同的 Web 服务(每个用户都有自己的)。
在我的设置脚本中,我想根据用户的输入更改AppID
and AppName
(例如,如果用户输入了“一” ,我的默认值AppName="Service App"
应该更改为)。AppName="Service App One"
以上更改应反映在“选择开始菜单文件夹”页面中。
如何捕获“选择开始菜单文件夹”和“选择目标位置”向导页面的下一个单击事件?这是验证用户输入所必需的。
AppID
可以包含{code...}
常量(请参阅 Inno Setup 文档),因此您可以自由添加自定义向导页面以输入属于AppID
. 我认为这样做没有意义AppName
,因为根据文档,它仅用于向导中的显示目的。
您应该在“选择目标位置”页面之前插入自定义输入页面,并尝试使用{code...}
常量DefaultDirName
,使用用户之前输入的值。
请参阅CodeDlg.iss
添加向导页面和NextButtonClick
处理程序的示例脚本。
这不是您问题的完整答案,但我想我还是会展示它。如果您喜欢脚本,则可以将其作为起点。
在我的脚本中,我希望版权年份 (AppCopyright) 反映当前年份(构建脚本时)。
我使用以下代码:
AppCopyright=2003-{code:TodayAsYYYY} © E.De.L.Com bvba
注意 {code:FunctionName}
在脚本末尾的 [code] 部分中,我有以下例程:
function TodayAsYYYY(param:string) : string;
begin
Result := GetDateTimeString('yyyy', #0, #0);
end;
function TodayAsYYYYMMDD(param:string) : string;
begin
Result := GetDateTimeString('yyyymmdd', #0, #0);
end;
正如我所说,这不是一个完整的答案。但是我每年可能会使用 1、2 周的 InnoSetup,所以我无法再为您提供帮助了。无论如何,希望它有所帮助。
嗨,感谢您在经过一番挣扎后回复,我找到了自己问题的答案,然后意识到我可能没有正确地提出问题。
所需的输出是在开始菜单下有两个单独安装的应用程序和它们自己的卸载程序,并认为更改 Appid 和 Appname 就可以了。
这就是我所做的
#define MyAppName "My Application"
[Setup]
DefaultDirName={pf}\Application\MyApp
DefaultGroupName={#MyAppName}
以上两个所需的编辑可以在自定义页面中使用以下
WizardForm.DirEdit.Text := 'for DefaultDirName' (Select Destination Location")
WizardForm.GroupEdit.Text:= 'DefaultGroupName'
WizardGroupValue 用于读取“选择开始菜单”的值
为了访问内置向导中的下一个事件,我使用了以下内容
//Validate Select Start Menu and Destination values
function NextButtonClick(CurPageID: Integer): Boolean;
var
ResultCode: Integer;
begin
case CurPageID of
wpSelectDir:
begin
//Do validation
end;
wpSelectProgramGroup:
begin
//Do validation
end;
end;
Result := True;
end;