当我使用INNO向导时,我得到一个* .iss文件,其中包含设置部分:
[Setup]
AppId={87E1AD40-F32B-4EF7-A2FF-5B508814068A}
<statements not included here}
然后我在代码部分添加一个过程,用于生成* .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;
如何格式化AppId以便S包含“87E1AD40-F32B-4EF7-A2FF-5B508814068A”[即S:=格式(??)]?
答案 0 :(得分:3)
如果要在代码中展开某些[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;