Visual Studio打包(Windows Installer),你不知道的RemovePreviousVersions 属性

用MS VS打包程序,有个细节有点坑爹

写出来给大家看看

一般来说MSDN都这么解释

 

RemovePreviousVersions 属性的设置如下所示:

 

设置

说明

False

安装程序不检查是否有早期版本。

True

安装程序检查是否有早期版本;一经发现,便会立即将其卸载。

但实际上:

 

 

指定安装程序在安装期间是否移除应用程序的早期版本。如果此属性设置为 True,并且在安装时检测到了早期版本,则将调用以前版本的卸载功能。

安装程序检查“UpgradeCode”“ProductCode”属性,以确定是否应移除早期版本。新旧两种版本的 UpgradeCode 必须相同;ProductCode 必须不同。

如果已在应用程序的安装项目中同时设置了安装和卸载自定义操作,而且已在 Visual Studio 2005 中启用了“RemovePreviousVersions”属性,则会在升级过程中卸载产品的早期版本。不过,此行为在 Visual Studio 2008 中做了如下更改:

在 Visual Studio 2005 中,当从 v1.0.0 升级到 v1.0.1 时,按如下方式调用自定义操作:

v1.0.0 custom action Uninstall()

v1.0.1 custom action Install()

在 Visual Studio 2008 中,不会调用卸载操作,如下所示:

v1.0.1 custom action Install()

如果创建了依赖于旧行为的自定义操作,则需要针对新行为修改您的代码。此行为更改只影响更新,不影响卸载。

 

所以,你要是用VS2008的话,RemovePreviousVersions 怎么设都没用。

posted @ 2013-04-28 08:44  bdstjk  阅读(3226)  评论(4编辑  收藏  举报