【发布时间】:2015-09-12 22:37:03
【问题描述】:
在 Windows 10 上运行由 Innosetup 制作的安装程序时出现 en 错误。它在 Windows 8/8.1 上运行良好,但在 Windows 10 上,它会在消息框中弹出如下所示的弹出窗口,最后带有“关闭程序” .
应用程序名称已停止工作 "问题导致程序停止正常工作。windows 将关闭程序并在有解决方案时通知您"
然而,在点击“关闭程序”时,安装程序会执行此操作,但这个烦人的弹出窗口会导致问题,因为用户必须干预才能关闭该框消息。
有没有办法找出错误发生的原因以及任何错误代码/消息?
我调试了代码,发现这行报错了:
Exec('cmd.exe', ' /C My-Application.EXE /argument' + ' > logFile.txt',
ExpandConstant('{tmp}\'), SW_HIDE, ewWaitUntilTerminated, FW_Update_ResultCode);
【问题讨论】:
-
有没有可能,不是 Inno 导致了这个问题,而是你试图运行的 exe?换句话说:
My-Application.EXE独立执行时是否正常运行? -
是的,当我运行此命令时: /C My-Application.EXE /argument' + ' > logFile.txt' 在命令提示符下,无论是否有管理员,如下所示:My-Application.EXE /argument > logFile.txt ,它可以正常工作而没有错误,但当我使用上面的 Exec 从 inno 代码中调用它时就不行了。
-
当您的应用程序从其自己的文件夹以外的其他位置运行时,您的应用程序是否可以正常运行?您已经告诉 Inno 将工作文件夹设置为上面的
{tmp}。此外,您的应用程序可能会尝试加载用户计算机上不存在的库或其他资源。 -
@Miral 感谢您的提示和 id 成功了。我在工具中修复了一些问题,需要它使用我忘记放在 ExtractTemporaryFile("dll-name") 下的额外 dll 和这就是它没有被复制到 tmp 文件夹并因此导致问题的原因。但我仍然认为 innosetup 应该给出编译器警告或异常,例如“找不到 dll 名称文件”之类的。无论如何,如果你把你的在框中回答,我会接受它作为正确答案!非常感谢。:)
标签: cmd exec inno-setup pascal silent-installer