You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup [INI]段含下划线的键值无法更新问题求助

Inno Setup 6.2.1 [INI]段含下划线Key无法更新的解决方案

问题重现

在[INI]段配置如下条目时:

Filename: "{code:GetIniPath}\REHEV.INI"; Section: "WIDTH"; Key: "MIS_RISHUI"; \
    String: "10"; Flags: createkeyifdoesntexist

安装程序日志会输出:

Skipping updating the .INI file, only updating uninstall log.

但将Key改为无下划线的MISRISHUI时,INI文件能正常更新。

解决方法

由于Inno Setup的[INI]段自动处理逻辑对含下划线的键名存在匹配异常,建议改用[Code]段手动写入INI键值,完全规避该问题:

  1. 移除[INI]段中对应的条目
  2. 在脚本的[Code]段添加以下代码:
procedure CurStepChanged(CurStep: TSetupStep);
var
  IniFilePath: String;
begin
  // 选择在安装完成后执行,与[INI]段执行时机一致
  if CurStep = ssPostInstall then
  begin
    // 解析INI文件路径
    IniFilePath := ExpandConstant('{code:GetIniPath}\REHEV.INI');
    
    // 写入单个含下划线的键值
    WriteIniString('WIDTH', 'MIS_RISHUI', '10', IniFilePath);
    
    // 批量处理其他含下划线的键,重复调用WriteIniString即可
    // 示例:
    // WriteIniString('WIDTH', 'USER_ROLE', 'admin', IniFilePath);
    // WriteIniString('SETTINGS', 'AUTO_SAVE', '1', IniFilePath);
  end;
end;

说明

  • WriteIniString函数完全支持包含下划线、特殊字符的键名,不受[INI]段的限制
  • ssPostInstall确保写入操作在安装流程的后期执行,和[INI]段的默认执行时机匹配
  • 批量处理时只需重复调用WriteIniString,传入对应段名、键名、值和文件路径即可

内容的提问来源于stack exchange,提问作者Lena Gavrilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:35:25