Wix更新 - 如何重启我的服务,但没有其他应用程序正在使用我的DLL?

时间:2011-04-05 15:11:15

标签: windows wix windows-installer

我已经创建了一个安装程序,我不时地推出更新。仅供参考,我的程序有两部分:服务应用程序和DLL。其他一些客户端应用程序使用我的dll,我的服务应用程序不断运行。

因为一些客户端应用程序使用我的dll,如果我运行更新,重启管理器重启那些客户端应用程序,但我想确保它们不重启,所以我通过将MSIRESTARTMANAGERCONTROL设置为'禁用'来禁用重启管理器我的wix脚本。 因此,这可以防止其他客户端应用程序重新启动,这很棒。但它的副作用是我的服务应用程序在更新过程后也没有重新启动。

所以基本上我的问题是我想找到一种方法来阻止其他客户端应用程序重新启动,但我想确保我的服务在更新后重新启动。 你会推荐什么?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要对安装版本发出的MSI包进行后处理。您需要向ServiceControl表添加条目,以便Windows Installer在安装组件时停止服务,然后在安装新DLL后再次启动它。您还需要确保在InstallExecuteSequence表中安排StopServices和StartService操作。

您需要使用wirunsql.vbs工具运行相关的INSERT查询以添加必要的记录。