inno-setup – 如何让Inno Setup检查文件是否不存在

前端之家收集整理的这篇文章主要介绍了inno-setup – 如何让Inno Setup检查文件是否不存在前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我编译下面的Inno Setup脚本时,它给了我一个错误(下面).我从 here借了代码,所以我不确定为什么它不能正常工作.
Line 136:
Column 10:
Invalid prototype for 'FileDoesNotExist'

第136行是函数FileDoesNotExist(file:string):Boolean;

[Run]
Filename: "{sys}\regsvr32.exe"; Parameters: "msstdfmt.dll"; WorkingDir: {app}\Pronto\Programs\; BeforeInstall: FileDoesNotExist(ExpandConstant('{sys}\msstdfmt.dll')); StatusMsg: "Registering Controls..."

[Code]
function FileDoesNotExist(file: string): Boolean;
begin
  if (FileExists(file)) then
    begin
      Result := False;
    end
  else
    begin
      Result := True;
    end;
end;

解决方法

Inno Setup documentation

All BeforeInstall and AfterInstall functions must not have a return value.

换句话说,它不能是一个功能,因为它不能返回任何东西;这是一个程序. (您可以从链接页面中的示例中看到它们都被声明为过程,并且它们都没有在代码中包含Result.)

(您链接的问题也是错误的,BTW.它显示了一个返回类型为布尔的过程,这当然是不可能的.我怀疑它是否有效,因为使用的Pascal解析器没有注意到由于声明中的过程而返回值.)

无论如何,看起来你正试图做错.如果msstdfmt.dll与您的设置一起分发,您应该将其添加到[Files]部分,并设置onlyifdoesntexist和regserver标志.如果它已经安装在用户的系统上,则应该已经注册了.

[Files]
Source: "msstdfmt.dll"; DestDir: "{sys}"; Flags: onlyifdoesntexist regserver
原文链接:https://www.f2er.com/delphi/453120.html

猜你在找的Delphi相关文章