![]() |
|
#1
|
||||
|
||||
|
Assembly not being removed from GAC...
Hi, I've recently noticed that our GAC assemblies aren't being removed on uninstall. I can run "gacutil /u" on them ok (i.e. the references are being removed, not the files/directories).
I've run an eariler product that uses MSI 2.0, and they are removed okay... log excerpt : MSI (s) (50:00): Executing op: FileRemove(,FileName=MicroFocus.COBOL.FileHandler.dll,,ComponentId={A22E97B8-1A4E-4BE1-932F-7D5DC1DCA76F}) RemoveFiles: File: MicroFocus.COBOL.FileHandler.dll, Directory: MSI (s) (50:00): delegating uninstallation of assembly file : MicroFocus.COBOL.FileHandler.dll to Fusion With our current product which uses MSI 3.1, the log states : MSI (s) (7C:28) [14:24:15:812]: Executing op: SetTargetFolder(Folder=C:\) MSI (s) (7C:28) [14:24:15:812]: Executing op: FileRemove(,FileName=MicroFocus.COBOL.FileHandler.dll,,ComponentId={8357AE3B-2939-467E-9A84-8663F1DAD22A}) MSI (s) (7C:28) [14:24:15:812]: delegating uninstallation of assembly file : MicroFocus.COBOL.FileHandler.dll to Fusion With 3.1, RemoveFiles isn't called, and I'm wondering if the fact that the Folder is set to C:\ is significant. Anyway, I created a new 10.5 Basic MSI project and added one assembly, built it, installed it on a clean OS, uninstalled it, and the assembly was left behind.... Any ideas anyone? |
|
#2
|
|||
|
|||
|
I'm no expert on this but here's something to check. On the machine that you tested your new install, was the old install present on it first? Your two example codes have what appears to be the same file with different component ID's installing to the same place (GAC) which breaks component rules.
Also, I'm not convinced your installs are being done right in the first place because you mention that you can use gacutil to uninstall the assemblies. Gactuil will not uninstall any assemblies I've installed using MSI (unless you delete the appropriate reg keys.) |
|
#3
|
||||
|
||||
|
Ah, no, my installs were done on a VMWare Virtual Machine, which was reset before each install.
As for GacUtil, I was able to do this AFTER the uninstall, i.e. the reference had been removed, but not the assembly. Anyway, I've since worked out the problem. For the 2.0 .NET Framework, an additional record is required in the MsiAssemblyName table for each assembly. Component = Name = ProcessorArchitecture Value = [null]/MSIL/x86 All of our assemblies are installed to the MSIL subdirectory. This does make sense as this is probably just appended to the assembly "remove" call... |
|
#4
|
|||
|
|||
|
I install assemblies to GAC in my setup. Before I installed Framework 2.0 Release everything was OK. But now all my assemblies not removed from GAC after uninstall.
![]() |
|
#5
|
||||
|
||||
|
Check that you have the correct values in the MsiAssemblyName table for each assembly.
Component = -compid- Name = ProcessorArchitecture Value = [null]/MSIL/x86 |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|