MSI:除非用户选择重启机器,否则启动服务

时间:2010-08-04 21:53:36

标签: windows-installer custom-action

我正在使用安装和启动服务的MSI安装程序。它可能会也可能不会替换正在使用的文件。如果是这样,则会在安装结束时提示重启计算机。

服务在第一次启动时运行冗长的初始化,不希望通过关闭中断。我要做的是阻止服务启动,直到知道安装完成,并且不会重启,例如:不需要重启或用户选择推迟重启。

Bootstrapper不是一个选项,所有都必须在MSI中实现

有人可以告诉我,这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

我将提供一个实用但不完美的答案.... Windows Installer实际上没有任何方法来支持这一点,所以只是故意请求重启并且没有ServiceControl元素。只需将ServiceInstall设置为Auto,然后重新启动即可完成剩下的任务。

我知道,我通常会尽量避免重新启动,但如果你经常需要一个好的,那么这只会让你的整个故事变得更简单。

我唯一能想到的另一件事就是在你的服务中暴露一个RPC mechansim(例如wcf端点),并且你的长时间运行过程只发生在服务的第二次启动或者当rpc是第一次调用。然后在安装程序结束时自定义操作,如果不需要重新启动,则调用rpc。

我想不出有任何办法在MSI中本地完成。