Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 如何仅在安装(而非卸载)中执行自定义操作_Installation_Windows Installer_Installshield - Fatal编程技术网

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

Installation 如何仅在安装(而非卸载)中执行自定义操作,installation,windows-installer,installshield,Installation,Windows Installer,Installshield,我相信这是相当容易的,但我已经有点困难了。我有一个自定义操作,在安装时执行不同的(非msi)安装程序。不幸的是,我注意到它在卸载时也会执行安装程序 我已经看了所有的选择,但我似乎无法找到如何阻止这种情况。如果有人能帮助我,我将不胜感激 另外,如何将自定义操作设置为仅在卸载期间关闭?非常感谢各位的帮助 在操作上添加一个条件,使其仅在安装过程中触发,而不是在卸载过程中触发 操作仅在安装期间运行 NOT Installed AND NOT PATCH 操作在安装和修复期间运行 NOT REMOVE

我相信这是相当容易的,但我已经有点困难了。我有一个自定义操作,在安装时执行不同的(非msi)安装程序。不幸的是,我注意到它在卸载时也会执行安装程序

我已经看了所有的选择,但我似乎无法找到如何阻止这种情况。如果有人能帮助我,我将不胜感激


另外,如何将自定义操作设置为仅在卸载期间关闭?非常感谢各位的帮助

在操作上添加一个条件,使其仅在安装过程中触发,而不是在卸载过程中触发

操作仅在安装期间运行

NOT Installed AND NOT PATCH
操作在安装和修复期间运行

NOT REMOVE
仅在初始安装时运行:

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

NOT Installed OR MaintenanceMode="Modify"
要仅在卸载期间运行操作,请使用以下条件:

REMOVE~="ALL"
要仅在升级期间运行操作,请执行以下操作:

Installed AND NOT REMOVE

自定义操作的条件,可能与执行卸载的匹配自定义操作。不确定您正在使用什么工具,但假设二次安装绑定到一个组件,我将使用该组件状态。=3的状态表示已安装的目标状态。状态=2表示不存在的目标状态。请注意,如果没有更改,则不会设置状态。

有一点更正:

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

这似乎更合适,因为属性
REMOVE
包含要卸载的功能。
因此,如果我修改以删除一项功能,
remove
为真,并且仅在卸载时执行的操作在修改时执行。

请小心使用
REMOVE=ALL
。在安装验证序列之前,它不可用
并查看以下链接以了解更多详细信息:

举个例子:

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

..
..
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>

..
未安装
..
..
..

注意条件被添加到
标记中,而不是
它让我很困惑,因为自定义之后是Action attribue

@Rasa您所说的重新安装模式是什么意思?在MSI术语中没有这样的东西,您可能正在寻找“修复”(而不是删除)。如果您记录MSI输出,您可以准确地看到在上述条件中使用的各种值将被设置为什么,并确定哪一个值将与您的情况相匹配。那么Modify呢?仅在卸载功能时运行操作?仅在安装功能时运行操作?仅在修复功能时运行操作?非常感谢,这对我帮助很大。我快疯了。。不删除帮助我除了我添加到问题的链接,这里是一个直接链接到备忘PDF。不保证,我自己没有测试过这些条件,但它们来自Installshield,因此它们应该可以:。用于参考:。