之前折腾了个C#的项目:

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.0
 
 
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.

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项目的属性窗口后,就可以根据自己需要去安装上述的解释,设置对应的值了:

 

C#的Installer生成的msi的安装文件,安装新版本时提示:已经安装了该产品的另一个版本。无法继续安装此版本的更多相关文章

  1. 安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

    已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具 错误提示:已安装 SQL Server 2005 E ...

  2. 运行easy_install安装python相关程序时提示failed to create process

    运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...

  3. 解决安装vc2005运行库时提示Command line option syntax error.Type Command/?for Help

    安装vc2005运行库时提示 这是因为它要自解压到用户的临时文件夹下,如果用户名中带中文,就会报错. 简单的解决方法是,手动解压之,再安装 当然,你也可以修改用户名或者再新建个用户.

  4. 安装 Office project 2013 时提示找不到 Office.zh-cn\OfficeLR.cab

    昨天在安装project 时总是弹出下图中的提示框,在网上搜索了很多办法但是没有解决这个问题. 后来进入到office.zh-cn的文件夹中,在officemui.msi文件中右键卸载,然后在重新安装 ...

  5. 安装Python 库软件时提示"setuptools must be installed to install from a source distribution"错误

    通过如下方式安装: sudo pip install --upgrade pip sudo pip install setuptools 如果提示pip命令没找到,需要先安装python-pip.

  6. 已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

    错误提示:已安装  SQL Server 2005 Express 工具.若要继续,请删除 SQL Server 2005 Express 工具.  解决方案: 修改注册表:HKLM\Software ...

  7. 安装64位office时提示已安装32位的office

    运行 regedit,进入到HKEY_CLASSES_ROOT\Installer\Products下,删除0000510开头的项,没有00005我把00002....的删了也可以

  8. 安装office2016 64位时提示64位与32位的office程序不兼容,在系统是64位的情况下,由于应用的需要,必须装64位的office,怎么办

    解决办法如下: 如果是,那就看看32位的能不能安装了,要是能,就重新安装一次,把所有组件全部安装,然后,在进行卸载,一般可以卸载成功 如果卸载不成功,这个时候再使用微软的专用卸载工具,——要认清,一定 ...

  9. Win7 SP1 安装SQL Server 2012时提示“此计算机上的操作系统不符合 SQL Server 2012的最低要求”

随机推荐

  1. 关于Linux网卡调优之:RPS (Receive Packet Steering)

    昨天在查LVS调度均衡性问题时,最终确定是 persistence_timeout 参数会使用IP哈希.目的是为了保证长连接,即一定时间内访问到的是同一台机器.而我们内部系统,由于出口IP相对单一,所 ...

  2. [转]SOA接口的两种常用实现比较:SOAP vs REST

    原文链接:http://blog.csdn.net/zhaohuabing/article/details/39643127 SOA架构用于异构系统的协作,因此需要一种跨操作系统.跨语言的通用的消息交 ...

  3. [转]第2台Tomcat端口变更失败解决办法

    原文链接:http://blog.csdn.net/preterhuman_peak/article/details/41803361 今天在服务器上部署了两个Tomcat.于是将其中一个的serve ...

  4. Maple重点知识总结

    Maple中的evalf与evalhf evalf 可作用于单值 可作用于List 可作用于Set 可作用于Vector(<..>) 可作用于Matrix(<..|..|..> ...

  5. 关于ubuntu系统boot分区空间不足而又无法卸载旧内核的解决方法

    2016年09月03日 14:16:45 萧氏一郎 阅读数:7802 标签: ubuntuboot分区清理更多 个人分类: linux   版权声明:本文为本猿原创文章,转载务必注明出处,多谢. ht ...

  6. dp + 状态压缩 - Codeforces 580D Kefa and Dishes

    Kefa and Dishes Problem's Link Mean: 菜单上有n道菜,需要点m道.每道菜的美味值为ai. 有k个规则,每个规则:在吃完第xi道菜后接着吃yi可以多获得vi的美味值. ...

  7. 【cf490】D. Chocolate(素数定理)

    http://codeforces.com/contest/490/problem/D 好神的一题,不会做.. 其实就是将所有的质因子找出来,满足: 最终的所有质因子的乘积相等 但是我们只能操作质因子 ...

  8. hdu 5065 数学题

    #include<iostream> #include<cmath> #include<cstdio> using namespace std; int A,B,y ...

  9. 经典SQL基础回顾

    孔子有云:温故而知新,可以为师矣.既然孔老圣人都云了,咱今天就一起来重温一下MS SQL吧.开篇声明一下:大部分都是基础内容,SQL非常熟练的就别浪费您的时间了,因为这年头,大家时间都挺宝贵的.但是如 ...

  10. redhat6.2 clang编译环境搭建(采用源码包编译安装)

    1. About clang++ office site:http://clang.llvm.org/ A major focus of our work on clang is to make it ...