按功能执行自定义操作

时间:2010-06-21 19:57:07

标签: wix wix3

我编写了一个自定义操作,用于在安装后创建计划任务。 当用户不想创建计划任务时,我不希望自定义操作运行。在安装过程中,即使我选择“功能将无法使用”,也会创建schtask。如何阻止自定义操作执行?

4 个答案:

答案 0 :(得分:10)

您可以为CA执行设置条件:

<InstallExecuteSequence>
    <Custom Action="ScheduleTaskCA" After="InstallFinalize">
        <![CDATA[&feature_name=3]]>
    </Custom>
</InstallExecuteSequence>

希望它有所帮助。

  

如果您想了解有关CA条件的更多信息,可以阅读以下链接。   Advanced Custom Action Conditions

答案 1 :(得分:0)

添加到您的安装执行顺序。

答案 2 :(得分:0)

其实我发现了问题。 &amp; FeatureName = 3告诉我要安装该功能,与之相反的是!FeatureName = 3,这意味着该功能已经安装。这解决了我的问题所以最终的解决方案变成了

&FeatureName = 3 OR (!FeatureName  = 3 AND NOT (Uninstalling OR MSIPATCHREMOVE OR RemovingForUpgrade)    

答案 3 :(得分:0)

“MyService”是功能名称

“FEATURE_MyService”是我的条件名称:我使用复选框设置FEATURE_MyService属性的值

<Control Id="Chk1" Type="CheckBox" Height="12" Width="110" X="50" Y="199" Text="Portal Windows Service" Property="FEATURE_MyService" CheckBoxValue="0" Hidden="yes">

<Custom Action='CAction1' After="InstallExecute">
    NOT Installed AND <![CDATA[(&MyService=3)]]>

<Custom Action='CAction2' Before='InstallExecute'>
    <![CDATA[(&MyService=3 AND NOT Installed)]]>

<Custom Action='CAction3' After='InstallFinalize'>
    <![CDATA[FEATURE_MyService AND NOT Installed ]]>