首页 > 解决方案 > 如何在升级时跳过 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>

标签: wix

解决方案


NOT Installed自从更新版本以来将无法使用,升级本身没有安装。

如果您使用 MajorUpgrade 元素,则该属性

WIX_UPGRADE_DETECTED

升级时应评估为 true,因此请尝试在您的情况下使用 NOT WIX_UPGRADE_DETECTED。

据我所知UPGRADINGPRODUCTCODEPREVIOUSVERSIONSINSTALLED有时也可能会进行升级,但这些并不一定那么可靠。


推荐阅读