## Creating a WinMerge release

Maybe outdated!

Creating a release means building installer, executable- and source-packages that can be distributed for users. RELEASING IS A TASK WITH BIG RESPONSIBILITY! Making errors mean (lots of) users have non-working WinMerge installations. And users are not happy about that!

### Table of Contents

1. Environment
2. Steps to do a release
3. Calculating checksums

### Environment

Before starting releasing, you must make sure you have all tools available:

1. Installer building is explained in readme-InnoSetup.html
2. Manual building is explained in readme-manual.html

### Steps to do a release

The list of steps is:

1. Verify that sources are ones you want to build as release.
   1. If you have a pristine copy (no modifications/build files etc) of sources make a copy of them before building etc. You can use this pristine copy as source distribution.
2. Set version numbers:
   1. `Src/Merge.rc` for executables
   2. `ShellExtension/ShellExtension.rc` for Shell Extension
   3. `Docs/Users/Manual/WinMerge_help.xml` for the manual
3. Build executables and libraries
4. Build manual (see readme-manual.html)
5. Build installer (see readme-InnoSetup.html)
6. Create binary distribution folder:
   1. Copy executables and libraries to distribution folder
   2. Copy manual to `Docs` -subfolder
   3. Copy filter files to `Filters` -subfolder
   4. Copy plugin files to `MergePlugins` -subfolder
7. Create source distribution folder from pristine sources (see 1.1 in the list)
   1. Remove plugin dlls from sources
8. Create packages from binary- and source-folders
9. Create checksums (MD5 or SHA1) from packages and installer
10. Run virus check for all files

### Calculating checksums

Checksums must be calculated and published for all released files. Using checksums downloaders can verify the files are downloaded without erros and more importantly the files are the same files that were published. This very efficiently removes the possibility somebody has modified the files.

It is recommended that SHA-1 checksums are used.

There are several tools that can calculate SHA-1 checksums. One such tool is Checksum Tool.