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

Inno Setup编译报错:调用IsDotNetInstalled时参数数量无效【已解决】

Inno Setup编译报错:Invalid number of parameters 解决方法

报错详情

  • 报错代码行:if not IsDotNetInstalled() then
  • 错误提示:

Invalid number of parameters

问题原因及解决步骤

1. 直接报错原因:无参函数调用语法错误

Inno Setup的Pascal脚本规定,无参数的函数在调用时不能添加括号。你定义的IsDotNetInstalled是无参函数,但调用时写了IsDotNetInstalled(),违反语法规范导致编译报错。

修正方法:将调用处的括号去掉,改为:

if not IsDotNetInstalled then

2. 额外问题:.NET 9.0检测逻辑错误

你原代码中检测的是.NET Framework 4.x的注册表路径,但.NET 5及以后版本(包括9.0)属于.NET Core/.NET 5+系列,注册表位置完全不同,原代码无法正确检测到.NET 9.0运行时。需要修正注册表检测路径。

完整修正代码

[Code]
var
  ResultCode: Integer;

procedure InitializeSetup();
begin
  // 安装前检查.NET 9.0是否已安装
  if not IsDotNetInstalled then
  begin
    MsgBox('缺少必需的.NET 9.0运行时,现在开始安装...', mbInformation, MB_OK);
    
    // 从临时目录运行.NET安装程序
    if not Exec(ExpandConstant('{tmp}\dotnet-runtime-9.0.2-win-x64.exe'), '', '', SW_SHOWNORMAL, ewWait, ResultCode) then
    begin
      MsgBox('.NET运行时安装失败,错误代码:' + IntToStr(ResultCode), mbError, MB_OK);
      Abort; // 如果.NET 9.0未安装则终止安装
    end;
  end;
end;

function IsDotNetInstalled(): Boolean;
var
  version: String;
begin
  Result := False;
  
  // 检测64位.NET 9.0运行时
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 
      'SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App', 
      'Version', version) then
  begin
    try
      // 提取主版本号进行比较(例如从9.0.2中提取9.0)
      if StrToFloat(Copy(version, 1, 3)) >= 9.0 then  
        Result := True;
    except
      Result := False;
    end;
  end;
  
  // 如果64位未检测到,尝试检测32位版本
  if not Result then
  begin
    if RegQueryStringValue(HKEY_LOCAL_MACHINE, 
        'SOFTWARE\dotnet\Setup\InstalledVersions\x86\sharedfx\Microsoft.NETCore.App', 
        'Version', version) then
    begin
      try
        if StrToFloat(Copy(version, 1, 3)) >= 9.0 then  
          Result := True;
      except
        Result := False;
      end;
    end;
  end;
end;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:27:33