views:

256

answers:

1

I'm experiencing some weirdness related to an MSI installation upgrade, perhaps someone out there can help me:

I have two MSIs, an original and an upgrade:

  • MSI version 1.0
    • Contains a .NET assembly, foo.dll, to be installed to the GAC
    • foo.dll is of type "Assembly" (not "Output") within the MSI file system gui.
  • MSI version 2.0
    • Also contains foo.dll (same version), plus a bunch additional assemblies.
    • I would like MSI 2.0 to totally replace 1.0, so I set RemovePerviousVersion to False.

Now the two installation scenarios:

  1. I run MSI 1.0. Foo.dll is installed to the GAC properly. I then run MSI 2.0 and Foo.dll seems to be removed from the GAC, but the additional assemblies are there. I have no idea way. However, if I go to Add/Remove programs and click "Repair," Foo.dll gets put in.

  2. MSI 1.0 is never installed and I run MSI 2.0. Foo.dll (and the additional assemblies) is there, as expected.

Any ideas why the foo.dll gets removed during the upgrade?? Thanks in advance!

-Ken

UPDATE After some refreshing/rebuilding, it seems to work now. However, now it does not remove foo.dll when I uninstall the MSI, even though its property "Permanent" is set to false. Not as big of a problem, but it would be nice to know what was going on.

A: 

To correct the weirdness, I ended up doing the following:

  1. Installed Orca.exe, part of the Windows SDK.
  2. Added REINSTALLMODE=amus to the Propery table via Orca, post build.

This solved my immediate problem and corrected the install/uninstall issues I was experiencing. The only problem is that this is a manual process. Next step, make this a part of an automatic post-build event somehow.

Ken

related questions