当我使用 INNO 向导时,我会得到一个 *.iss 文件,该文件包含在其设置部分:
[Setup]
AppId={87E1AD40-F32B-4EF7-A2FF-5B508814068A}
<statements not included here}
Run Code Online (Sandbox Code Playgroud)
然后我在代码部分添加一个过程,用于生成一个 *.ini 文件,用作我的应用程序的输入。代码部分包含以下内容:
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
// Purpose: write an *.ini file
// Used as input to the program to be executed
var
S: string;
begin
if CurStep = ssPostInstall then
begin
//* Output language entered
S := Format('[%s]'+#13#10, ['LANGUAGE']);
SaveStringToFile(ExpandConstant('{app}\UserInputs.ini'), S, False);
S := Format('language = %s'+#13#10, [ActiveLanguage]);
SaveStringToFile(ExpandConstant('{app}\UserInputs.ini'), S, True);
<code not included here>
//* Output AppId code generated by INNO
S := Format('[%s]'+#13#10, ['REGISTRATION']); // key word
SaveStringToFile(ExpandConstant('{app}\UserInputs.ini'), S, True);
// S := Format(??)
//SaveStringToFile(ExpandConstant('{app}\UserInputs.ini'), S, True);
end;
end;
Run Code Online (Sandbox Code Playgroud)
如何格式化 AppId 以便 S 将包含“87E1AD40-F32B-4EF7-A2FF-5B508814068A”[即,S := Format(??)]?
如果要扩展[Setup]代码中的某些部分设置,可以使用SetupSetting预处理器功能。在您的问题中,您提到您想要获取AppId指令值,您已将其设置为包含{}字符的 GUID 值,您希望在输出中去除这些字符。以下脚本显示了如何获取AppId指令值以及如何仅复制没有那些封闭{}字符的部分:
[Setup]
AppId={{87E1AD40-F32B-4EF7-A2FF-5B508814068A}
AppName=My Program
AppVersion=1.5
DefaultDirName=My Program
[Code]
procedure InitializeWizard;
var
S: string;
begin
S := '{#SetupSetting("AppId")}';
S := Copy(S, 3, Length(S) - 3);
MsgBox(S, mbInformation, MB_OK);
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |