每个人,我使用Wix制作安装程序来运行服务,下面是我的问题:
我使用自定义操作来调用sc.exe来安装和启动服务,然后我使用自定义操作来调用sc.exe [停止/删除]以在卸载时删除该服务。除了消息框说
之外,这种方法很好"The setup must update files or services that cannot be updated while the system is running, if you choose to continue, a reboot will be required to complete the setup"
但事实上,在我点击"确定"后,没有重启,并且服务已成功卸载,我该如何摆脱此消息框?
另一个问题是,点击" OK"在消息框中,将弹出另一个消息框并告诉我"另一个程序具有对文件[fileA]的独占访问权限,请单击重试",然后在我单击重试后,卸载成功完成。 [fileA]已被删除,但另一个文件[fildB]被遗忘。
但我确实使用了一个组件:
<Component
<RemoveFile ..
<RemoveFile ...
</Component>
删除这些文件。我有
<Custom Action="StopService" Before="RemoveFiles">..
<Custom Action="RemoveService" After="StopService>..
在我的wix中。 有人有什么建议吗?
答案 0 :(得分:0)
似乎服务可能实际上没有关闭,当Windows试图删除它或处理或处理仍然打开它可能是因为它的提示按钮框需要重新启动删除。 />
如果有进程/句柄打开,Windows无法卸载服务
在重新启动后的当前场景中,我猜它会删除剩余的文件
尝试在自定义操作中提供等待以停止和删除服务在返回标记中提供 asyncWait 。
它可能会解决您的问题
您正在使用SC.exe来控制服务。自定义操作而不是这个我建议你使用WIX ServiceControl 元素。
答案 1 :(得分:0)
尝试在成本计算标准操作之前移动StopService和RemoveService自定义操作,这是Windows Installer分析以查看正在使用的资源的位置,并决定是否将提示用户使用上述消息框。