我有一个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>
答案 0 :(得分:2)
自定义操作通常与组件或功能无关。从一个角度来看,这是因为它们应该以数据驱动的方式编写:检查代码中所有组件的安装和操作状态,以构建要采取的操作列表。
但是当行为没有意义时(即使在自定义数据库表的帮助下),您始终可以根据条件将它们绑定到功能或组件的操作状态。有关“访问前缀”或“功能和组件状态值”的信息,请参阅Conditional Statement Syntax,特别是底部附近的示例:&MyFeature=3
在安装MyFeature时为真。