0

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.

Sepelio
  • 33
  • 1
  • 4

2 Answers2

0

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.

Christopher Painter
  • 54,556
  • 6
  • 63
  • 100
0

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.

PhilDW
  • 20,260
  • 1
  • 18
  • 28
  • One of these days, ask me over a beer about the time back in 1996 when we had a conflict between our application's "security.dll" and Windows 3.1's "security.dll" or the time we had a conflict between a .bmp in our application directory and a .bmp in the system directory by the same name because someone decided to make a fancier version / higher resolution of our .bmp and make it the wallpaper. Neither ended well and taught me lessons that I obey to this day. – Christopher Painter Apr 15 '14 at 14:20