我们有一个将主要输出转储到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安装项目太多的功劳。