我使用Wix3.11创建了MSI。我已经对安装程序进行了一些定制,以便在自定义文件夹中安装应用程序。我也写安装路径到注册表值下的HKLM\软件。
我正在读取一个用例的批处理文件中的注册表值。
安装成功,应用程序运行良好。
但是在卸载的时候,我面临以下问题-
卸载窗口会弹出消息-在继续安装之前,应该关闭以下应用程序: MyApplication
在卸载日志时,删除服务,我看到下面的错误-错误1722。此Windows Installer程序包存在问题。作为安装的一部分运行的程序没有按预期完成。请与您的支持人员或软件包供应商联系。
如果我手动删除该服务,则不会看到任何错误,而且该服务将被删除。不知道为什么卸载失败。
请把这件事弄清楚。
发布于 2018-08-07 20:51:00
卸载之前的停止服务:在编译的中,ServiceControl table中有哪些条目?您需要在删除该服务的可执行文件之前停止它。请参阅链接到下面的WiX服务安装示例。
file :您也可能有一个自定义操作,它尝试运行一个批处理文件,该批处理文件在尝试运行时已经卸载。This can be a custom action that should not run on uninstall (conditioning is wrong), or you have sequenced it incorrectly so the batch file is gone from disk - courtesy of the uninstall - before the custom action can run successfully.您需要更好地移动安装/取消安装顺序或条件中的自定义操作,这样它就不会在卸载时运行。这两个问题都很常见。请注意,通常情况下,无法为自定义操作设置条件,使它们意外地运行。通常情况下,它们在重大升级期间运行,但安装时却不尽如人意。
批处理文件CA:对于它的价值和无意冒犯:在自定义操作中使用批处理文件是一种MSI反模式。基本上没有错误处理,因此没有从错误条件中进行管理和恢复。一般不支持MSI回滚。在我看来,C++自定义操作是最好的(最小的依赖性、良好的可调试性、功能齐全的语言、庞大的自下而上的API)。就这样被提到了。这完全取决于你的发行量有多大。对于内部应用程序,我们可以逃脱更多的真正的全球包分发。这与the complexity of deployment有关(请参阅页面下面的部分)。错误来源太多了。
WiX Service Installation:也许可以看到来自Rainer :WiXSamples - github.com/rstropek的WiX标记示例。请查一下ServiceControl element。
公共MSI问题:我不喜欢“推销”这个内容。从本质上说,这是你在书中很难找到的东西--而且是有充分理由的。一些经验法则和观点以一种混乱的形式存在,但如果你想检验它的话:How do I avoid common design flaws in my WiX / MSI deployment solution?只是诚实的意见和实际的建议--没有所谓的“正确”,但它应该有助于设置可靠性。但愿能去。
https://stackoverflow.com/questions/51732481
复制相似问题