我有两个自定义操作(立即和延迟)。我想在升级过程中跳过操作。
我试过了:
<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="$(var.Version)"
Manufacturer="$(var.Manufacturer)" UpgradeCode="{GUID}">
<MajorUpgrade DowngradeErrorMessage="Newer version is already installed." />
<Custom Action='CAa' After='InstallInitialize'>NOT Installed AND NOT PATCH</Custom>
和:
<Custom Action='CAa' After='InstallInitialize'>NOT Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
目前,在更新期间开始执行操作。
答案 0 :(得分:1)
当您使用WiX MajorUpgrade进行重大升级时,WIX_UPGRADE_DETECTED已设置 - 请参阅:
http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html
这是您在升级安装中使用的,以检测是否安装了旧产品。换句话说,这意味着新的传入安装已检测到正在升级的旧版本。
UPGRADINGPRODUCTCODE不是要使用的。此属性在升级和卸载的旧产品中设置,因此它知道正在卸载和升级之间的区别,正如此处的文档所述:
https://msdn.microsoft.com/en-us/library/aa372380(v=vs.85).aspx
&#34;应用程序通过检查UPGRADINGPRODUCTCODE来确定是通过升级还是通过“添加或删除程序”删除它。&#34;
它的值是传入升级的ProductCode,导致它被删除。
答案 1 :(得分:0)
这些条件非常适合 - InstallExecuteSequence 有许多选项和模式(首次安装,主要升级安装,次要升级安装,维护安装,卸载,主要升级卸载顺序,修补,自动修复等...)。正如我在上面的评论中所写,您可以尝试this PDF from Flexera。
没有保证,但这是一个提案。您可以通过显示来自CA的消息框来尝试这是否是您想要的( 我无法使用这个糟糕的瘦客户端 进行测试,所以它是一个在没有完成我自己的测试的情况下尝试回答有点冒险 - 请自己仔细检查):
Not Installed AND NOT PATCH AND NOT UPGRADINGPRODUCTCODE AND NOT REMOVE=~"ALL")
。
“参考样式表”: