我在WiX安装程序中有一个ServiceInstall组件,在该组件中,我需要根据传递到MSI的参数来启动自动或需求。

所以有问题的Xml元素是

<ServiceInstall Vital="yes"
     Name="My Windows Service"
     Type="ownProcess"
     Account="[SERVICEUSERDOMAIN]\[SERVICEUSERNAME]"
     DisplayName="My Service"
     Password="[SERVICEUSERPASSWORD]"
     Start="demand"
     Interactive="no"
     Description="Something interesting here"
     Id="Service"
     ErrorControl="ignore"></ServiceInstall>


WiX不允许对启动属性使用PArameter,因此Im坚持使用条件(例如,/

<Component Id="ServiceDemand"
                 Guid="{E204A71D-B0EB-4af0-96DB-9823605050C7}" >
        <Condition>SERVICESTART="demand"</Condition>
...


并使用“开始”的不同设置和“条件”来完全复制整个组件。

有人知道更优雅的解决方案吗?我不需要维护的两个组件,除了“开始”属性外,其他组件的功能完全相同。

最佳答案

ServiceInstall表中的“开始”字段未设置格式,因此使用属性输入的内容将不起作用。该链接提供了一些有用的建议,可能会帮助您:ServiceInstall - Start element。看起来发布者有同样的问题。他们提供的最喜欢的建议是创建一个在InstallServices操作之前运行的自定义操作,该操作将更改Service Install表中Start元素的值。

更新:修改了指向建议站点的链接。

08-18 15:42