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

Inno Setup中[Registry]段使用多个Check函数编译报错咨询

Inno Setup [Registry]段使用多个Check函数的正确方法

你的代码编译报错的核心原因是:Inno Setup的Check参数要求传入布尔表达式,不能直接用空格分隔多个检查函数,必须通过逻辑运算符(and/or)组合条件,同时自定义函数调用要符合语法规范。

下面提供两种可行的解决方案:

方案1:直接用逻辑运算符组合条件

直接在Check参数里用and连接自定义函数IsNewInstall()和内置变量IsWin64(注意自定义函数调用需加括号),修改后的代码如下:

Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
  ValueType: dword; ValueName: "ReuseCong"; ValueData: "{code:ReuseCongregation}"; \
  Flags: uninsdeletevalue; Check: IsNewInstall() and IsWin64
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
  ValueType: dword; ValueName: "Duplicate"; ValueData: "{code:Duplicate}"; \
  Flags: uninsdeletevalue; Check: IsNewInstall() and IsWin64
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
  ValueType: dword; ValueName: "Language"; ValueData: "{code:DatabaseLanguage}"; \
  Flags: uninsdeletevalue; Check: IsNewInstall() and IsWin64

方案2:封装新的组合检查函数

如果后续需要添加更多检查条件,或者希望代码更易维护,可以在[Code]段新增一个组合函数,把多个检查逻辑封装进去:

首先在[Code]段添加:

function IsNewInstallAndWin64(): Boolean;
begin
  Result := IsNewInstall() and IsWin64;
end;

然后修改[Registry]段的Check参数,直接调用这个新函数:

Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
  ValueType: dword; ValueName: "ReuseCong"; ValueData: "{code:ReuseCongregation}"; \
  Flags: uninsdeletevalue; Check: IsNewInstallAndWin64
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
  ValueType: dword; ValueName: "Duplicate"; ValueData: "{code:Duplicate}"; \
  Flags: uninsdeletevalue; Check: IsNewInstallAndWin64
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
  ValueType: dword; ValueName: "Language"; ValueData: "{code:DatabaseLanguage}"; \
  Flags: uninsdeletevalue; Check: IsNewInstallAndWin64

两种方案都能解决编译报错问题,可根据实际需求选择:方案1更简洁,适合少量条件;方案2扩展性更强,适合多条件或复用场景。

内容的提问来源于stack exchange,提问作者Andrew Truckle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:50:31