Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

two products, shared dlls, prob during uninstall


1 reply to this topic

cip100

cip100
  • Full Members
  • 1 posts

Posted 05 January 2009 - 19:45

I've got two products (A and cool.gif.
A has the following dlls:
1.dll
2.dll (version 1.0) - needs 1.dll to work
3.dll (version 1.0)

B has the following dlls:
1A.dll (same functionality as 1.dll, newer version, new name (so new compID))
2.dll (version 1.1) - needs 1A.dll to work
3.dll (version 1.1)

When you install both on the same system, everything works ok:
1.dll is still there (if anything else in A needs it)
1A.dll is there
2.dll is now version 1.1
3.dll is now version 1.1

The problem comes when the user chooses to uninstall B from Add/Remove programs. THEN on the system you've got:

1.dll
2.dll (version 1.1)
3.dll (version 1.1)

So 2.dll is no longer working since 1A.dll isn't on the system.

Each of the following have a unique Component ID:
1.dll
1A.dll
2.dll
3.dll

I understand why it's happenning, but other than marking the component for 1A.dll as perm. and always leaving it on the system, is there a way to have it uninstall only after the other product is uninstalled? (or certain components?)

Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 05 January 2009 - 20:39

I think you are trying to install 2 different products with similar dependencies to the same folder. Not a good idea, unless you insist on using shared files (in which case you should install to system32 or common files folder).

The easiest way to resolve this is to keep both products completely separate:

C:\Program Files\MyCompany\MyProductA\
App.exe
1.dll, version 1.0
2.dll, version 1.0
3.dll, version 1.0

C:\Program Files\MyCompany\MyProductB\
App.exe
1.dll, version 1.1
2.dll, version 1.1
3.dll, version 1.1

All unique GUIDs. Alternatively you can try to set the shared attribute to yes for the file you want to keep. This will enable legacy style refernece counting based on installation location and not msi component referencing.
Regards
-Stein Åsmul