cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
RickGutleber
Level 3

Creating an installer for an automatic daily build

Here's my dilemma. It was just reported that the installer for the daily build of the Windows client of our product doesn't actually update the binaries if a previous build was installed. The reason this wasn't discovered for so long is that all the testers just knew that you had to uninstall first and then reinstall. It hadn't occurred to me to test this because a.) No one had ever complained about the installer, and b.) I don't normally install the app, I build it from source. Regardless, the installer really should just update the binaries regardless, and I wish to make it work that way. However, I don't know how to do it.

A major upgrade requires the version number to be changed, but the version number is set for the actual release of the product: in our case it's "3.5.1.1". A minor version and an automatic upgrade require that I point the InstallShield project at the previous version of the the installer in order for it to figure out what do. This doesn't work in an automated build system where multiple versions and multiple branches of the product are being built in succession. Also, the installer needs to be able to upgrade from any previous build of the same version.

Upgrading different versions isn't an issue because each version of our application gets installed in its own directory since we support having multiple versions installed at the same time.

Previously, we had always changed the Upgrade Code, Product Code and Package Code for every build. The InstallShield project is stored in Git in XML format, and we run sed on it before building to replace the version number and GUIDs before building the installer. This had been done many years ago, and I didn't change it because it seemed to do the right thing. Apparently it _did_ work fine with InstallShield 2008, which is what we had previously used. I recently took over responsibility for the installation scripts and we upgraded to InstallShield 2015 a few months ago, and now discovered this problem when one of the documentation persons reported it.

So how can I create an installer that will automatically upgrade over any previous installation with the same version number? Yes, this means even if you have a later build already installed, the installer will just overwrite it. That's OK. I just need to be able to ensure when you run the setup.exe, you get the version of the app that it contains, period.

Thanks for your help,

Rick
Labels (1)
0 Kudos
(2) Replies
RickGutleber
Level 3

So I tried adding a "minor update" and pointed it to an older version of the installer (which is a really odd thing to have to do, IMO). However the same thing happens with the install after this... the package installs just fine, but it doesn't actually update anything. The old version of the binary remains in "\Program Files".

It seems that the only way to make this work is to bump the version number, which really messes things up because these are subsequent builds of the same version. It would be confusing to testers as to which version they are running.

How hard can it be to just have the installer replace the stuff that's already installed? I must be missing something obvious.
0 Kudos
RickGutleber
Level 3

Yup, I was missing something obvious.

If you go into "Organization" and click on "Components", and open up each component to see the individual files, you can right click on each file and select the option, "Always Overwrite".

The InstallShield user interface is pretty good for discoverability, but there have been a number of times I have been unable to find something because I wasn't right-clicking on.

Anyhow, problem solved.
0 Kudos