如果我留出任何重要细节,我想提前道歉。

我试图在安装新的软件(和所有组件)之前执行升级,在安装新的软件(和所有组件)之前。

我会尽量避免使用细节无聊,并说你是否做了'典型的'安装,一切都按计划进行。如果选择要执行高级安装(为所有用户指定安装,安装位置等),那么它似乎完全跳过“卸载以前的版本”步骤。

到目前为止,我完成了以下内容:

为我的升级值标记匹配另一个stackoverflow问题的建议

- 验证了“oldversionbeuppraded”属性正确设置

-verify升级代码/ id是相同的,版本号是顺序(从1.0.8到1.0.10升级) - 毕竟,'典型'安装正常工作!

- 关注此处给出的建议: wix--始终覆盖以前的版本并遵循这个: http://wix.sourceforge.net/manual-wix3/ major_upgrade.htm

-tried通过手动调用msiexec来实现黑客以通过它的产品ID卸载以前的版本(这失败,因为我们已经安装了一些东西 - 有没有更好的方式来安排这个?)

我的产品/升级部分如下所示:

<Product Id="GUID1" UpgradeCode="GUID2" Version="1.0.10.0">
    <Package Compressed="yes" InstallerVersion="200"/>
    <MajorUpgrade Schedule="afterInstallInitialize" 
      DowngradeErrorMessage="Another version of [ProductName] is already installed."/>
    <Upgrade Id="GUID2">
        <UpgradeVersion Minimum="1.0.10" OnlyDetect="yes"
             Property="NEWERVERSIONDETECTED" />
        <UpgradeVersion Maximum="1.0.10" IncludeMaximum="no" 
             Property="PREVIOUSVERSIONINSTALLED" />
    </Upgrade>
.

我是一个wix newbie,所以我可能在描述我的问题时忽略了重要细节。如果我忽略了包括重要的东西,请告诉我。

提前感谢您可以提供的任何输入。

有帮助吗?

解决方案

听起来您正在遇到与我一样的限制,请参阅这个问题。在升级中,您无法更改安装范围(“每个用户”或“每台计算机”)。

在Windows Installer中没有任何简单的方法。您只能制作一个单独的引导exe,exe卸载以前的版本,然后启动新版本的安装。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top