C#的Installer生成的msi的安装文件,安装新版本时提示:已经安装了该产品的另一个版本。无法继续安装此版本
2017-03-20 15:44
453 查看
之前折腾了个C#的项目:
WLW (Windows Live Writer) Plugin–InsertSkydriveFiles
然后又弄了个对应的Installer:
【已解决】给一个C#的Dll库的项目,制作msi安装包 + 【已彻底搞懂原因】制作出来的msi的installer,在卸载程序的时候,在删除本程序所创建的注册表项的同时会把父级注册表项删除掉
生成的msi,是可以正常安装的:
但是有个问题,当之前安装了某个版本的InsertSkydriveFiles_Installer.msi之后,再去安装新版本的InsertSkydriveFiles_Installer.msi,就会出现错误:
已经安装了该产品的另一个版本。无法继续安装此版本。可以使用“控制面板”中“添加/删除程序”来配置或删除该产品现有版本
其值是False,含义虽然很明显了,但还是去官网看看解释:
RemovePreviousVersions Property
Other Versions
3 out of 9 rated this helpful – Rate this topic
Specifies whether an installer will remove previous versions of an application during installation. If this property is set to True and an earlier version is detected at installation time, the previous version’s uninstall function will be called.
Settings
The settings for the RemovePreviousVersions property are:
可以看到,其还专门注释了,说到之前版本和当前版本的UpgradeCode必须一样,但是ProductCode必须不同,即程序的id一致,版本不一致,才可以。
然后又去看了看UpgradeCode and ProductCode的值:
感觉好像是,如果我每次新生成的msi的时候,没有去改动UpgradeCode和ProductCode的话,那么好像版本变动,比如从4.2变化到4.3,好像都是没有变化的,那么岂不是不符合此处的规定了。
不过先不管,先去试试把RemovePreviousVersions改为True,看看能否成功再说。
结果果然还是不行。
5.所以,去把ProductCode改变一下:
然后再重新生成msi试试效果,最后果然可以成功运行了:
【总结】
当用去运行,用C#的Installer生成的新版本的msi安装文件时,出现错误:
已经安装了该产品的另一个版本。无法继续安装此版本。可以使用“控制面板”中“添加/删除程序”来配置或删除该产品现有版本
的话,解决办法是:
去Installer项目的"部署项目属性"中,把RemovePreviousVersions设置为True,意思是,如果之前已安装旧版本的话,会去检测并卸载旧版本。
同时,要确保,前后两次所生成的msi所用的:
UpgradeCode是一样的,即同样的值(其值举例:{C7B39FE7-09DA-4635-83A9-E80421D91E36});
ProductCode是不同的值,是不一样的(其值举例:{32C3FA06-665B-4292-BF52-03465A59A8BF});
注:Installer会自动帮你生成UpgradeCode和ProductCode,而如果你之前就没有改动过这两个值的话,则不同的版本之间的UpgradeCode和ProductCode都一直是没有变的,
所以就需要你去把ProductCode改变一下:
选中ProductCode后,其值的右边会出现 (…)字样,点击它,然后在弹出对话框中点击“新代码”,即可生成新的值。
如此,最后生成的新版本的msi的安装文件,就可以顺利的,先自动卸载已安装的旧版本,正常安装新版本了。
【特别说明:如何打开Installer项目的属性窗口,而非属性页】
1.先点击当前某个文件,然后右击选择属性,会打开属性窗口:
2.然后再点击对应的项目,属性窗口会自动切换到项目的“部署项目属性”:
3.否则,如果直接点击项目,右击选择属性:
4.正常打开Installer项目的属性窗口后,就可以根据自己需要去安装上述的解释,设置对应的值了:
WLW (Windows Live Writer) Plugin–InsertSkydriveFiles
然后又弄了个对应的Installer:
【已解决】给一个C#的Dll库的项目,制作msi安装包 + 【已彻底搞懂原因】制作出来的msi的installer,在卸载程序的时候,在删除本程序所创建的注册表项的同时会把父级注册表项删除掉
生成的msi,是可以正常安装的:
但是有个问题,当之前安装了某个版本的InsertSkydriveFiles_Installer.msi之后,再去安装新版本的InsertSkydriveFiles_Installer.msi,就会出现错误:
已经安装了该产品的另一个版本。无法继续安装此版本。可以使用“控制面板”中“添加/删除程序”来配置或删除该产品现有版本
其值是False,含义虽然很明显了,但还是去官网看看解释:
RemovePreviousVersions Property
RemovePreviousVersions Property
.NET Framework 2.0Other Versions
3 out of 9 rated this helpful – Rate this topic
Specifies whether an installer will remove previous versions of an application during installation. If this property is set to True and an earlier version is detected at installation time, the previous version’s uninstall function will be called.
Note |
---|
The installer checks UpgradeCode and ProductCode properties to determine whether the earlier version should be removed. TheUpgradeCode must be the same for both versions; theProductCode must be different. |
The settings for the RemovePreviousVersions property are:
Setting | Description |
---|---|
False | The installer does not check for previous versions. |
True | The installer checks for previous versions and uninstalls them if found. |
可以看到,其还专门注释了,说到之前版本和当前版本的UpgradeCode必须一样,但是ProductCode必须不同,即程序的id一致,版本不一致,才可以。
然后又去看了看UpgradeCode and ProductCode的值:
感觉好像是,如果我每次新生成的msi的时候,没有去改动UpgradeCode和ProductCode的话,那么好像版本变动,比如从4.2变化到4.3,好像都是没有变化的,那么岂不是不符合此处的规定了。
不过先不管,先去试试把RemovePreviousVersions改为True,看看能否成功再说。
结果果然还是不行。
5.所以,去把ProductCode改变一下:
然后再重新生成msi试试效果,最后果然可以成功运行了:
【总结】
当用去运行,用C#的Installer生成的新版本的msi安装文件时,出现错误:
已经安装了该产品的另一个版本。无法继续安装此版本。可以使用“控制面板”中“添加/删除程序”来配置或删除该产品现有版本
的话,解决办法是:
去Installer项目的"部署项目属性"中,把RemovePreviousVersions设置为True,意思是,如果之前已安装旧版本的话,会去检测并卸载旧版本。
同时,要确保,前后两次所生成的msi所用的:
UpgradeCode是一样的,即同样的值(其值举例:{C7B39FE7-09DA-4635-83A9-E80421D91E36});
ProductCode是不同的值,是不一样的(其值举例:{32C3FA06-665B-4292-BF52-03465A59A8BF});
注:Installer会自动帮你生成UpgradeCode和ProductCode,而如果你之前就没有改动过这两个值的话,则不同的版本之间的UpgradeCode和ProductCode都一直是没有变的,
所以就需要你去把ProductCode改变一下:
选中ProductCode后,其值的右边会出现 (…)字样,点击它,然后在弹出对话框中点击“新代码”,即可生成新的值。
如此,最后生成的新版本的msi的安装文件,就可以顺利的,先自动卸载已安装的旧版本,正常安装新版本了。
【特别说明:如何打开Installer项目的属性窗口,而非属性页】
1.先点击当前某个文件,然后右击选择属性,会打开属性窗口:
2.然后再点击对应的项目,属性窗口会自动切换到项目的“部署项目属性”:
3.否则,如果直接点击项目,右击选择属性:
4.正常打开Installer项目的属性窗口后,就可以根据自己需要去安装上述的解释,设置对应的值了:
相关文章推荐
- .Net C#制作新版本安装包安装时系统提示“已经安装了该产品的另一个版本”
- C# 打包安装 提示:已经安装了该产品的另一个版本
- .Net制作新版本安装包安装时系统提示“已经安装了该产品的另一个版本”
- IIS卸载与安装失败,提示“文件复制操作被取消.安装程序无法继续”的解决方法
- 安装VMware提示低版本未未卸载,无法卸载无法继续安装的解决方案
- Win2003 sp2 下安装IIS,会提示找不到iisadmin.mfl等文件无法继续安装的解决方法
- IIS卸载与安装失败,提示“文件复制操作被取消.安装程序无法继续”的解决方法!
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 ALTER AUTHORIZATION 语句将数据库所
- Windows7安装office2010时提示报错:由于下列原因,安装程序无法继续,需要计算机安装MSXML版本6
- C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】【C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件”的解决】
- 安装oralce 11g后创建监听失败,缺失监听配置文件,也无法生成,提示TNS-04415
- 安装oralce11g后创建监听失败,缺失监听配置文件,也无法生成,提示TNS-04415
- WinCE CAB Manager制作的安装包提示"您已经安装的程序可能无法正常显示,因为它是专门用于上一版本Windows Mobile 软件的"
- exe4j 生成的文件无法运行。弹出错误提示要求安装java安装运行环境解决
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 Alter AUTHORIZATION 语句将数据库
- 安装打印机失败.错误:提示 另一个程序正在使用此文件,进程无法访问
- iis提示“另一个进程正在使用此文件,无法访问”解决方法
- 20080519 - 在 Windows Server 2003 下安装 SQL Server 2000 提示“无法验证产品密钥”
- C#调用iTextSharp组件生成PDF文件, 在VS2005下已经调试通过!
- Win2003 下安装IIS会提示找不到文件iisadmin.mfl无法安装解决办法