gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:24:05 24 4
gpt4 key购买 nike

当我编译下面的 Inno Setup 脚本时,它给了我一个错误(如下)。我从 here 借用了代码所以我不确定为什么它不能正常工作。

Line 136:
Column 10:
Invalid prototype for 'FileDoesNotExist'

第 136 行是 function 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.



换句话说,它不能是 function ,因为它不能返回任何东西;这是一个 procedure反而。 (您可以从链接页面中的示例中看到,它们都声明为 procedure ,并且它们的代码中都不包含 Result。)

(你链接的问题也是错误的,顺便说一句。它显示了一个 procedure 的返回类型为 Boolean ,这当然是不可能的。我怀疑如果它有效,那是因为使用的 Pascal 解析器没有由于声明中的 procedure,没有注意到返回值。)

无论如何,您似乎都在尝试做错。如 msstdfmt.dll正在与您的 setup 一起分发,您应该将其添加到 [Files]部分与 onlyifdoesntexistregserver标志设置。如果它已经安装在用户的系统上,它应该已经被注册。
[Files]
Source: "msstdfmt.dll"; DestDir: "{sys}"; Flags: onlyifdoesntexist regserver

关于inno-setup - 如何让 Inno Setup 检查文件是否不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com