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