Page 2 of 2

Posted: Thu Apr 26, 2007 7:05 am
by MichaelNesmith
You can simply use the native .NET tools, called by Run Program, to unregister the assembly. If you do this after Apply Uninstall, and there are no more remaining clients for the assembly ("unpinned"), it will be removed. Otherwise the native .NET tools will not remove the assembly.

Posted: Thu Apr 26, 2007 7:53 am
by alma88
Yes, I will try doing that myself, thanks for the suggestion.

Several months ago there had been similar discussions on the Wise and InstallShield forums. Both companies implemented this and their products now properly remove assemblies from the GAC. For us .NET component developers it is quite important that the install/uninstall basics work as expected.

Would I be asking too much if I requested a fix for this issue?

Posted: Thu Apr 26, 2007 9:16 am
by MichaelNesmith
Technically, this won't be a fix. It will be a custom action for doing something MSI cannot do on its own.

The Wise/IS solutions, our custom DLL, and the Run Proyram command thus all amount to doing the same thing.

Posted: Tue May 01, 2007 4:07 am
by alma88
Maybe I failed to make clear what I am looking for... my mistake. Let me have another shot at convincing you about the importance and urgency of this issue.

1. Try the following Visual Studio 2005 Setup Wizard project. It is very simple, all it does is install an assembly in the GAC. Upon uninstall, the assembly is removed from the GAC. Same behavior as the InstallShield and Wise installers, only this time it's got the "official" stamp on it since it's by MS.

2. In http://msdn2.microsoft.com/en-us/librar ... S.80).aspx, it states that "The Installer pins the assembly for the first Windows Installer client and unpins the assembly when the last Windows Installer client is removed. The file is then deleted from the global assembly cache".

The removal of assemblies from the GAC once they are not referenced any more is part of the very basic functionality that we, as .NET developers, expect from an installer. Leaving the assemblies in the GAC after an uninstall is, IMHO, an incomplete job.

Can you please, pretty please (should I drop on my knees and beg?) urgently enable IA to behave as the MS/InstallShield/Wise installers do?

File Attached:

Setup1.zip

Posted: Thu May 15, 2008 7:52 am
by ricardo.schiavo
MichaelNesmith wrote:You can simply use the native .NET tools, called by Run Program, to unregister the assembly. If you do this after Apply Uninstall, and there are no more remaining clients for the assembly ("unpinned"), it will be removed. Otherwise the native .NET tools will not remove the assembly.
Which tool are you suggesting? installutil.exe? Because I won't have gacutil.exe available in the customer machine...

Also, where can I get the dll you developed to remove the assembly from the GAC? I'm using IA Studio 6.5

Thanks

Posted: Thu May 15, 2008 7:01 pm
by GlenG
Check out help for the 'Remove Assemblies' command that has been added since this thread started back in 2006.
You don't need to call installutil.exe anymore.

Posted: Thu May 15, 2008 7:07 pm
by ricardo.schiavo
GlenG wrote:Check out help for the 'Remove Assemblies' command that has been added since this thread started back in 2006.
You don't need to call installutil.exe anymore.
The problem is I'm using IA 6.5, and it was added at 6.6...