FirebirdSQL / firebird

Firebird server, client and tools
https://www.firebirdsql.org/
1.23k stars 212 forks source link

Cleanup after uninstall #7278

Open lwennekers opened 2 years ago

lwennekers commented 2 years ago

After the uninstall of firebird the following files remain:

Windows\System32 => GDS32.DLL Windows\SysWOW64 => FBCLIENT.DLL Windows\SysWOW64 => GDS32.DLL

Even when using the /CLEAN option. (BTW is this option still looking at the shareddlls registrykey?)

thanks in advance for the support

reevespaul commented 2 years ago

Which version of Firebird?

lwennekers commented 2 years ago

Sorry 4.0.2. I did some more testing and its seems to be varying

mrotteveel commented 2 years ago

You may want to check the output for instclient q f and instclient q g (both from the 64-bit and 32-bit instclient) before uninstalling. Likely the shared DLL count was higher than 1, which will cause it not to be removed when executing instclient r f and instclient r g (which I believe the uninstall does).

reevespaul commented 2 years ago

The uninstall does call instclient for client libs and for SysWOW64, if relevant. But instclient has to respect the shared DLL count and if it is not zero then it will leave the file behind. This is as designed.

If this continues to be a problem I would suggest running the installer and the uninstaller with the /LOG or /LOG="filename" option. That may shed more light on the problem. Although in my experience the innosetup logs aren't that helpful. If you don't specify a log filename you will have to go digging into the current user's TEMP directory to find a dynamically generated unique filename. If you do specify a filename make sure it does not exist, otherwise the (un)install will abort.

lwennekers commented 2 years ago

I did some testing. I uninstalled everything. I cleaned the shared dll''s and did my installation. The shared dll's were all set on 1. Also for the files I mentioned. An uninstall removed every but the conf-files. Those files were the only ones in the registry. After that I did another clean installation again and I ran the following commands:

"C:\Program Files\Firebird\Firebird_4_0\instclient.exe" i f "C:\Program Files\Firebird\Firebird_4_0\instclient.exe" i g "C:\Program Files\Firebird\Firebird_4_0\WOW64\instclient.exe" i f "C:\Program Files\Firebird\Firebird_4_0\WOW64\instclient.exe" i g

It seams the the GDS32.dll is reinstalled every time this command is executed and not the FBClient.dll. Perhaps this is by design but now I understand why its not de-installing. The counter for GDS32 is increasing every time.

I saw the same for the conf-files. Uninstalling didn't decrease the counter and an install afterwards is increasing the counters all the time. I now understand your principles. I hope you got enough information for now.