如何执行自定义操作,只有在安装(不卸载)如何执行自定义操作,只有在安装(不卸载)(How to ex

2019-05-12 19:16发布

我敢肯定,这是相当容易的,但我已经那种日子不好过吧。 我有执行上安装不同的(非MSI)的安装程序自定义操作。 不幸的是,我注意到,它也执行上卸载安装!

我已经通过选项看,但我不能”似乎找到了如何阻止这一切。 如果有人可以帮助我,我将是令人难以置信的感谢。

此外,我怎么设置自定义操作仅在卸载过程中去了吗? 任何帮助,非常感谢你们!

Answer 1:

在动作添加条件,所以它的安装,不卸载过程中,才触发。

操作运行只在安装

NOT Installed AND NOT PATCH

操作安装和维修过程中运行

NOT REMOVE

仅在初始安装运行:

NOT Installed

初始运行或安装时选择修复。

NOT Installed OR MaintenanceMode="Modify"

要仅运行在卸载过程中使用下列条件的动作:

REMOVE~="ALL"

要只运行在升级过程中的作用:

Installed AND NOT REMOVE


Answer 2:

修正的位:

最后,只能运行在卸载过程中使用下列条件的动作: REMOVE="ALL"

作为属性这似乎更合适REMOVE包含正在卸载的功能。
所以,如果我做了修改,除去一个特征, REMOVE是真实的,那就是只有在卸载上执行修改为执行动作。
更多细节在这里MSDN



Answer 3:

一个例子:

<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



Answer 4:

请小心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



Answer 5:

在自定义操作的条件,可能与匹配的自定义操作做卸载。 不知道你使用的是什么工具,但假设二次安装绑定到一个组成部分,我将使用该组件的状态。 = 3的状态,是指安装的目标状态。 甲状态= 2表示的不存在的目标状态。 请注意,如果没有变化的状态将不会被设置。



文章来源: How to execute custom action only in install (not uninstall)