【问题标题】:Change AppID using [Code] just before the installation in Inno Setup在 Inno Setup 中安装之前使用 [Code] 更改 AppID
【发布时间】:2013-04-06 22:27:00
【问题描述】:

在设置中,我为用户提供了使用单选按钮安装 32 位或 64 位版本的选项。

然后我想将“_32”或“_64”附加到 AppID。

我知道我可以使用脚本常量更改 AppID,但是在安装程序启动时会调用所需的函数。但此时单选按钮尚不存在,因此我收到错误“无法调用 proc”。

我查阅了 Inno Setup 帮助,并了解到您可以在安装过程开始之前的任何给定时间更改 AppID(如果我理解正确的话)。

那么我该如何做到这一点呢?

期待你的回答!

【问题讨论】:

    标签: constants inno-setup app-id


    【解决方案1】:

    某些指令值的某些{code:...} 函数被多次调用,AppId 就是其中之一。更具体地说,它被调用了两次。一次是在创建向导表单之前,一次是在安装开始之前。您可以做的只是检查您尝试从中获取值的复选框是否存在。您可以简单地询问它是否是Assigned,如下所示:

    [Setup]
    AppId={code:GetAppID}
    ...
    
    [Code]
    var  
      Ver32RadioButton: TNewRadioButton;
      Ver64RadioButton: TNewRadioButton;
    
    function GetAppID(const Value: string): string;
    var
      AppID: string;
    begin
      // check by using Assigned function, if the component you're trying to get a
      // value from exists; the Assigned will return False for the first time when
      // the GetAppID function will be called since even WizardForm not yet exists
      if Assigned(Ver32RadioButton) then
      begin
        AppID := 'FDFD4A34-4A4C-4795-9B0E-04E5AB0C374D';
        if Ver32RadioButton.Checked then
          Result := AppID + '_32'
        else
          Result := AppID + '_64';
      end;
    end;
    
    procedure InitializeWizard;
    var
      VerPage: TWizardPage;
    begin
      VerPage := CreateCustomPage(wpWelcome, 'Caption', 'Description');
      Ver32RadioButton := TNewRadioButton.Create(WizardForm);
      Ver32RadioButton.Parent := VerPage.Surface;
      Ver32RadioButton.Checked := True;
      Ver32RadioButton.Caption := 'Install 32-bit version';
      Ver64RadioButton := TNewRadioButton.Create(WizardForm);
      Ver64RadioButton.Parent := VerPage.Surface;
      Ver64RadioButton.Top := Ver32RadioButton.Top + Ver32RadioButton.Height + 4;
      Ver64RadioButton.Caption := 'Install 64-bit version';
    end;
    

    【讨论】:

    • 谢谢你,TLama!我真的不知道这一切,但你通过分享你的知识再次让我开心:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2011-03-31
    • 1970-01-01
    • 2013-11-04
    • 2016-02-19
    相关资源
    最近更新 更多