【问题标题】:VS 2008 Setup Project Uninstall from GAC issueVS 2008 安装项目从 GAC 问题卸载
【发布时间】:2011-09-21 10:11:21
【问题描述】:

我们有一个将主要输出转储到 GAC 的项目的解决方案。我们需要这样做,因为我们的软件是另一个应用程序的插件,它可以安装在任何地方,并且可能同时安装多个版本。

我们在从 MSI 升级和卸载时遇到问题。我们遇到的问题对 RemovePreviousVersions 设置的双方都有影响。

  • 当 RemovePreviousVersions=False 时,它 要求用户卸载 手动应用。如果卸载程序实际上可以正常工作,这对我们来说很好。但是,卸载会留下 徘徊在 GAC 中的 DLL 和 安装下一个版本的 安装程序不会覆盖 DLL 在 GAC 中,因为他们的版本号 是相同的。

  • 当 RemovePreviousVersions=True 时, 安装更高的 MSI 版本 在已经安装的之上 应用程序不会覆盖 GAC 中的 DLL 大概是因为 DLL 版本相同或因为卸载不起作用。我不确定我知道的足够多,不知道是什么原因。

我们想要做的就是让卸载正常工作或升级实际 RemovePreviousVersions 正确并安装新版本而无需干预。我没有理由更改我所有的 DLL 版本。除了知道他们使用的整个应用程序的版本之外,我们不太关心版本控制,我们可以通过设置安装项目的版本来做到这一点,仅此而已。

FWIW,我们不能使用 WIX,因为我们需要使用的一些第三方多部分 DLL 存在限制,使用 WIX 无法轻松将其添加到 GAC,但使用 VS 设置项目可以完美运行。

编辑: 顺便说一句,通过资源管理器视图手动从 GAC 中删除文件或使用 gacutil.exe /u 效果很好。但是,我认为我不应该在我的设置项目中添加对 gacutil 的调用。我觉得它应该为我做。不过,我可能对 .NET 安装项目的功劳太大了。

【问题讨论】:

    标签: .net assemblies setup-project gac


    【解决方案1】:

    关于未从 GAC 卸载程序集的安装项目:您是否检查过注册表中没有对它的延迟引用

    计算机\HKEY_CURRENT\USER\Software\Microsoft\Installer\Assemblies\Global

    卸载后?我遇到了类似的问题,一旦我从注册表中手动删除了该条目,卸载随后会正确地从 GAC 中删除程序集。

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多