wix - 如何在升级时跳过 InstallDir 对话框
问题描述
我想在升级时禁止 InstallDirDlg。但我的方法不起作用。
我试图跳过 InstallDirDlg 使用
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">NOT Installed</Publish>
我通过安装版本 1.0.0.0 和版本 1.0.1.0 对其进行了测试,但 InstallDirDialog 仍然出现。
我对 WiX 很陌生,所以也许我遗漏了一些东西。
这是 Product.wxs 文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="MyApp" Language="1031" Version="1.0.1.0" Manufacturer="Abid" UpgradeCode="8dc49e86-c23a-4541-bef2-259bdec14a57">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<UI>
<UIRef Id="WixUI_InstallDir" />
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">NOT Installed</Publish>
</UI>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<Property Id="INSTALLDIR">
<RegistrySearch Id="ProgramRegistry" Type="raw" Root="HKCU" Key='Software\[Manufacturer]\[ProductName]' Name='InstallDir' />
</Property>
<MajorUpgrade DowngradeErrorMessage="Eine neuere Version von [ProductName] ist bereits installiert." />
<MediaTemplate EmbedCab="yes" />
<!-- ... --->
</Wix>
解决方案
NOT Installed
自从更新版本以来将无法使用,升级本身没有安装。
如果您使用 MajorUpgrade 元素,则该属性
WIX_UPGRADE_DETECTED
升级时应评估为 true,因此请尝试在您的情况下使用 NOT WIX_UPGRADE_DETECTED。
据我所知UPGRADINGPRODUCTCODE
,PREVIOUSVERSIONSINSTALLED
有时也可能会进行升级,但这些并不一定那么可靠。
推荐阅读
- asp.net - 网络阻塞 google.com 时如何使用谷歌验证码
- c# - 在最深的二叉树中找到元素的最佳解决方案是什么
- apache-spark - 根据值将 RDD 拆分为多个 RDD,无需执行 `collect()` 和 `filter()`
- java - 如何在java中使用集合创建嵌套的json
- java - 为什么 Char 变量在没有声明 char 数组的情况下存储堆栈的过去值?看代码?
- automated-tests - 如何运行 Silk-Test(4Test 语言)3 次并每次都从列表中获取数据?(每次都是不同的人)
- javascript - 将主干迁移到 Angular 6
- c - 不理解语句的行
- angular - 如何获取对象的类型定义名称?
- mongoose - 密码中有@时如何使用猫鼬连接到MongoDB?