Inno Setup安装时如何在生成的INI文件中添加空行?
在Inno Setup中生成带空行的INI文件
Inno Setup的内置[INI]段无法直接在配置项之间插入空行,要实现你要的格式化效果,得通过Pascal脚本手动处理INI文件,以下是两种可行方案:
方案1:手动构建带空行的INI内容并写入
直接在安装完成后拼接包含空行的INI内容,写入目标文件:
procedure CurStepChanged(CurStep: TSetupStep); var IniPath: String; IniContent: String; SrcDrive: String; begin if CurStep = ssPostInstall then begin IniPath := ExpandConstant('{app}\game.ini'); SrcDrive := ExpandConstant('{drive:{src}}'); // 拼接带空行的INI内容,#13#10对应Windows换行符,连续两个就是空行 IniContent := '[Nancy Data]' + #13#10 + #13#10 + 'CDDrive1=' + SrcDrive + #13#10 + 'CDDrive2=' + SrcDrive + #13#10 + 'HDDrive=' + SrcDrive + #13#10 + #13#10 + 'IDPath=' + ExpandConstant('{app}\Нэнси Дрю. Секреты могут убивать') + #13#10 + 'HDVideoPath=' + ExpandConstant('{app}\Нэнси Дрю. Секреты могут убивать\HDVideo\') + #13#10; // 写入文件,最后一个参数是编码,按需调整 SaveStringToFile(IniPath, IniContent, False, CP_OEMCP); end; end;
说明
ssPostInstall阶段确保在所有安装操作完成后执行#13#10是Windows系统的换行符,连续两个就会生成空行- 如果需要保留原有INI文件的其他内容,这种方法需要把所有配置项都手动拼接进去
方案2:用[INI]段生成后再插入空行
如果已经通过[INI]段生成了基础配置,只想补加空行,可以读取文件内容后修改:
procedure CurStepChanged(CurStep: TSetupStep); var IniPath: String; Lines: TStringList; I: Integer; TargetKey: String; begin if CurStep = ssPostInstall then begin IniPath := ExpandConstant('{app}\game.ini'); TargetKey := 'HDDrive=' + ExpandConstant('{drive:{src}}'); Lines := TStringList.Create; try Lines.LoadFromFile(IniPath); // 从后往前遍历,找到目标键后插入空行 for I := Lines.Count - 1 downto 0 do begin if Lines[I] = TargetKey then begin Lines.Insert(I + 1, ''); // 插入空行 Break; end; end; // 保存修改后的文件 Lines.SaveToFile(IniPath); finally Lines.Free; // 释放资源 end; end; end;
说明
- 用
TStringList读取INI文件的每一行,找到指定键的行后,在下方插入空字符串(即空行) - 从后往前遍历可以避免插入行后影响后续索引的问题
关于Format函数的说明
你找到的Format函数主要用于格式化单个字符串(比如把变量嵌入模板),它没法直接用来给INI文件的配置项之间添加空行,因为[INI]段生成内容时会自动忽略手动添加的空行,必须通过脚本直接操作文件内容才能实现需求。
内容的提问来源于stack exchange,提问作者livingsamurai
相关产品推荐
相关产品推荐

