0

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

是我们正在做的事情。它在我们想要安装服务时工作,但在我们不安装服务时失败

4

1 回答 1

0

您可以使用Feature自定义操作条件中的元素来确保安装或不安装自定义操作相关文件。

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

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

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

于 2013-07-03T06:03:48.617 回答