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