Windows installer MSI:启动服务,除非用户选择重新启动计算机

Windows installer MSI:启动服务,除非用户选择重新启动计算机,windows-installer,custom-action,Windows Installer,Custom Action,我正在使用MSI安装程序来安装和启动服务。它可能会也可能不会替换正在使用的文件。安装完成后,会在安装结束时提示重新启动计算机 服务在第一次启动时会运行很长时间的初始化,这不需要通过关机来中断。我试图做的是阻止服务启动,直到知道安装完成,并且不会重新启动,例如:不需要重新启动或用户选择推迟重新启动 引导程序不是一个选项,所有这些都必须在MSI中实现 有人能告诉我,做这件事最好的方法是什么吗?我将给出一个务实但并不完美的答案。。。。Windows Installer实际上没有任何方法支持这一点,所以

我正在使用MSI安装程序来安装和启动服务。它可能会也可能不会替换正在使用的文件。安装完成后,会在安装结束时提示重新启动计算机

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

引导程序不是一个选项,所有这些都必须在MSI中实现


有人能告诉我,做这件事最好的方法是什么吗?

我将给出一个务实但并不完美的答案。。。。Windows Installer实际上没有任何方法支持这一点,所以只需有意请求重新启动,并且没有ServiceControl元素。只需将ServiceInstall设置为Auto,然后让重启来处理其余的事情

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

我唯一能想到的另一件事是在您的服务wcf端点中公开一个RPC mechansim,例如,让您的长时间运行的进程只在服务的第二次启动或第一次调用该RPC时发生。然后,如果不需要重新启动,则在安装程序结束时调用rpc执行自定义操作


我就是想不出任何方法可以在MSI中实现这一点。

这真的很重要吗?Windows难道不会关闭,服务启动也会被取消吗?如果没有一个引导者,我怀疑做你想做的事情是否容易。不过,也许可以选择使用计划任务延迟启动服务。