Thursday, 21 August 2008

Tip: Release Version Management

During my work on Software Development one of the issues I had to consider is a way of numbering different software releases. Below is a list of examples specifying different releases and their corresponding versions. Number in brackets corresponds to internal version of compiled assembly. Number before brackets displayed in About Box or Splash Screen for a user.

V1.0 RC1 (1.0.0.1) This is a Release Candidate 1 or Beta Version 1 sent to testers
V1.0 RC2 (1.0.0.2) Testers found errors and development team released fixes in Release Candidate 2
V1.0 (1.0.0) First Stable Release which deployed to production
V1.0.1 RC1 (1.0.0.1) Fixes made to production version sent to testers in Release Candidate 1
V1.0.1 RC2 (1.0.0.2) Fixes made to errors found by testers and released in Release Candidate 2
V1.0.1 (1.0.1) Version with fixes released to production
V1.1 RC1 (1.1.0.1) New features are introduced and sent to testers in Release Candidate 1
V1.1 RC2 (1.1.0.2) Fixes made to errors found by testers and released in Release Candidate 2
V1.1 (1.1.0) Stable Release with new features deployed to production

And so on ....

Now you may notice a couple of unusual records. First, testing release start from 1.0.0.1 and second, stable release internal version has only 3 digits. For Windows Environment Variables Manager (EnvMan) I implemented a code that displays RCx wording depending on internal assembly version and so for it not to get confused about when to  remove leading 0s Beta versions start from 1. See code sample below.

/// <summary> /// Gets the package version. /// </summary> /// <value>The package version.</value> public string PackageVersion { get { string VERSION_SEPERATOR = "."; Version version = Assembly.GetExecutingAssembly().GetName().Version; string build = (version.Build == 0) ? string.Empty : VERSION_SEPERATOR + version.Build; string revision = (version.Revision == 0) ? string.Empty : " RC" + version.Revision; string packageVersion = "V" + version.Major + VERSION_SEPERATOR + version.Minor + build + revision; return packageVersion; } }

Second unusual statement: For stable releases can be a problem when trying to install it on top of beta version. MSI Windows Installer may get confused between versions. I haven verified this yet, but it will be safer in this case to remove any Beta versions before installing production release.

I am happy to hear any feedback, please share your experience in the comments.

No comments:

Post a Comment