2
votes

At my company we used an old outdated ant system routine to create an msi installer. Since it's quite unmanageable I replaced the whole routine by a python routine.

It basically does the same thing, gather a bunch of files, and build an msi installer with wix.

The problem I'm dealing with is that the msi created by the ant routine is ~900KB larger than the one created by the python routine (Both ~140MB). I tried looking for a difference, but can't manage to find one.

What I've tried:

  • Install both installers on a clean machine: Both install folders contain the same files and are equal in size.
  • Simply unzip both msi's and compare them: No difference
  • Compare both msi tables with SuperOrca: only the ProductCode is different, but this is as expected.

I have no other ideas on why there could be a filesize difference, but feel kind of uncertain since something might be missing. Any ideas?

3
Did you get this issue resolved? I believe the difference must be related to different compression methods being used by the Ant and the Python approaches. Check stackoverflow.com/a/6313772/129130 and compare with Your MSI's Cab and media tables to verfiy the same compression methods are used.Stein Åsmul

3 Answers

2
votes

Are both ANT and Python builders using the same installation of Wix from your build machine? When the application files are the same, these small differences in size of the final installation package can come from the stubs/bootstrappers and other resources from Wix that get included in the package.

If you would use different versions/builds of Wix to build the two packages you could have different sizes for those installer resources, thus a different size for the final setup package.

0
votes

I had the same issue today: I made multiple MSIs from the exact same binaries using MakeMsi that where differing by some K bytes. At first I thought that there was something wrong with my build script.

After some web searching (without direct success), I tried the dump function of MSIDIFF a tool provided by the MakeMsi creator. It converts the contents into an processable MakeMsi script (which is plain text).

I dumped two MSI packages differing in size and compared the results (nearly of the same size) with a diff tool (I used WinMerge, TortoiseMerge). What I found was that only values (GUIDs, Dates) in few lines differed.

This brought me to the conclusion that the different sizes of the MSIs resulted from slightly different compressing rates (we know that CAB files are involved). Try the same with Zip and two texts of the same size with few differences in it, and you'll get the same phenomenon.

0
votes

An MSI file is a "sparse" file, not a continuous stream of data. Just the order in which a tool builds an MSI file can result in different sizes.