Visual studio 如何为服务搜索编写条件标记

Visual studio 如何为服务搜索编写条件标记,visual-studio,wix,windows-installer,Visual Studio,Wix,Windows Installer,我正在使用WIX为C#服务创建MSI安装程序。MSI执行3项任务: a) 将解决方案文件从bin复制到特定位置 b) 创建一个文件夹,服务在其中写入日志 c) 如果以前不存在该服务,请在机器上安装该服务 我想写一个条件来检查机器上是否已经安装了服务 这是注册表搜索: <Property Id="MYSERVICE"> <RegistrySearch Id="SERVICE_CHECK" Root="HKLM" Name="Install" Type="raw" Key="S

我正在使用WIX为C#服务创建MSI安装程序。MSI执行3项任务:

a) 将解决方案文件从bin复制到特定位置

b) 创建一个文件夹,服务在其中写入日志

c) 如果以前不存在该服务,请在机器上安装该服务

我想写一个条件来检查机器上是否已经安装了服务

这是注册表搜索:

<Property Id="MYSERVICE">
  <RegistrySearch Id="SERVICE_CHECK" Root="HKLM" Name="Install" Type="raw" Key="SYSTEM\CurrentControlSet\services\Service"/>
</Property>

以下是使用自定义操作安装服务的代码:

<Condition Message="service der already"><![CDATA[Installed OR (MYSERVICE <> Null)]]></Condition>
<InstallExecuteSequence>
  <Custom Action='CMDInstallService' Before='InstallFinalize'></Custom>
</InstallExecuteSequence>
Null]>

如何写入条件,该条件将检查服务是否存在,然后不执行任何操作,否则安装服务

如果服务是产品的一部分,将其分配给自己的功能将处理此问题

答案是,问题在于语法

语法应该是


不是服务是最佳答案。

升级元素将检查所安装产品的版本,但我正在尝试将服务作为产品(即MSI文件)安装的一部分进行安装。根据您的评论更新答案,建议您注意该服务只是安装程序的一部分,或者更确切地说,你的安装程序所做的不仅仅是安装服务,这将是对你文章的一个有益的编辑,这样其他人就不会犯我犯的同样的错误。我明白了。语法应该是,如果您将注释更改为答案,我将删除我的答案。很高兴你解决了你的问题。