【发布时间】:2010-02-08 13:12:31
【问题描述】:
我从 VS2008 部署项目中为我的项目创建了一个 msi 安装包。但是在升级安装时我遇到了问题,以前安装的版本不会被覆盖。如何确保覆盖以前安装的版本?
【问题讨论】:
标签: c# winforms deployment
我从 VS2008 部署项目中为我的项目创建了一个 msi 安装包。但是在升级安装时我遇到了问题,以前安装的版本不会被覆盖。如何确保覆盖以前安装的版本?
【问题讨论】:
标签: c# winforms deployment
如果您构建并部署了此新设置,则会删除版本号较旧的设置。
重要提示:设置版本号完全独立于您的应用程序或程序集版本号!
【讨论】:
(奥利弗的回答是正确的,但我想添加图片和更多细节)
在您的解决方案中选择设置项目,然后打开属性窗格(工具箱旁边的选项卡):
DetectNewerInstalledVersion 为真(默认设置)InstallAllUsers 设置为trueRemovePreviousVersions 设置为trueVersion 号码并按 Enter 键ProductCode 生成新的 GUID,点击是此外,您需要更新解决方案中每个项目的版本号,因为安装程序只会替换DLL的版本数字已增加:
AssemblyVersion 和 AssemblyFileVersion 编号或者更好的方法:
AssemblyVersion 和AssemblyFileVersion 行
右键单击设置项目并选择Properties(一个不同的Properties对话框):
我不确定是否所有这些步骤都是必要的,可能还有其他设置方法,但上述步骤对我有用。
【讨论】:
Windows Installer 已对您的文件进行内置检查,以确保版本高于该文件的先前版本。如果不是,Windows Installer 不会覆盖它。有关 Windows Installer 如何处理版本控制的更多详细信息,请查看此 MSDN 文章:
http://msdn.microsoft.com/en-us/library/aa368599%28VS.85%29.aspx
【讨论】:
我们需要将我们的 msi 文件的 REINSTALLMODE 属性设置为 amus。
以下是了解更多“amus”含义的链接 http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx
有两种方法可以做到这一点。
找到 msiexec.exe 后,只需键入以下命令即可将安装程序的 REINSTALLMODE 属性设置为 amus。
msiexec.exe /i foo.msi REINSTALLMODE=amus
【讨论】: