使用WIX升级MSI

使用WIX升级MSI,wix,windows-installer,Wix,Windows Installer,Im使用WIX创建MSI安装程序。一切都很好,我能够创造我自己的产品,创造一切都很好 但当我达到我想要创建升级的目的时,它就不起作用了 我使用了以下代码,其中$(var.ProductUpgradeCode)是定义并用作产品元素中的升级代码 <Upgrade Id="$(var.ProductUpgradeCode)"> <UpgradeVersion OnlyDetect="yes" Property="SELFFOUND"

Im使用WIX创建MSI安装程序。一切都很好,我能够创造我自己的产品,创造一切都很好

但当我达到我想要创建升级的目的时,它就不起作用了

我使用了以下代码,其中$(var.ProductUpgradeCode)是定义并用作产品元素中的升级代码

        <Upgrade Id="$(var.ProductUpgradeCode)">
        <UpgradeVersion OnlyDetect="yes" Property="SELFFOUND"
            Minimum="$(var.ProductVersion)" IncludeMinimum="yes"
            Maximum="$(var.ProductVersion)" IncludeMaximum="yes" />
        <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND"
            Minimum="$(var.ProductVersion)" IncludeMinimum="no" />
    </Upgrade>


    <CustomAction Id="AlreadyUpdated" Error="[ProductName] has already been updated to [ProductVersion] or newer." />
    <CustomAction Id="NoDowngrade" Error="A later version of [ProductName] is already installed." />

    <InstallExecuteSequence>
        <Custom Action="AlreadyUpdated" After="FindRelatedProducts">SELFFOUND</Custom>
        <Custom Action="NoDowngrade" After="FindRelatedProducts">NEWERFOUND</Custom>
        <RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
    </InstallExecuteSequence>

自找的
纽尔费
在旧MSI中,产品Id=“GUID1”Version=“1.0.0”

在新MSI中,产品Id=“GUID2”Version=“1.0.1”

当旧的安装,我试图安装新的。启动旧MSI并询问更改/修复/删除对话框。但我想继续安装,当按下“安装”(在progressDlg之前)时,我想卸载旧版本

只有一个文件在1.0.0和1.0.1之间更改。我的所有文件都有自己的组件,并设置了自己的GUID(非自动)


怎么了?它是新WIX版本的东西吗?我昨天下载了最新的版本。

假设您的新MSI中的其他内容都正确,我看到的错误是您的升级设置中只有detect=yes。正如WiX文档所说,“设置为“是”以检测产品和应用程序,但不卸载。”因此,请从更改开始


请注意,使用MajorUpgrade元素更为常见,它负责设置。如果没有详细的日志,其他所有内容是否正确(例如MSI中的FindRelatedProducts)就不明显

要获取日志,我必须通过msiexec执行它,对吗?我从来没有试过,但我在一篇帖子里看到了。我可以试试看。而且,主要升级可能比手动升级要好。我试试看。但我认为这是我的自定义UI的问题。我从FeatureTree开始,对其中的一些进行了更改,我想知道这是否会“损坏”升级元素的这一部分。
msiexec/l*v logfile.txt/I installer.msi
在命令行中应该为您提供一个msi作为安装运行的日志文件。我使用了majorupgrade元素并将产品id=“*”现在一切都正常了。我不认为你的问题在所展示的代码中——这是因为它与你描述的更新情况没有任何关系。对于这种小型升级情况,您需要使用正确的参数开始安装。您只需要在使用不同升级代码的早期安装上使用Upgrade元素进行升级,其他所有升级都将由MajorUpgrade元素完美处理。