【问题标题】:Write serial number to file using Inno Setup使用 Inno Setup 将序列号写入文件
【发布时间】:2014-11-10 07:38:46
【问题描述】:

我正在尝试让以下 Inno Setup 代码工作:

[Setup]
UserInfoPage=yes

[Code]
function CheckSerial(Serial: String): Boolean;
begin
  Result := true;
  SaveStringToFile('c:\Registration.txt', Serial, False);
end;

当文件路径为UserInfoPage 时,代码非常简单。但是,当我需要在我的应用程序旁边编写此文件时,它变得异常复杂。两者都没有:

WizardDirValue();

也没有

ExpandConstant('{app}');

工作。第一个调用太早时是空的,第二个甚至没有运行,我得到:

内部错误:试图扩展“app”常量 在初始化之前。

如何将Serial 值存储到需要驻留在应用程序旁边的文件(.exe 文件)中?

【问题讨论】:

    标签: windows installation inno-setup pascalscript


    【解决方案1】:

    您可以扩展{userinfoserial} 常量以获取用户在选择应用程序目录后触发的某些事件中在信息页面中输入的序列号,例如:

    [Setup]
    AppName=My Program
    AppVersion=1.5
    UserInfoPage=yes
    DefaultDirName={pf}\My Program
    
    [Code]
    function CheckSerial(Serial: String): Boolean;
    begin
      Result := True;
    end;
    
    procedure CurStepChanged(CurStep: TSetupStep);
    begin
      if CurStep = ssPostInstall then
      begin
        SaveStringToFile(ExpandConstant('{app}\Serial.txt'),
          ExpandConstant('{userinfoserial}'), False);
      end;
    end;
    

    【讨论】:

    • 我个人使用了AfterInstall: MyAfterInstall,但这是等价的。谢谢你的快速回答。
    • 我将AfterInstall 用于“文件特定” 操作,我觉得这更像是一个“设置范围” 操作,所以我'已经使用CurStepChanged,但这是一个品味问题。不客气!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2022-10-19
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多