对安装类型/级别执行自定义操作



我们在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>

就是我们正在做的。当我们希望安装服务时,它可以工作,但当我们不安装服务

时,它会失败

您可以在自定义操作条件中使用Feature元素来确保是否安装了与自定义操作相关的文件。

例如,如果您在名为Feature_InstallSyncClient的功能下列出了与自定义操作相关的组件,那么您的自定义操作应该如下所示。

<Custom Action="InstallSyncClient" After="ConfigureInstallSyncClient">NOT (REMOVE ~= "ALL") AND ( &Feature_InstallSyncClient = 3)</Custom>

在本MSDN文档中查找有关这些条件的更多详细信息。

最新更新