user551962
user551962

Reputation: 97

MSI diff on packages to create patches

I am looking at what the best options for creating patches for our clients. They don't want a full blown installer when doing minor patches (from 1.0 to 1.1) since they will need to do a full regression on the system.

I wanted to know whether there is a tool (paid or not) that will take 2 msi builds do a diff/compare and out put a useable patch installer.

Most of the time it will be updates to assemblies (modified or new) but may require some custom script (in c# if possible)

Upvotes: 1

Views: 963

Answers (2)

slugster
slugster

Reputation: 49965

They don't want a full blown installer when doing minor patches... since they will need to do a full regression on the system.

This statement is based on some faulty logic and whoever uttered it is blowing smoke out the proverbial. There is every bit as much risk from a patch install as what there is from a full installer - if the testers have no faith in your build/release process then both need to be tested fully. The msi is just the packaging, a full install or a patch install can both change the whole system. If the testers want to come up with the argument that "with the patch, the file abc.dll has not changed so we don't have to test the functionality in it", then you can argue that that thinking is incorrect - if the code using abc.dll has changed then abc.dll may exhibit different behaviour.

IOW, my argument is that a patch install or full install both carry the same level of risk, and both should be tested to the same level. To minimize the amount of retesting required you need to build trust and certainty with your release process - an automated build/release process and an auditable source control system should do that for you.

In any case, i agree withthe answer from @Christopher - tools such as InstallShield can be used to create a single msi that is either a full install if you haven't already got the product on your machine, or it will switch to upgrade mode if it detects an item with the same product code and a lesser version number already installed. Having said that, it can be incredibly difficult to get that upgrade to work correctly.

Upvotes: 3

Christopher Painter
Christopher Painter

Reputation: 55620

InstallShield can do this provided:

  1. You follow strict compliance with the component rules and have a working minor upgrade servicing story.

  2. You are incrementally building your assemblies as to not make the system think all of your files changed.

There are other ways to accomplish this but it takes quite a bit of plumbing to be honest.

To be honest, I've heard your "we have to test it all" story many times and I've never bought the argument. Usually they want to piece-meal their baseline and then stick their head in the sand on what the true test surface is. Usually their real problem is one of SCM / Build / Release discipline and not whether the installer is a Major Upgrade, Minor Upgrade or Patch. ( IMO )

Upvotes: 2

Related Questions