如何仅在安装(不卸载)中执行自定义操作

Cyp*_*106 72 installer windows-installer installshield

我相信这很容易,但我有点困难.我有一个自定义操作,在安装时执行不同的(非msi)安装程序.不幸的是,我注意到它也在UNinstallation上执行安装程序!

我已经查看了选项,但我似乎无法找到如何阻止这一点.如果有人能帮助我,我会非常感激.

另外,如何设置自定义操作仅在UNinstall期间关闭?任何帮助都非常感谢大家!

sas*_*ont 163

在操作上添加条件,以便仅在安装期间触发,而不是在卸载时触发.

操作仅在安装期间运行

NOT Installed AND NOT PATCH
Run Code Online (Sandbox Code Playgroud)

操作在安装和修复期间运行

NOT REMOVE
Run Code Online (Sandbox Code Playgroud)

仅在初始安装时运行:

NOT Installed
Run Code Online (Sandbox Code Playgroud)

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

NOT Installed OR MaintenanceMode="Modify"
Run Code Online (Sandbox Code Playgroud)

要仅在卸载期间运行操作,请使用以下条件:

REMOVE~="ALL"
Run Code Online (Sandbox Code Playgroud)

要仅在升级期间运行操作:

Installed AND NOT REMOVE
Run Code Online (Sandbox Code Playgroud)

  • 已安装但未移除 - 对我不起作用. (2认同)

小智 7

一点修正:

最后,要仅在卸载期间运行操作,请使用以下条件: REMOVE="ALL"

这似乎更合适,因为该属性REMOVE包含要卸载的功能.
因此,如果我执行修改以删除一个功能,REMOVE则为true,并且仅在卸载时执行的操作将在修改时执行.
有关MSDN的更多详细信息


kri*_*r_o 6

一个例子:

<InstallExecuteSequence>
..
    <Custom Action="QtExecIdOfCA" Before="InstallFinalize">NOT Installed</Custom>
..
</InstallExecuteSequence>

..
..
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>
Run Code Online (Sandbox Code Playgroud)

注意!条件是加入<Custom>标签,并没有<CustomAction>它搞糊涂了,因为自后跟行动attribue


小智 5

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