我们在WIX中构建了一个安装程序。安装采用两种不同的路径,其中一种包括服务安装。
该服务是用Topshelf编写的,因此我们需要使用自定义操作来安装它。我们无法弄清楚如何做只是在特定的安装类型或级别上执行自定义操作。
<CustomAction Id="ConfigureInstallSyncClient" Property="InstallSyncClient" Value='"[InstallDirectory]Sync.Client.WindowsService.exe" install' Execute="immediate"/>
<CustomAction Id="InstallSyncClient" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/>
<InstallExecuteSequence>
<Custom Action="ConfigureInstallSyncClient" Before="StartServices">NOT (REMOVE ~= "ALL")</Custom>
<Custom Action="InstallSyncClient" After="ConfigureInstallSyncClient">NOT (REMOVE ~= "ALL")</Custom>
</InstallExecuteSequence>
我们正在做什么。它在我们希望安装服务时有效,但在我们没有安装服务时失败
答案 0 :(得分:0)
您可以使用自定义操作条件中的Feature
元素来确保是否安装了与自定义操作相关的文件。
例如,如果您在名为Feature_InstallSyncClient
的功能下列出了与自定义操作相关的组件,那么您的自定义操作应如下所示。
<Custom Action="InstallSyncClient" After="ConfigureInstallSyncClient">NOT (REMOVE ~= "ALL") AND ( &Feature_InstallSyncClient = 3)</Custom>
在this MSDN document中找到有关这些条件的更多详细信息。