【问题标题】:Visual Studio 2010 Setup Project - Minor update to an existing installationVisual Studio 2010 安装项目 - 对现有安装的小更新
【发布时间】:2011-07-21 16:51:24
【问题描述】:

我在 Visual Studio 2010 中创建了一个 WPF 应用程序。我还创建了一个安装项目来安装这个应用程序。安装项目处理先决条件,复制二进制文件,填充开始菜单和桌面,设置文件关联和图标等。所有这些都很好。

我现在正在开发一个更新程序,它应该将我的应用程序更新到更高的次要版本(错误修复等)。我正在使用 NetSparkle 框架来处理更新过程。我已经让该过程本身正常工作,但是在创建执行我想要的更新 MSI 文件时遇到问题。

这是我尝试过的:

  1. 我创建了第二个安装项目,目的是构建“更新”MSI 文件。它所做的只是复制新的二进制文件。它有一个单屏 UI,显然不处理先决条件、快捷方式、图标、文件关联等。
  2. 我已确保 UpgradeCode 与我的主安装程序 Setup Project 的 UpgradeCode 相同
  3. 我已将Version 设置为高于我的主安装程序设置项目的值

所以我构建了更新程序 MSI,并将其插入 NetSparkle 更新过程。它似乎工作但它正在为我的应用程序在控制面板程序和功能(具有更高版本号)中创建一个 second 条目,并且它似乎也正在重置我的应用程序的配置设置 - 我需要那些保持完整!正如我所说,这只是一个小错误修复更新,而不是全新的替代品。

我做错了什么?有人可以指出我正确的方向吗?我什至需要 MSI 来更新文件吗? (我应该改用补丁吗?如果是,我该如何创建一个?)

更新:我一直在玩RemovePreviousVersions。如果我将其设置为false,则结果如上所述。如果我将它设置为true,那么程序和功能中的重复条目就会消失,但它也会删除所有文件关联、图标、开始菜单和桌面链接等,这不是我想要的。它还破坏了 NetSparkle 进程,因为该应用程序不会自动重新启动。真的,我要做的就是覆盖安装文件,就是这样,无论用户是升级一个小版本还是 X 小版本。

【问题讨论】:

    标签: .net wpf visual-studio-2010 windows-installer setup-project


    【解决方案1】:

    我建议您查看 WIX 之类的内容来执行此操作。 VS Setup 项目适用于简单的东西,但处理 MSI 安装的细微差别很棘手。使用WIX,您可以对 MSI 进行细粒度控制。

    要开始使用,您可以使用他们的工具之一来导入现有的 MSI,或者您可以从他们的模板之一开始。我最初从 VS 设置导入,然后将部分复制到 WIX 模板之一。

    他们的网站在upgrade process in their documentation 上有一些很好的信息。

    这是一篇关于the pros and cons of a minor upgrade 的帖子。还有一个wix tutorial related to wix

    就我而言,我也想支持小升级。我在我的 WIX 文件中使用以下内容来控制升级检测逻辑:

        <!-- 
            This upgrade table will control how and when the installer detect a major upgrade.
        -->
        <Upgrade Id="$(var.UpgradeCode)">
            <UpgradeVersion Minimum="$(var.ProductVersion)" Property="NEWPRODUCTFOUND" OnlyDetect="yes" IncludeMinimum="no" />
            <UpgradeVersion Minimum="1.0.0" Maximum="$(var.ProductVersion)" Property="UPGRADEFOUND" IncludeMinimum="yes" IncludeMaximum="no" />
        </Upgrade>
    

    【讨论】:

    • 酷,我一定会去看看的。
    【解决方案2】:

    将 RemovePreviousVersions 设置为 true 时,您使用的是 major upgrade。所以旧版本会被你的新版本自动卸载。如果您想使用重大升级,您的新版本应该是一个完整且独立的安装程序(它包括先决条件、快捷方式、图标、文件关联等)。

    你描述的是patching。 Visual Studio 不支持补丁,因此您需要手动创建它们。如果您想要更简单的解决方案,可以使用商业设置创作工具,它们为更新程序和补丁提供直接支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      相关资源
      最近更新 更多