0

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

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

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

如果 WiX 代码中的任何标志可以阻止此 DLL 在 sharedDlls 中的条目[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs]

4

1 回答 1

0

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

于 2013-08-09T03:47:32.933 回答