php安装新版本是否需要卸载旧版本,用Wix制作MSI安装程序,怎样保证安装新版本时候强制卸载旧版本,急急急!!!...

我在网上搜索了一番,找到如下讨论

相关网址 http://www.itzhe.cn/news/20080128/66246.html

################################################################################

★★如何在部署时,对已经存在的文件进行覆盖处理★★

网友回复:

假如安装了,会提示卸载呀

在文件属性里面可能有设置,看看吧

网友回复:2楼完全没有做过任何部署。

3楼。同UpgradeCode的情况下,卸载会自动发生。但由于用户设置的不同,不能保证一定会完全卸载。对于没有卸载的文件,可能需要在释放新版本的情况下,进行覆盖处理。要害是这个地方要设哪个属性,有没有这样的属性?

网友回复:不知道VS的安装程序是怎么处理的,InstallShield是有多个选择项的,可以选择强制覆盖,比较时间更新覆盖,等

网友回复:修改RemovePreviousVersions行不?

网友回复:为了解决这个问题,似乎只能先卸载再安装...

网友回复:继续一下。RemovePreviousVersions的行为,是要比较前后版本的差异后才定下来的。我上面所说的情况下,他不会完全卸载全部组件。

网友回复:楼主我试过,程序版本相同的情况下,把 UpgradeCode 换了,第二次安装的时候,也还是会自动卸载第一次安装的文件,然后安装新文件。不会出现楼主说的那种不覆盖文件的情况。

不同版本的把 UpgradeCode 换了重复安装没测试过,应该不会卸载旧版本文件了,因为UpgradeCode变了,效果应该等同于 DetectNewerInstalledVersion 和RemovePreviousVersions 都为false。

不过把安装项目的 ProductCode 换了的话。就会出现楼主说的这种情况,原先安装的文件不会自动卸载掉,也不会覆盖掉,安装过程一点提示都没有,不过查看“控制面板”-〉“添加删除程序”就会发现,这两个“不同”的程序同时存在,显示都被安装了,但后来那次安装肯定不完整,缺文件。也就是说安装项目什么也不认,就认 ProductCode,相同就当成同一个程序,不同就当成两个独立的程序。当两个独立程序要把同一个文件部署在同一个目录时,先到先得,晚到就被挤掉了。

这可能也是微软出于安全的考虑。假如不这样做,恶意安装程序就很轻易假借你写的程序的文件名,覆盖掉你的程序,破坏客户机器,因为存在这种危险隐患,所以干脆也不弹覆盖对话框了,省得满头浆糊的客户在安装时候不小心装上了恶意程序都不知道。

所以楼主这问题我认为无解,微软的设计目的使然,所以还是按照微软说的,不要改变 UpgradeCode 和 ProductCode ,且应当小心保存这两个值(ProductCode 可有多个,随版本和语言的不同而不同),实在不行找个记事本,Ctrl-C Ctrl-V,不小心弄乱了还可以恢复。

网友回复:这个倒是有可能。我没有找到相关的选项来处理。

网友回复:不过确实很不好,这样部署不完整都不知道。

###########################################################################################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值