Reputation: 35
I made several setups with wix suppressing all of the "files-in-use"- and "please restart app/computer now/later"-dialogs by setting following properties:
<Property Id="REINSTALLMODE" Value="amus" />
<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />
<Property Id="REBOOT" Value="Suppress" />
But one product which comes with a dll named "KernelBase.dll" is still prompting the file-in-use dialog on uninstall, listing weird standard-windows applications like cmd, paint, notepad, ... I can press "ignore" or "try-again" to proceed. The uninstallation succeeds and no files are left.
The problem seems to be that our KernelBase.dll in C:\Program Files (x86)\ProductName\ is confused with KernelBase.dll.mui from C:\Windows\SysWOW64\de-DE\. After renaming our dll the file-in-use dialog didn't show up anymore.
I can't believe that dlls are referenced by their names. I dont know much about the dll registration, but the fullpath seems to be the common UID for a dll, so to which screwed up list is Windows Installer referring to? One doesn't know any name of any windows dll, so i guess there should be something stopping me from building (or at least using) such a dll if there was any conflict.
So my question is: What is Windows Installer doing here? What can I do to please it so it stops confusing the two dlls. Renaming our own dll should be the emergency solution.
MSI version : 5.0(.7601.17807)
OS : Windows 7 Professional 64bit
Thanks in advance.
Upvotes: 0
Views: 532
Reputation: 20790
I vaguely remember this as a bug in Windows Installer, but I haven't attempted to look it up. What version of the MSI engine are you using? OS version?
Christopher is right - you should change the name of the Dll.
Upvotes: 0
Reputation: 55601
KernelBase.dll is a well known Windows DLL found in the System32/SysWow64 folders. Rename your DLL to not conflict with an O/S system file. Bad things (DLL hell) will likely follow if you do not.
Upvotes: 0