我在 Delphi 中制作了一个简单的安装程序应用程序,没什么花哨的。基本上我将文件包含到 Exe 中,然后将它们解压到用户指定的路径。
然而,我偶然发现了一个问题,我注意到这适用于任何 Windows 可执行文件,无论它是否是安装程序。
如果一个 Exe 被命名,或者在文件名中包含以下单词,“Setup”、“Build”、“Install”,也许还有其他单词,那么......每当应用程序运行和关闭时,Windows 都会弹出一个“产品兼容性助手”对话框,说应用程序可能没有正确安装。
这是一个问题,因为即使我的安装程序中的文件实际上已提取,并且在我看来安装程序已完成其工作,Windows 仍在抱怨它。
我对此的唯一想法是 Windows 必须在执行时检查应用程序的文件名,在本例中已将其识别为安装程序。然后 Windows 必须在系统上设置一个标志或其他内容,然后我的安装程序必须更新此标志以表示安装成功?
从 IDE 调试时,Windows 不会抱怨这一点,因此它不能与代码相关,它必须是操作系统 - 这仅在从 Windows 启动应用程序时发生,而不是 Delphi。
您可以轻松尝试此操作,创建一个应用程序或将其重命名为Setup.exe,运行它然后关闭它 - 等待几秒钟,将显示“产品兼容性助手”对话框。
我不知道从哪里开始调查如何停止此对话框,也不知道在哪里可以设置告诉 Windows 安装程序已正确完成。
感谢您的想法和解决方案,谢谢。
如果我没记错的话,当您的安装应用程序不包含应用程序清单时,就会发生这种情况。引入 UAC 后,MS 为安装人员引入了启发式检测并显示 UAC 提升对话框。启发式检查诸如 setup.exe、install.exe 之类的名称。简单的解决方案是包含应用程序清单。如果它是一个安装程序,您可能想使用requireAdministrator
环境。
该功能称为安装者检测,并进行了讨论here http://technet.microsoft.com/en-US/library/00d04415-2b2f-422c-b70e-b18ff918c281.aspx.
无论如何,我总是会使用专用安装工具(例如 InnoSetup)构建安装程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)