我已经从VS2008部署项目为我的项目创建了一个msi安装包。但是在升级安装时遇到问题,以前安装的版本不会被覆盖。如何确保以前安装的版本被覆盖?
答案 0 :(得分:12)
如果您构建并部署了此新设置,则将删除具有旧版本号的设置。
重要提示:设置版本号完全独立于您的应用程序或程序集版本号!
答案 1 :(得分:12)
(奥利弗的回答是正确的,但我想添加图片和更多细节)
在解决方案中选择安装项目,然后打开属性窗格(工具箱旁边的标签):
DetectNewerInstalledVersion
为真(默认为<)> InstallAllUsers
设为true RemovePreviousVersions
设为true Version
号码,然后按Enter ProductCode
生成新GUID,请单击是此外,您需要更新解决方案中每个项目的版本号,因为安装程序只会替换 DLL 数字已增加:
AssemblyVersion
和AssemblyFileVersion
个数字或者更好的方式:
AssemblyVersion
和AssemblyFileVersion
行 AssemblyInfo.cs 右键单击安装项目,然后选择属性(其他属性对话框):
我不确定是否所有这些步骤都是必要的,并且可能还有其他方法来设置它,但上述步骤对我有效。
答案 2 :(得分:0)
Windows Installer内置了对文件的检查,以确保版本高于该文件的先前版本。如果不是,Windows Installer将不会覆盖它。有关Windows Installer如何处理版本控制的更多信息,请查看此MSDN文章:
http://msdn.microsoft.com/en-us/library/aa368599%28VS.85%29.aspx
答案 3 :(得分:0)
我们需要将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