根据用户输入更改AppID和AppName

时间:2010-01-04 13:13:57

标签: inno-setup

我想在同一个系统上多次安装同一个应用程序,例如两个用户使用两个不同的Web服务(每个都有自己的)。

  1. 在我的设置脚本中,我想根据用户的输入更改AppIDAppName(例如,我的默认AppName="Service App"应更改为{{1如果用户输入了“一个”)。

  2. 上述更改应反映在“选择开始菜单文件夹”页面中。

  3. 如何捕获“选择开始菜单文件夹”和“选择目标位置”向导页面的下一次单击事件?这是验证用户输入所必需的。

3 个答案:

答案 0 :(得分:3)

  1. AppID可以包含{code...}个常量(请参阅Inno Setup文档),因此您可以自由添加自定义向导页面以输入属于{{1 }}。我认为为AppID执行此操作并不合理,因为根据仅在向导中用于显示目的的文档。

  2. 您应该在“选择目标位置”页面之前插入自定义输入页面,并尝试使用AppName的{​​{1}}常量,使用用户之前输入的值。

  3. 请参阅{code...}示例脚本以添加向导页面和DefaultDirName处理程序。

答案 1 :(得分:2)

这不是你问题的完美答案,但我认为无论如何我都会表现出来。如果您使用脚本,可以将其作为起点。

在我的脚本中,我希望版权年(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;

正如我所说,这不是一个完整的答案。但我使用InnoSetup可能每年1周,所以我不能再帮助你了。无论如何,希望它有所帮助。

答案 2 :(得分:0)

非常感谢您在一些斗争后回复我找到了自己问题的答案,然后意识到我可能没有正确地提出这个问题。

所需的输出是在开始菜单下有两个单独安装的应用程序及其自己的卸载程序,并认为更改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;