软件版本控制:Windows Installer和.Net版本的区别

4

微软公司已经推广 .Net 技术超过 8 年了。

.Net 程序集使用 4# 版本号进行版本控制,例如 major.minor[.build[.revision]]。请参考 此处

然而,Windows 安装程序仍然建议使用 3# 版本号,例如 major.minor.build。请参考 此处

由于两个系统版本号的不同,在映射 .Net 程序集版本到安装程序时并不直接。特别是当某人想要实现更新产品来适应 Revision 变化时,使用 Windows 安装程序安装 .Net 应用程序相当复杂。

如何克服这种情况?我们希望即使 Revision 发生最小变化,也能升级我们的产品。


公正地说,Windows Installer 已经存在了10多年了。但无论如何,我认为他们决定仅支持典型的4部分版本中的3部分是令人讨厌的。 - Rob Mensching
3个回答

4

这不是需要克服的问题,而是一个需要接受并围绕设计的限制。虽然令人烦恼,但在可预见的未来内不太可能发生改变。Windows Installer ProductVersions 基于三个部分。同时,请记住前两个部分不能超过255,但第三个部分最多可以达到65,535。


2

为什么要将.NET程序集版本直接映射到产品版本?您的产品中真的只有一个程序集吗?

我见过的大多数产品配置管理流程通常使用清单(也称为材料清单)来跟踪产品版本,列出了哪些二进制文件、配置文件和文档版本适用于该产品版本。这使您的开发流程与发布流程分离,这是一件好事,特别是对于商业产品而言。


我们确实有多个程序集,但我们希望客户升级到我们代码库中最新的版本,即使只是进行了微小的更改。因此,我们将SVN修订号作为程序集版本的最后一部分。不过,我们希望产品编号与程序集版本保持一致。这样做是否有问题? - NileshChauhan
身份验证模式应该是稳定和可预测的。您的升级策略可能会在未来发生变化。包括一个带有程序集版本 ID 的修订版是可以的,但是您的产品不仅仅是您的程序集之和。您的产品是您决定向客户提供的内容。发货决策与构建决策是分开的。始终为变更做好计划。我的建议:提供单独的产品版本标识,使它们对客户可见(安装程序、帮助>关于),并提供 BoM,将产品版本链接到程序集版本(以及文档修订等)。 - Pontus Gagge

1

.NET和Windows安装程序使用的版本涉及不同的问题。在.NET中,程序集版本由加载器用于确定要加载的程序集的版本。请记住,您可以将相同程序集的多个版本部署到GAC并使它们并排可用。您甚至可以拥有指定要加载的程序集的确切版本的策略。我可以在GAC中拥有程序集A的不同版本,并让应用程序1使用版本1,应用程序2使用版本2。虽然我对Windows安装程序了解不多,但我认为它使用版本和产品GUID来跟踪已安装的应用程序的版本,以便确定您正在安装的应用程序是否比已安装的应用程序更新,并警告用户或先卸载它或让用户选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接