我敢肯定,这是相当容易的,但我已经那种日子不好过吧。 我有执行上安装不同的(非MSI)的安装程序自定义操作。 不幸的是,我注意到,它也执行上卸载安装!
我已经通过选项看,但我不能”似乎找到了如何阻止这一切。 如果有人可以帮助我,我将是令人难以置信的感谢。
此外,我怎么设置自定义操作仅在卸载过程中去了吗? 任何帮助,非常感谢你们!
我敢肯定,这是相当容易的,但我已经那种日子不好过吧。 我有执行上安装不同的(非MSI)的安装程序自定义操作。 不幸的是,我注意到,它也执行上卸载安装!
我已经通过选项看,但我不能”似乎找到了如何阻止这一切。 如果有人可以帮助我,我将是令人难以置信的感谢。
此外,我怎么设置自定义操作仅在卸载过程中去了吗? 任何帮助,非常感谢你们!
在动作添加条件,所以它的安装,不卸载过程中,才触发。
操作运行只在安装
NOT Installed AND NOT PATCH
操作安装和维修过程中运行
NOT REMOVE
仅在初始安装运行:
NOT Installed
初始运行或安装时选择修复。
NOT Installed OR MaintenanceMode="Modify"
要仅运行在卸载过程中使用下列条件的动作:
REMOVE~="ALL"
要只运行在升级过程中的作用:
Installed AND NOT REMOVE
修正的位:
最后,只能运行在卸载过程中使用下列条件的动作: REMOVE="ALL"
作为属性这似乎更合适REMOVE
包含正在卸载的功能。
所以,如果我做了修改,除去一个特征, REMOVE
是真实的,那就是只有在卸载上执行修改为执行动作。
更多细节在这里MSDN
一个例子:
<InstallExecuteSequence>
..
<Custom Action="QtExecIdOfCA" Before="InstallFinalize">NOT Installed</Custom>
..
</InstallExecuteSequence>
..
..
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>
注意! 条件被添加到<Custom>
标签,而不是 <CustomAction>
它搞糊涂了,因为自后跟行动attribue
请小心REMOVE=ALL
。 这不是installvalidate序列之前可用。
并检查以下更多详情链接:
http://msdn.microsoft.com/en-us/library/aa371194(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa368013(v=vs.85).aspx
在自定义操作的条件,可能与匹配的自定义操作做卸载。 不知道你使用的是什么工具,但假设二次安装绑定到一个组成部分,我将使用该组件的状态。 = 3的状态,是指安装的目标状态。 甲状态= 2表示的不存在的目标状态。 请注意,如果没有变化的状态将不会被设置。