WiX:仅在选择功能时才在合并模块上调用自定义操作

时间:2010-01-18 13:29:11

标签: windows wix windows-installer wix3

我有一个WiX安装程序,它有3个项目。 2创建合并模块,1创建安装程序。只有在选择了相应的功能时,才能执行mergemodules中的代码。是否有机会使用自定义操作?

根据我的经验,始终会调用自定义操作 - 是否选择某个功能...

Podoct中的代码:

<Feature Id="Complete" Title="SDK Setup" Description="Installs the sdk" Display="expand" Level="1" ConfigurableDirectory="INSTALLLOCATION">
  <Feature Id="SDK" Title ="SDK" Description="" Level ="1">

....                                                          

在合并模块中,我调用了一些自定义操作,例如:

<CustomAction Id='CustomAction' BinaryKey='CaDll' DllEntry='CaEntry' Execute='deferred' />
<CustomAction Id="CustomAction.SetProperty" Return="check" Property="CustomAction" Value='test' Execute='immediate' />

<InstallExecuteSequence>
  <Custom Action='CustomAction.SetProperty' After='CostFinalize'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE) </Custom>
  <Custom Action='CustomAction' After='InstallFiles'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE) </Custom>

1 个答案:

答案 0 :(得分:2)

自定义操作通常与组件或功能无关。从一个角度来看,这是因为它们应该以数据驱动的方式编写:检查代码中所有组件的安装和操作状态,以构建要采取的操作列表。

但是当行为没有意义时(即使在自定义数据库表的帮助下),您始终可以根据条件将它们绑定到功能或组件的操作状态。有关“访问前缀”或“功能和组件状态值”的信息,请参阅Conditional Statement Syntax,特别是底部附近的示例:&MyFeature=3在安装MyFeature时为真。