【问题标题】:Software Versioning: Difference in Windows Installer and .Net Version软件版本控制:Windows Installer 和 .Net 版本的区别
【发布时间】:2009-04-29 11:22:42
【问题描述】:

Microsoft 推广 .Net 已经超过 8 年了。

.Net 程序集使用 4# 版本控制,如 major.minor[.build[.revision]]。参考here

虽然,Windows Installer 仍然建议像 major.minor.build 这样的 3# 版本控制。参考here

两个系统的版本控制不同。将 .Net 程序集版本映射到安装程序并不直接。使用 Windows Installer 安装 .Net 应用程序是相当复杂的,尤其是当有人想要针对版本中的任何更改实施升级产品时。

如何克服这种情况?即使版本有最小的变化,我们也想升级我们的产品。

【问题讨论】:

  • 公平地说,Windows Installer 已经存在 10 多年了。但是,无论如何,我认为他们决定只支持典型的 4 部分版本的 3 部分令人讨厌。

标签: .net wix windows-installer versioning


【解决方案1】:

这不是要克服的。接受和设计是一种设计限制。令人讨厌的是,但在可预见的将来可能会改变。 Windows Installer ProductVersions 基于 3 个部分。另外,请记住前两部分不能超过 255,但第三部分可以达到 65,535。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我们确实有多个程序集,但我们希望我们的客户升级到最新版本,以便我们对代码库进行最轻微的更改。因此,我们将 SVN 修订号作为程序集版本的最后一部分。一些我们希望将产品编号与我们的程序集版本保持一致的方式。这样做有错吗?
    • 识别模式应该是稳定和可预测的。您的升级政策将来可能会发生变化。包含带有您的程序集版本 ID 的修订版很好 - 但您的 product 不仅仅是您的程序集的总和。您的产品是您决定运送给客户的产品。运输决策与您的构建决策是分开的。总是计划改变。我的建议:提供单独的产品版本标识,使它们对客户可见(安装程序、帮助>关于),并提供 BoM 的产品版本与装配版本的链接(以及文档修订等)。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 2012-01-24
      相关资源
      最近更新 更多