WIX 中功能的自定义操作

Posted

技术标签:

【中文标题】WIX 中功能的自定义操作【英文标题】:Custom Action for Feature in WIX 【发布时间】:2018-02-27 12:35:00 【问题描述】:

我正在尝试通过我的安装执行一个 EXE 文件,如果相关功能将安装在功能树中,则应该安装此文件。 我有两个问题:

1-如何将自定义操作与此功能相关联。“条件”

2- 如何在生成的文件中包含这个 exe 文件。 “这个 EXE 文件是我已经在 WIX BOOTSTRAPPER 中进行的 SQL 安装”

http://apprize.info/web/wix/13.html

我的代码是

<Feature Id="SubFeature1" Title="SQL Installation" Level="1" >
    <ComponentRef Id="SubComponent1"/>
  </Feature>
  <Feature Id="SubFeature2" Title="Second Subfeature" Level="1" >
    <ComponentRef Id="SubComponent2"/>
    <!-- <Condition Level="0">IISMAJORVERSION=""</Condition>    -->
  </Feature>
</Feature>


<CustomAction Id="CreateSQLINSTALLER" Directory="BMSS4_Installer"
Execute= "deferred" Impersonate="no" Return="ignore"
ExeCommand="[BMSS4_Installer]Sql_Installation_Test1.exe -install" />

<InstallExecuteSequence>

  <Custom Action="CreateSQLINSTALLER"  Before="InstallFinalize"><![CDATA[(&SubFeature1)]]></Custom>

</InstallExecuteSequence>

Sql_Installation_Test1.exe 包含在主文件夹中,因此 BMSS4_Installer.. 但是在Directory标签om CustomAction中直接使用它是否正确!

【问题讨论】:

【参考方案1】:

这里记录了特征条件:

https://msdn.microsoft.com/en-us/library/aa368012(v=vs.85).aspx

处于功能的动作状态。基本上你使用的条件是:

&featurename=3

其中 3 是 INSTALLSTATE_LOCAL,如文档中所述。条件可以使用的地方有限制,主要是在 CostFinalize 之后。

不清楚您是否安装了某个版本的 SQL 本身,但它有自己的安装并且不需要重新打包,例如,它是与 Burn 一起安装的先决条件。如果它是您的单独 MSI 设置,那么 Burn 包可能是安装它和您的其他 MSI 的最佳方式。

【讨论】:

以上是关于WIX 中功能的自定义操作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WiX 中执行仅在安装或卸载时执行的自定义操作?

Wix Bootstrapper 清单或提升的自定义操作

Wix的自定义操作无法调用vb脚本

Wix 自定义卸载操作 - 如何在 msi 删除文件之前运行

参数未传递给 WiX 中的延迟自定义操作

如何在自定义操作 DLL (MSI/Wix) 中获取“INSTALLED”属性?