Sepelio
Sepelio

Reputation: 35

Dll is confused with a windows-dll with same name causing file-in-use dialog in WiX-Setup

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

Answers (2)

PhilDW
PhilDW

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

Christopher Painter
Christopher Painter

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

Related Questions