在我目前的项目中,我正在制作每周版本.我一直在使用这篇文章中描述的技术来保持项目中所有程序集的版本号同步.(我现在没有任何理由单独跟踪组件的版本号,但我确信那一天最终会到来.)
当我推出一个版本时,我构建了一个新版本的安装程序.与可以从共享的SolutionInfo.cs文件中获取其版本号的所有程序集不同,安装程序的版本号不是最好的,我可以说是程序集属性.所以我的发布过程包括手动推进安装项目中的版本号.
或者,我应该说,通常包括这样做.我想把它变成我无法搞砸的东西.我发现设置和部署项目的文档令人惊讶地不透明(如果用户将其安装到非默认路径,那么找出如何使MSI正确卸载是非常困难的,这是一个非常疯狂的常见用例,无法记录)并且不知道是否有可能这样做.
有任何想法吗?
编辑:
只是为了澄清,这是我正在谈论的Visual Studio设置和部署项目.
CodeProject有一个脚本来设置MSI文件的版本号,您可以在安装项目的预构建步骤中运行该脚本.你在这里找到它:
http://www.codeproject.com/KB/install/NewSetupVersion.aspx
更多细节
请注意,使用Windows Installer时,事情会复杂一些.MSI文件(作为使用VS安装和部署项目创建的文件)不仅具有版本号,还具有GUID值的产品代码.Windows Installer使用此产品代码来唯一标识您的产品,例如在控制面板 - >添加或删除程序中,您可以决定卸载或修复产品.
但是,在更改MSI版本号时,还必须在许多情况下更改此产品代码.MSI技术文档很少,但您可以在以下MSDN页面上找到更改产品代码的一些建议:http://msdn.microsoft.com/en-us/library/aa367850(VS.85).aspx.
在我的项目中,我总是为每个新版本生成新的产品代码.CodeProject上的脚本也将为您更改产品代码.
还有一件事:Windows Installer只检查版本号afaik的前三个位置,第四位的任何内容都将被忽略,即2.3.0.1234被认为等于2.3.0.5678.(ProductVersion)
(有关CodeProject的相关文章,您可能也会感兴趣:http://www.codeproject.com/KB/install/VersionVDProj.aspx)