当我编译下面的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;
答案 0 :(得分:3)
所有BeforeInstall和AfterInstall函数必须没有返回值。
换句话说,它不能是function
,因为它不能返回任何东西;它取而代之的是procedure
。 (您可以从链接页面中的示例中看到它们都被声明为procedure
,并且其中没有一个在代码中包含Result
。)
(您链接的问题也是错误的,BTW。它显示procedure
的返回类型为Boolean
,这当然是不可能的。我怀疑它是否有效这是因为使用的Pascal解析器没有注意到返回值,因为声明中有procedure
。)
无论如何,你似乎正试图做错。如果msstdfmt.dll
与setup
一起发布,则应将其添加到设置了[Files]
和onlyifdoesntexist
标记的regserver
部分。如果它已经安装在用户的系统上,则它应该已经注册。
[Files]
Source: "msstdfmt.dll"; DestDir: "{sys}"; Flags: onlyifdoesntexist regserver