InnoSetup& Pascal - 即使成功编译后运行时也会出现类型不匹配错误
当我编译下面的代码时,它完成时没有错误,但是当我尝试运行安装文件时,我收到类型不匹配错误。谁能告诉我可能是什么原因造成的? (确切的错误消息是“运行时错误(1:66):类型不匹配。”)
[Setup]
DefaultDirName={code:AppDir}\MyApp
[Code]
function AppDir(Param: String): String;
var
Check: Integer;
begin
Check := GetWindowsVersion();
if Check = 6.0 then
Result := ExpandConstant('{userdocs}')
else
Result := ExpandConstant('{pf}');
end;
When I compile the code below, it completes without errors, but when I attempt to run the setup file I get a type mismatch error. Can anyone tell me what might be causing it? (exact error message is "Runtime Error (at 1:66): Type Mismatch.")
[Setup]
DefaultDirName={code:AppDir}\MyApp
[Code]
function AppDir(Param: String): String;
var
Check: Integer;
begin
Check := GetWindowsVersion();
if Check = 6.0 then
Result := ExpandConstant('{userdocs}')
else
Result := ExpandConstant('{pf}');
end;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
引用 Inno Setup 文档中的
GetWindowsVersion()
:您无法与浮点值进行比较,您需要提取版本号的部分,如下所示:
请注意,您永远不应该检查
VerMajor
是否相等,因为这对于较低或较低版本都会失败更高的 Windows 版本。始终使用<=
或>=
代替。Quoting from the Inno Setup documentation for
GetWindowsVersion()
:You can't compare with a floating point value, you need to extract the parts of the version number, like so:
Note that you should never check
VerMajor
for equality, as this would fail for either lower or higher Windows versions. Always use<=
or>=
instead.