Difference between revisions of "DarkRadiant Release Mechanics"

From The DarkMod Wiki
Jump to navigationJump to search
Line 81: Line 81:
* InnoSetup Website: http://www.jrsoftware.org/
* InnoSetup Website: http://www.jrsoftware.org/

Revision as of 08:26, 10 March 2010


DarkRadiant is using the major.minor.revision scheme for assigning version numbers to releases, e.g. 0.9.5, 1.0.2, 1.1.0, etc.

  • The major version number is increased every time a milestone is reached in terms of functionality or design.
  • The minor version number is increased every time a significantly large feature (or several large features) are added.
  • The revision number is to be increased for bugfixes or other stability releases.

Important: at least one number is changed for each release - no way two releases are carrying the same triple of major.minor.revision numbers.

Note: the term "revision" in the scheme is not related to the SVN revision number.

Pre-release Versions

Sometimes, before releasing a new version, it's justified to package a pre-release version for the team to test internally. Even though these releases are generally not released to the public they still need to be numbered correctly, such that bug reports from testers can be associated with the correct release number.

The term "preN" is appended to the version to tag it as pre-release, e.g. 1.2.0pre1, 1.4.0pre3.

Usually, such pre-releases are created every time at least the minor number is incremented, for simple bugfixes it's usually not necessary to package a pre-release. Often there are a series of pre-release versions before the actual version is released to the public, so the number N in "preN" is simply incremented for each new pre-release to distinguish them.

Windows Package Names

Since 0.9.9 the Windows release of DarkRadiant is shipped for both 32 bit (x86) and 64 bit platforms (x64). Users should be able to tell the target platform from the download file name:

  • darkradiant-1.2.0.exe (x86)
  • darkradiant-1.2.0.x64.exe (x64)

Pre-Release packages look like this:

  • darkradiant-1.2.0pre1.exe (x86)
  • darkradiant-1.2.0pre1.x64.exe (x64)

Since it's become practice to release a zipped no-installer version for each release, there is a naming convention for these ZIP files as well.

  • darkradiant-1.2.0.zip (x86)
  • darkradiant-1.2.0.x64.zip (x64)

How to create a Release (Windows)

This should describe how to create a Windows release from your working copy. This guide's assuming that you have a working build environment and the most recent trunk checked out to your hard drive in


(It's perfectly possible to work with other folders, but the available tool scripts in SVN are geared towards using the C:\Games\ path.)

Further, to compile a windows installer you'll need the free InnoSetup installed on your machine and associated to the .iss file extension (which is the default). Grab the latest version and install it on your system.

Clean Your Installation

To make sure any remnants of previous builds or releases are removed from your install/ folder, it's best to remove the DarkRadiant.exe/.pdb/.lib/.exp/.suo files from install/ and completely delete the install/modules/ and install/plugins/ folders.

Adjust the Version

  • Open Visual Studio and the DarkRadiant solution.
  • Open the version header file version.h (it can be found in the "include" project in Visual Studio's solution explorer) and adjust the version number on that file, e.g.
#define RADIANT_VERSION "1.2.0"

Build the Solution

  • Choose "Release" as Solution Configuration.
  • Select the desired target platform (Win32 or x64) from the Solution Platform dropdown in the toolbar.
  • Hit Build > Rebuild Solution to clear all previous intermediate files and compile DarkRadiant from scratch.
  • After compilation check the Output Window at the bottom if any "failed" builds are reported.

Copy the Installation Binaries

  • Open Windows Explorer, go to C:\Games\DarkRadiant\tools\scripts and run either copy_install_files.cmd (for x86 builds) or copy_install_files.x64.cmd (for 64 bit targets). This will copy all the necessary binaries and config files from your SVN working copy and put them into C:\Games\DarkRadiant_install (x86) or C:\Games\DarkRadiant_install (x64).

Create the Installer

  • The small script in the previous step also launches the InnoSetup wizard with the correct innosetup .iss script, so you should see a InnoSetup window open by this time.
  • If InnoSetup isn't launched for you, go to C:\Games\DarkRadiant\tools\innosetup and double-click the correct .iss file (darkradiant.iss or darkradiant.x64.iss). If that isn't working either, launch InnoSetup manually and open the .iss file from there.
  • Once the InnoSetup window has appeared, adjust the version numbers in the script window:
    • In [Setup], adjust AppVerName=DarkRadiant 1.2.0 to the correct version.
    • In [Setup], adjust DefaultGroupName=DarkRadiant 1.2.0
    • In [Setup], adjust OutputBaseFilename=darkradiant-1.2.0 (this is the installer EXE's name)
    • [Optional]: If you are working in a different path than C:\Games\DarkRadiant, adjust the paths in the [Files] section.
  • Hit the green play button at the top to compile the installer package.
  • The installer is started, you can cancel that immediately.
  • The package has been placed in C:\Games\DarkRadiant\tools\innosetup\<packagename>.exe

Upload the Package to Sourceforge

There's a dedicated file release system (FRS) in sourceforge, and it's likely that the folks over at sourceforge have already changed it (yet again) by the time a new DarkRadiant release is due... which makes writing detailed steps about it almost pointless. In principle the job is to figure out how to upload the release files to the sourceforge servers, I'm usually doing this via FTP. Use the sourceforge help pages to get further instructions.

Update the Website

Connect to the DarkRadiant website and adjust the download.php, index.php and latest.php files. There is also some texts to be adjusted for each release, which should present the bird's eye description of this release. Update the changelog.X.X.Y.php page for this release as well, mostly copying over the descriptions from the bugtracker changelog.

Update the Bugtracker Project

Create a new version for the DarkRadiant project, and set the released on to status "released". This will remove the released project from the roadmap page. The new development version is then carrying a revision number increased by one: if the release is called 1.2.0 the new dev version will be 1.2.1.

Post about the release in the TDM Editor's Guild

Tell people about the new release, there's usually a sticky for that which can be copied. Unstickify the old thread and stickify the new one.