【问题标题】:Unable to uninstall a dll in system32 folder无法卸载 system32 文件夹中的 dll
【发布时间】:2013-08-01 14:57:47
【问题描述】:

我的 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 代码中的任何标志可以阻止此 DLL 进入 sharedDlls [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs]

【问题讨论】:

  • 如果文件特定于您的应用程序,它在 system32 中的作用是什么?是驱动文件吗?

标签: wix windows-installer installation wix3.7


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多