/build/static/layout/Breadcrumb_cap_w.png

remove shared dlls

I have a problem when doing a major upgrade from an older version of our application some of our files are not being removed. This is because they are shared files and their reference count in the HKLM\software\microsoft\windows\currentversion\shareddlls is 2 so when uninstalled the count goes to 1 leaving behind the component. Is there anyway programically to reduce the shareddll count to 0. I only want to remove the dlls that I install for our application.

Thanks in advance

0 Comments   [ + ] Show comments

Answers (9)

Posted by: kiptek 14 years ago
Second Degree Green Belt
0
what about the other apps that installed them & upped the count? If your app on uninstallation reduces the count by one, then technically you have achieved your goal & left the box as when you found it. Why would you want to risk breaking other apps? Your install should only remove what it put down, & maybe by extension any user or app related files/settings created post installation by the app alone.. if you are laying down newer versions of the files i would suggest app isolation using either .local (dll/com redirection) or manifests (win32 assemblies)... do you have sort of conflict management in place? What is your CM tool of choice?
Posted by: mutchie 14 years ago
Orange Belt
0
We have no conflict management system in place.

I haven't achieved my goal because when doing the major upgrade it should remove all of the files and reinstall. But because the shareddll count is greater than 1 these files are not being removed and as a result the upgrade is not working correctly because some of the files are upgraded and others aren't causing our software to fail when customers try and use it. The only files this affects are the ones that are installed for our software these files can not be used by any other applications. The reason we have ended up with this problem is because of old installers which didn't work correctly.

The only solution we have at the moment is not good. The customer has to uninstall our application and manually remove the shareddlls then reinstall the application, we don't want to have to do this because most of our customers are not computer people and it wastes their time. An upgrade should upgrade.

I forgot to say that I am using installshield 2008 to create the installer.
Posted by: kiptek 14 years ago
Second Degree Green Belt
0
Well, if you know for sure that you own these files, then why not utilize the RemoveFile & RemoveRegistry table to whack the problematic remnants & maybe a CA to completely delete any remaining directories. Also, as you "own" the software, if you have properly versioned your files, then windows installer should be installing your newer versions over the old ones... it all comes down to the integrity of your installer package... did you guys cut any shortcuts? Are you one of those vendors we are constantly ranting about in here?
Posted by: mutchie 14 years ago
Orange Belt
0
The removefile table I have managed to get working to remove the file but the ref count stays the same.

RemoveRegistry table I have never used will give it a go.

No there was no shortcuts taken something in one of the old installers has caused the problem.
Posted by: mutchie 14 years ago
Orange Belt
0
Thanks that worked. I also had to add an entry to the registry table.
Posted by: anonymous_9363 14 years ago
Red Belt
0
when doing the major upgrade it should remove all of the files and reinstall. That depends on where the RemoveExistingProducts action is sequenced, though, doesn't it? MS recommends that it goes right at the end, to reduce the overhead of removing and then installing files which haven't changed (even a major upgrade would probably have files in common with the older version).
Posted by: elgwhoppo 14 years ago
Senior Purple Belt
0
On some upgrade MSIs I have had to bump up the RemoveExistingProducts sequence to 1510, which should be right after InstallInitialize. The reason I had to do this was because of unversioned files. Here is a good read on the MSI upgrade rules for versioned, unversioned files if you're interested.
Posted by: mekaywe 14 years ago
Brown Belt
0
The reason behind this problem is due to the change in Component GUID from lower version of app to higher version of app. This problem will occur for the files that are installed to Shared locations such as Windows, System32, Common files Folder etc..

To resolve the issue:

1. Copy the GUID of the component of the file in older version of the Application and replace the GUID of the component in the higher version of app for that respective file.

This will resolve the Issue in most of the cases.

Any suggestions are Welcome.
Posted by: kiptek 14 years ago
Second Degree Green Belt
0
to bump up the RemoveExistingProducts sequence to 1510, which should be right after InstallInitialize. The reason I had to do this was because of unversioned files.
which in this case would not help as it would perform the uninstall, bump down the sharedDLL count, but the file would still remain resident & not be removed or overwritten.

Although I agree with you that it is sometimes advisable to move the RemoveExistingProducts up (I typically move to 1475 b4 InstallInitialize) especially if you have no control over the upgrade path & have not performed things like component matching between the 2 MSIs...
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ