MSI无法卸载.dll文件 [英] MSI not uninstalling .dll files

查看:220
本文介绍了MSI无法卸载.dll文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个程序,该程序用于正常卸载并在卸载过程中删除与其关联的所有文件。

I have an program that used to uninstall properly and remove ALL files associated with it during uninstall. We have revamped our install/uninstall process to now use installshield.

在之前的安装/卸载过程中,它可以正常工作直到大约2周,然后我们进行了更改。即使现在有了新的installshield安装程序,卸载后仍无法删除.dll文件。

With the previous install/uninstall process it was working just fine until about 2 weeks before we changes it, and still even now with he new installshield installers it fails to remove the .dll files upon uninstall.

我认为安装程序本身并没有问题,因为我们拥有两种完全不同的方法存在相同的确切问题。

I don't think the problem is with the installers themselves because we have the same exact problem with 2 very different methods.

当前要使卸载过程正常进行,我们使用控制面板将其卸载,然后手动删除其余的.dll文件

Currently to make the uninstall process work we use control panel to uninstall it then delete the remaining .dll files manually

所有具有这些组件的机器都会发生此问题,并且所有组件都在发生此问题。
所有机器都同时启动有问题。

This problem happens to all the machines with these components and it is happening with all the components. All machines had problems start at the same time.

使用我的installshield进程,我将详细的日志记录输出到.txt文件,我不知道该怎么办最好只显示文件中的所有信息而不仅仅是大量转储。

with my installshield process i have verbose logging output to a .txt file, I do not know how would be best to display all the information in the files without it just being a massive dump.

推荐答案

通常,这与标记Shared有关设置为dll的组件的yes。这将增加注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLL SharedDLLRef 计数>。与Installshield错误结合使用,可以使文件保留卸载状态。解决方案是将保存文件的组件设置为shared = no,然后删除 SharedDLLs 中的条目,然后再次尝试卸载。

Typically this relates to the flag Shared set to yes for the Components holding the dlls. This increments the SharedDLLRef Count in the registry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs. Combined With Installshield bugs this can leave the file on uninstall. The solution is to set the component holding the file to shared = no and delete the entries in SharedDLLs then try the uninstall again.

此sharedDLLs引用计数是与非msi安装程序兼容的功能,在我看来,不应将其用于进入system32的文件。

This sharedDLLs ref Count is a compatibility feature With non-msi installers and shouldn't be used in my opinion short of for files going to system32. MSI Reference Counts using the Component guids.

UPDATE :启用SharedDllRefCount可在此处设置旧版引用计数:

UPDATE: Enabling SharedDllRefCount sets the legacy ref-count here:


  • 64位 HKLM\软件WMicrosoft\Windows\CurrentVersion\SharedDLLs

  • 32位 HKLM\软件WWow6432Node\Microsoft\Windows\CurrentVersion\共享的DLL

  • 64-bit: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
  • 32-bit: HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs

清理:

  • Cleaning Up Your Shared DLLs Registry References for MSIs (untested by me).
  • And some further MSDN suggestions for stranded components.
  • Comprehensive explanation of reference counting errors.

这篇关于MSI无法卸载.dll文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆