I am wondering whether I should branch our installer script/project-file (we use InnoSetup) with each application release or whether I should keep one in installer script that generates the setup for all versions and branches.


We use branches ("maintenance versions") heavily as our features are very customer driven and we often first implement a bugfix in a specific customer version to keep things stable. (Yes. Not optimal. But it's also what the customers like. As little code-changes as possible to take no risk with their expensive hardware lying idle because of regressions.)

So our branches/versions would look like this

v150.6 - "150" branch installed with customer X 
v151.7 - "151" branch installed with customer Y, Z, A and B
v156.3 - "156" branch installed with customer C and D
vCurrent - Development of new features - will produce a v157 eventually

I have now checked in our setup script into version control and it already has seen quite a few bugfixes and tweaks.

At the moment, when a new v151.n+1 maintenance version is built, the automated build scripts take the setup script checked into v151 branch and create a setup with this. So obviously, a v151.8 version would have a bit an outdated installer, although "95%" of all fixes to the installer would be applicable to all old releases.

I am therefore considering adjusting our automated build scripts to always use the setup script from the vCurrent branch: - also for the setups of newly created maintenance versions of old branches.

What is your take on this. Should a setup/installer script be "tightly bound" to a sourcecode version, or should the lifecycle of setup logic be more independent from the actual code-version/binaries being installed, so that fixes to the setup logic can be used across a range of different (maintenance) versions?

1 Answer 1


It depends... we have a similar situation, if you made sure that the products only get bugfixes and not anything that might require changes to the setup scripts, then the script remains constant and you could re-use a master one for each branch. However, when the branches get modified products (ie that 5% you mentioned) then a single setup script for everything would not be sufficient for each branch, so you'd have to have a script for each branch.

If you use something like Wix, you can pre-process the files to include or exclude items, but I think that would require far too much time spent maintaining the scripts. It would be mroe efficient to store dedicated scripts for each branch and merge changes across the branches as required.

I know that's not a great answer, but it really depends on what each branch is installing, and how much effort including that last 5% involves.

  • Thanks for highlighting "it really depends ... how much effort including that last 5% involves".
    – Martin Ba
    Jul 12, 2011 at 10:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.