Visual Studio 2008 安装部署项目 程序升级,windows服务安装以及User Setting的深入研究
Posted on 2008-03-24 15:29 sunrack 阅读(3697) 评论(5) 编辑 收藏 举报1、 安装程序升级版本号后,安装完成却发现并没有升级程序。
2、 升级windows服务时,提示 “服务已经存在”,中止安装。
3、 升级后,User Setting配置数据恢复到默认值,并没有继承上一版本配置数据。
经过反复测试我确认是VS2008有了新的改动。
一、VS2008安装部署项目的最新改动
VS2008帮助文档明确说明,VS2008在安装部署方面与VS2005不同。综合各种资料,总结如下:
VS2008 安装程序,则只是升级,没有卸载旧版本。安装程序只是更新确实需要更新的文件,在最后安装新文件的时候,才删除旧文件。
在MSI文件安装过程中旧版本文件的删除是在 InstallExecute 和 InstallFinalize. 之间执行,而不是在一开始就执行。
可以参考 http://msdn2.microsoft.com/en-us/library/aa371197(VS.85).aspx
文件根据File versioning rules 进行升级。虽然 File Version 对 VS生成的MSI文件没有影响。文件的修改日期不能作为升级的依据。
1、 程序安装后并没有升级的问题
解决的关键就是,必须升级程序集的File Version。
最简单的办法:修改解决方案中的所有 AssemblyInfo.cs 文件 最后两行
[assembly: AssemblyFileVersion("1.0.0.1")]
为
注意,这里 1.0.* 格式并不适用于AssemblyFileVersion。
对于以vsdpaLoose形式打包的普通文件,只要有过修改,就会在升级或者修复中被更新。
另外,还可使用第三方插件,更好的管理整个解决方案的Version。
2、 Windows服务升级的问题
由于新版安装过程中并没有卸载旧版本,服务也没有卸载,所以在新版本安装过程中,安装服务时,就会提示“服务已经存在”的错误。
说明:
Not Installed 确保在修复安装时,不会重新安装windwos服务
具体的Condition语法可以参考
http://msdn2.microsoft.com/en-us/library/aa368012.aspx
3、 User Setting升级的问题
VS2005种程序升级后,User Setting配置数据,仍然使用上一版本的,但在VS2008种,升级后的程序配置文件将恢复到默认值。其实并未覆盖旧版本的,而是每个版本都有独立的配置文件夹,互不影响。
如果需要在程序升级后,继续使用旧版本的配置,则可以使用以下办法解决:
在程序第一次运行时调用
Settings.Default.Save();
当然,需要自己控制该段代码只运行一次。