加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:11:05 所属栏目:大数据 来源:网络整理
导读:当我编译下面的Inno Setup脚本时,它给了我一个错误(下面).我从 here借了代码,所以我不确定为什么它不能正常工作. Line 136:Column 10:Invalid prototype for 'FileDoesNotExist' 第136行是函数FileDoesNotExist(file:string):Boolean; [Run]Filename: "{sy
当我编译下面的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}ProntoPrograms; 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读