【问题标题】:WiX: Calling Custom Action on Merge Module only if Feature is selectedWiX:仅在选择功能时才在合并模块上调用自定义操作
【发布时间】:2010-01-18 13:29:10
【问题描述】:

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

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

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>

【问题讨论】:

    标签: windows wix windows-installer wix3


    【解决方案1】:

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

    但是,当操作以这种方式没有意义时(即使在自定义数据库表的帮助下),您始终可以通过它们的条件将它们与功能或组件的操作状态联系起来。请参阅Conditional Statement Syntax 了解“访问前缀”或“功能和组件状态值”,尤其是底部附近的示例:在安装 MyFeature 时,&amp;MyFeature=3 为真。

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多