【发布时间】:2011-07-21 16:51:24
【问题描述】:
我在 Visual Studio 2010 中创建了一个 WPF 应用程序。我还创建了一个安装项目来安装这个应用程序。安装项目处理先决条件,复制二进制文件,填充开始菜单和桌面,设置文件关联和图标等。所有这些都很好。
我现在正在开发一个更新程序,它应该将我的应用程序更新到更高的次要版本(错误修复等)。我正在使用 NetSparkle 框架来处理更新过程。我已经让该过程本身正常工作,但是在创建执行我想要的更新 MSI 文件时遇到问题。
这是我尝试过的:
- 我创建了第二个安装项目,目的是构建“更新”MSI 文件。它所做的只是复制新的二进制文件。它有一个单屏 UI,显然不处理先决条件、快捷方式、图标、文件关联等。
- 我已确保
UpgradeCode与我的主安装程序 Setup Project 的 UpgradeCode 相同 - 我已将
Version设置为高于我的主安装程序设置项目的值
所以我构建了更新程序 MSI,并将其插入 NetSparkle 更新过程。它似乎工作但它正在为我的应用程序在控制面板程序和功能(具有更高版本号)中创建一个 second 条目,并且它似乎也正在重置我的应用程序的配置设置 - 我需要那些保持完整!正如我所说,这只是一个小错误修复更新,而不是全新的替代品。
我做错了什么?有人可以指出我正确的方向吗?我什至需要 MSI 来更新文件吗? (我应该改用补丁吗?如果是,我该如何创建一个?)
更新:我一直在玩RemovePreviousVersions。如果我将其设置为false,则结果如上所述。如果我将它设置为true,那么程序和功能中的重复条目就会消失,但它也会删除所有文件关联、图标、开始菜单和桌面链接等,这不是我想要的。它还破坏了 NetSparkle 进程,因为该应用程序不会自动重新启动。真的,我要做的就是覆盖安装文件,就是这样,无论用户是升级一个小版本还是 X 小版本。
【问题讨论】:
标签: .net wpf visual-studio-2010 windows-installer setup-project