2010-11-19 134 views
1

是否有可能/建议使用InstallService元素来安装用托管代码(C#)编写的Windows服务? (我试了一下,它并安装该服务,但该服务将无法启动)如何从WiX安装托管服务?

或者,这确实需要它调用Installutil自定义操作?

或者有另一种方式做到这一点?

回答

3

我现在正在研究wix自己,刚刚成功地使用标准的ServiceInstall/ServiceControl方式安装/卸载托管服务(并且为什么不使用sc呢)。 从我阅读并同意,使用自定义任务与installutil是considered a bad practice: 我曾经在我的.NET安装程序安装Perf Counters的,但现在我只是去wix way for it

通过我不得不添加的ServiceControl元素,以便服务已安装(start属性)后开始,更重要的是对我来说,卸载(删除属性)中彻底卸载的方式。

<ServiceControl Id='ControlStansWinService' Remove='both' Name='StansWinService' Start='install' Stop='both' Wait='yes' /> 

我已经发表迄今为止的发现here,希望你能找到它有用。

+0

你是对的,这是可以使用托管服务<的ServiceControl>标签,不需要调用InstallUtil。 我的特定服务在安装程序类中有一堆定制,我不得不移动到MSI,但事实证明这是可行的。例如添加事件日志源。 – Max 2010-11-24 18:36:17

+0

非常感谢。你救了我的一天:) – 2013-12-06 11:34:42

0

因为它安装的服务以及启动和停止/上安装和卸载删除服务的各项工作,您应该使用WIX InstallService元素。如果使用自定义操作调用InstallUtil来安装服务器,则必须使用CustomAction手动再次启动和停止服务。

+0

你是对的,看到我下面的评论。谢谢! – Max 2010-11-24 18:37:37