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 怎么设都没用。