2011-06-23 43 views
1

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

我们在从MSI升级和卸载时遇到问题。我们遇到的问题会影响我们在RemovePreviousVersions设置的两侧。

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

  • 当RemovePreviousVersions =真, 安装的更高MSI版本 上层建筑已经安装 应用程序不会覆盖在GAC中的DLL 大概是因为 的DLL版本相同或因为卸载不工作。我不确定我是否知道足够的知道原因。

我们想要做的就是要么能够正确卸载,要么正确升级实际上RemovePreviousVersions并且安装新版本而不需要干预。我没有看到更改我所有DLL版本的理由。我们不关心版本控制,除了知道他们的整个应用程序的版本是什么,我们可以通过设置安装项目的版本来做到这一点,这就是全部。

FWIW,我们不能使用WIX,因为我们需要使用一些第三方多部分DLL,但使用WIX无法轻松添加到GAC中,但完全可以使用VS Setup项目来使用WIX。

编辑: 顺便说,通过资源管理器视图手动删除从GAC中的文件或使用的Gacutil.exe/U完美的作品。但是,我认为我不应该将gacutil添加到我的安装项目中。我觉得它应该为我做。虽然,我可能会给.NET安装项目太多的功劳。

回答

0

关于安装项目不卸载从GAC大会:你检查注册表中没有一个挥之不去的提到它在

电脑\ HKEY_CURRENT \ USER \软件\微软\安装程序\ Assemblies \ Global

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