繁体   English   中英

使用WIX升级MSI

[英]Upgrade MSI using WIX

我正在使用WIX创建一个MSI安装程序。 很好,我能够创建自己的产品并创建所有东西。

但是当我想创建一个升级时,它就无法正常工作。

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

        <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“版本=” 1.0.0“

在新的MSI中,产品ID =“ =” GUID2“版本=” 1.0.1“

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

在1.0.0和1.0.1之间只有一个文件更改。 我所有的文件都有自己的组件和自己的GUID集(不是自动的)。

怎么了 ? 新的WIX版本是否有用? 我昨天下载了最新的。

假设新MSI中的其他所有内容都正确,那么我看到的错误是升级设置中只有OnlyDetect = yes。 正如WiX文档所述:“设置为“是”以检测产品和应用程序,但不卸载”。 因此,首先要进行更改。

请注意,使用MajorUpgrade元素更为常见,该元素负责设置。 没有冗长的日志,其他一切都正确(例如MSI中的FindRelatedProducts)并不明显。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM