2010-04-06 61 views
0

使用Wix3,它确保正在安装的Windows服务依赖于已安装在目标计算机上的服务,但我需要它的微不足道做相反的事情 - 即作为我安装的一部分,我需要修改现有服务(即已安装在目标机器上)的服务依赖关系,以确保该服务依赖于我正在安装的服务。WiX - 将现有服务修改为依赖于我正在安装的服务

有没有简单的方法来使用WiX来做到这一点?或者我是否需要编写自定义操作?

编辑 - 该场景围绕MS Office Communications Server将向其分派消息的自定义Windows服务。一旦OCS配置为分派到该服务(并将其标记为关键服务),那么该服务必须启动并运行,以便启动OCS服务。所以我们需要依赖关系来确保我们的服务在OCS之前启动,并且通常在安装之后手动添加依赖关系。

我知道,它也让我不寒而栗。

非常感谢,

保罗

+0

这听起来像是微软在这个问题上搞错了。 :-)如果我要做一个这样的可扩展服务,我可以基本上注入后期绑定的依赖关系,那么我会使这些依赖关系的错误处理更加健壮。我讨厌让几个人自己注入我,然后我失败,如果其中一个失败。 但这听起来并不像你有更多的选择,然后去与你有什么和写一个自定义的行动来注册关系。 – 2010-04-07 13:35:22

回答

1

这是一个分量违反规则的形式,因为Windows安装程序仅适用于密钥文件创建服务,你会创建重复的组件来控制服务。

基本上你用属于一个不属于你自己的组件的属性顶起来。当写这个服务时,我猜测它对你的服务一无所知,所以它怎么可能依赖你的服务?

我真正要问的是你想解决什么问题?如果你真的必须在WiX/MSI中完成它,那么你最好使用自定义操作来调用服务控制管理器并添加依赖关系。如果安装服务决定撤销您的更改,请不要惊讶,因为它与它的配置方式不匹配。

+0

谢谢克里斯托弗。我期待着这样的答案。我已编辑添加一些澄清,但非常高兴,这是“答案”。欢呼 – 2010-04-07 08:05:59

+0

嗨克里斯托弗。我需要编写自定义操作来调用SCM。你可以添加一个代码示例吗? – Reflection 2015-02-27 00:55:08

+0

对不起,咨询以小时为单位。 – 2015-02-27 02:47:25