情景:
一切都很好,这些节目并排运作。但是,在卸载时,如果同时安装了两个版本,则不会删除程序菜单和桌面快捷方式,并抱怨由于组件未被删除而无法删除它们。 (参考计数的气味呃?)。
虽然这是一个美容问题,但我决定看一看,在Orca我注意到文件的ComponentIds是相同的。
看来这些是基于[TARGETDIR]\myfile
的哈希值,而不是实际展开的TARGETDIR
。
E.g。我的TARGETDIR
在安装方面实际上有所不同,c:\program files\myCompany\v1.0\myfile
和c:\program files\myCompany\v2.0\myfile
但是对于安装程序项目,我认为它基于TARGETDIR\filename
的哈希值。
我发现了
myfile2
会生成不同的ComponentId TARGETDIR
的{{1}}子文件夹会生成不同的ComponentId。但我不确定会产生什么样的影响。 我是否正确地解释了发生了什么,这是我唯一的解决方法吗?与v2.0
共享顶级文件夹有什么风险?
微软尚未在一年多时间内更新过这个VS2015组件,也没有开源,我假设他们很高兴它死了,我应该转移到Wix?< /强>
更新 这似乎只是合并模块的问题,而不是顶级安装程序。
答案 0 :(得分:1)
正如您所发现的,Visual Studio不会公开组件ID。如果组件ID存在其他问题(或WiX支持VS不支持的话),那么请迁移到WiX。但是,在您的情况下,可能只有一个组件ID,那么最简单的解决方案是执行构建后步骤以更改该组件ID。使用Windows Installer SQL和WiRunSql.vbs等脚本(来自Windows SDK),您只需更改ID即可。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa372021(v=vs.85).aspx
微软曾试图弃用安装程序项目,并且受到大众需求的影响,因此在任何情况下,迁移到其他项目的计划都可能是个好主意。