无法卸载system32文件夹中的DLL

时间:2013-08-01 14:57:47

标签: wix windows-installer installer wix3.7

我的MSI内置WiX 3.7,在system32文件夹中安装了一个DLL。卸载时,除了system32文件夹中的dll之外,所有组件都将被删除。我可以在SharedDLLs注册表项[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs]中看到此DLL,并将引用计数设置为1

此DLL非常特定于我的应用程序,没有其他应用程序使用它。如果我删除DLL的注册表项(SharedDlls)并尝试卸载,则DLL将从system32文件夹中删除。

我的主要要求是当我尝试卸载时,还必须删除system32文件夹中的DLL。有人可以建议如何实现它吗?

如果WiX代码中的任何标记可能阻止在sharedDlls [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs]中输入此DLL。

1 个答案:

答案 0 :(得分:0)

在wix中,安装dll的组件应具有SharedDllRefCount =" No"属性,或者根本不显式设置SharedDllRefCount属性(默认值为"否)。构建MSI后,请仔细检查dll组件的Component表中的属性列是否设置了0x0008位(msidbComponentAttributesSharedDllRefCount - http://msdn.microsoft.com/en-us/library/windows/desktop/aa368007(v=vs.85).aspx)。

相关问题