我在部署项目 QNA
上问过这个问题我正在使用 Microsoft Visual Studio 安装程序项目扩展来构建新的安装程序,以更新 10 年前的项目,但我似乎无法创建不需要先删除旧版本的安装程序。
我正在使用 VS 2019:如果我从项目部署菜单中选择“安装”,则新版本将在本地安装,但如果我构建它并运行 MSI,则会收到“该程序的另一个版本已安装...”并且我是否必须要求我的客户卸载并重新安装该应用程序?他们不会喜欢的。
我已更新输出程序集中的 AssemblyFileVersion 和 AssemblyVersion 属性,但这没有帮助。
那么如何创建更新安装程序?部署项目上没有“发布”菜单选项,并且项目主菜单上的“发布”不可用。旧的方法是更新产品代码,但我现在找不到在界面中执行此操作的方法。
我尝试手动更改 .vdproj 文件中的产品代码和软件包代码 - 这可以让安装程序运行,但它不会安装,因为它说安装了较新的版本:我尝试生成新的 GUID 并手动更新现有的,但没有成功。
答案是:
除了您所做的更改之外(更新输出程序集中的 AssemblyFileVersion 和 AssemblyVersion 属性),您还需要更新安装项目的版本。
- 在解决方案资源管理器中选择安装项目,然后按 F4 显示属性
- 增加“版本”
- 在出现的询问您是否要更新产品代码的对话框中选择“是”
- 再次保存并构建安装项目。
这将启用升级场景。
这确实有效。我在此处添加它的原因是 F4 未在 .vdproj 上下文菜单中列出,因此实际上无法发现它。
还有一个怪癖:如果您使用 Git,那么它可能不会自动检出部署项目文件(.vdproj),因此您必须手动编辑它(添加一个空格就足够了)并重新加载项目,然后进行更改,无论如何都会重写项目。
要扩展 @stuartd 的答案和 @Joel 的评论,请确保 .vdproj 属性 (F4) 中的 RemovePreviousVersions 和 DetectNewerInstalledVersion 设置为 true。这应该可以解决控制面板的添加/删除程序实用程序中保留的任何先前版本。 UpgradeCode 应在各个版本甚至框架之间保持相同。