Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何解除VS2013.msi安装文件与早期/分叉版本软件的关联?_Windows_Visual Studio 2013_Installation_Windows Installer - Fatal编程技术网

Windows 如何解除VS2013.msi安装文件与早期/分叉版本软件的关联?

Windows 如何解除VS2013.msi安装文件与早期/分叉版本软件的关联?,windows,visual-studio-2013,installation,windows-installer,Windows,Visual Studio 2013,Installation,Windows Installer,首先,一点背景信息: 我的Windows软件的1.x版本连接到硬件平台A,该软件是使用VS2010创建的.msi安装脚本和.vdproj文件安装的 我的Windows软件的2.x版本与1.x版本类似,但v2.x软件仅连接到硬件平台B第二代硬件。此软件使用同一.vdproj文件的更新版本(使用VS2013生成)安装 以上这些都很好,但问题是,由于软件的v2.x控制着与v1.x不同的硬件,同时拥有平台A设备和平台B设备的用户将希望同时安装软件的v1和v2,而.msi文件目前不允许这样做 特别是,在安

首先,一点背景信息:

我的Windows软件的1.x版本连接到硬件平台A,该软件是使用VS2010创建的.msi安装脚本和.vdproj文件安装的

我的Windows软件的2.x版本与1.x版本类似,但v2.x软件仅连接到硬件平台B第二代硬件。此软件使用同一.vdproj文件的更新版本(使用VS2013生成)安装

以上这些都很好,但问题是,由于软件的v2.x控制着与v1.x不同的硬件,同时拥有平台A设备和平台B设备的用户将希望同时安装软件的v1和v2,而.msi文件目前不允许这样做

特别是,在安装v1.x时尝试安装v2.x会自动删除v1.x软件,而在已安装v2.x时尝试安装v1.x会导致安装中止,并显示一个错误对话框,说明已安装了较新版本的软件

我想做的是将我的软件的2.x版本与旧的v1.x版本完全分离,这样就安装程序的逻辑而言,它们是完全不相关的项目。它们已经安装到不同的默认安装路径,例如.\Program Files x86\MyCompany\MySoftware v1 vs\Program Files x86\MyCompany\MySoftware v2,所以这应该不是问题,只是.vdproj文件中的某些内容仍然使这两个项目彼此关联

我尝试将v2.x.vdproj文件中的UpgradeCode、PackageCode和ProductCode GUID更改为其他格式,但似乎没有任何帮助;安装我的软件的v2.x仍然会自动卸载/删除v1.x安装,如果安装了v2.x,v1.x安装程序仍然会中止


能不能请更熟悉.msi安装程序行为的人给我一点提示,告诉我如何让它变得不那么聪明?

作为记录,我已经解决了这个问题

更改UpgradeCode值是实现我想要的行为所必需的,但是由于软件构建过程的设置方式,在.vdproj文件中更改它是不够的-构建过程中还使用了一个MyProgram.variables.wxi文件,它包含自己的UpgradeCode值副本。一旦我在两个地方更改了升级代码,解除关联就成功了