当我编译下面的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