Search code examples
.netgacglobal-assembly-cache

GAC dll cannot be uninstalled


I am trying to uninstall a dll out of my GAC but I cannot do so.

When I run the following command gacutil -u AssemblyName, I am getting the error message: The assembly is for atleast one application required. (translated from my original german message that says: Die Assembly ist für mindestens eine Anwendung erforderlich.)

How can I figure out what application is blocking my uninstall, I have already uninstalled everything that seems logic to me. Maybe there is some registry entry still laying around or some stuff?!?

Hope you can help me out.


Solution

  • Based on this KB article you have to go look in these keys

    • HKEY_CURRENT_USER\Software\Microsoft\Installer\Assemblies\Global
    • HKEY_LOCAL_MACHINE\Software\Classes\Installer\Assemblies\Global

    You have to look in those keys for REG_MULTI_SZ entry that resembles the following:

    =ysgSC6wx9uiD1dqmmjW>m$!GP^D'A@?z}gn3}lta
    

    and if you find one, remove the complete entry

    for your convienance you can run thse two commands to find if you have keys that fullfill that criteria:

    reg query HKEY_CURRENT_USER\Software\Microsoft\Installer\Assemblies\Global /v /f "YourAssembly*"
    reg query HKEY_LOCAL_MACHINE\Software\Classes\Installer\Assemblies\Global /v /f "YourAssembly*"
    

    Output you will see for example for assembly EntityFramework*:

    EntityFramework,version="4.1.0.0",culture="neutral",publicKeyToken="B77A5C56 1934E089",processorArchitecture="MSIL" REG_MULTI_SZ
    nRfmTp.Na@?e!bFXjH]yMa in>'J*rOm2_)=0&Rea1c^?{