MSI removes required assembly on upgrade install, but replaces it on Repair

686 Views Asked by At

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.

1

There are 1 best solutions below

0
On BEST ANSWER

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.