0

我使用 wix 进行了多项设置,通过设置以下属性来抑制所有“正在使用的文件”和“请立即/稍后重新启动应用程序/计算机”对话框:

  <Property Id="REINSTALLMODE" Value="amus" />
  <Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />
  <Property Id="REBOOT" Value="Suppress" />

但是一个带有名为“KernelBase.dll”的 dll 的产品在卸载时仍然提示使用文件对话框,列出奇怪的标准 Windows 应用程序,如 cmd、paint、notepad ......我可以按“忽略”或“再试一次”继续。卸载成功,没有留下任何文件。

问题似乎是我们在C:\Program Files (x86)\ProductName\中的KernelBase.dll与来自C:\Windows\SysWOW64\de-DE\的KernelBase.dll.mui混淆了。重命名我们的 dll 后,文件使用对话框不再出现。

我不敢相信 dll 是由它们的名字引用的。我不太了解 dll 注册,但完整路径似乎是 dll 的通用 UID,那么 Windows Installer 指的是哪个搞砸的列表?一个人不知道任何 Windows dll 的任何名称,所以我想如果有任何冲突,应该有一些东西阻止我构建(或至少使用)这样的 dll。

所以我的问题是:Windows Installer 在这里做什么?我能做些什么来取悦它,这样它就不会混淆这两个 dll。重命名我们自己的dll应该是紧急解决方案。

微星版本:5.0(.7601.17807)

操作系统:Windows 7 Professional 64bit

提前致谢。

4

2 回答 2

0

KernelBase.dll 是一个众所周知的 Windows DLL,位于 System32/SysWow64 文件夹中。重命名您的 DLL 以不与 O/S 系统文件冲突。如果你不这样做,坏事(DLL 地狱)可能会随之而来。

于 2014-04-14T12:14:12.217 回答
0

我隐约记得这是 Windows Installer 中的一个错误,但我没有尝试查找它。您使用的是哪个版本的 MSI 引擎?操作系统版本?

Christopher 是对的 - 你应该更改 Dll 的名称。

于 2014-04-14T17:40:51.293 回答