用Wix手工编辑XML制作C++ MSI安装程序,怎样保证安装新版本时候强制卸载旧版本,急急急!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Wix手工编辑XML制作C++ MSI安装程序,怎样保证安装新版本时候强制卸载旧版本,急急急!!!相关的知识,希望对你有一定的参考价值。
本程序是一个网络监控客户端程序,安装好后会在系统中注册一个服务,为了和服务器端通信。
我只是负责制作MSI安装程序,有人专门做开发,当然我对于VC++一无所知。
按照常规我在wix的wxs中进行相应编辑设置,生成第一版MSI程序setup1.msi,安装在系统中,菜单显示版本号:1.4.0.3
之后因为程序做了修改,所以我把版本号和ProductCode进行修改,再次生成第二版MSI安装程序setup2.msi这次根据客户要求,
想把原来程序彻底清除,进行重新安装。当然如果能覆盖安装也行,最终验证程序菜单显示新版本号:1.4.0.12,
并且第二次修改的功能得以正常运行就可以了。
★★现在问题来了,setup2.msi正常安装后,发现控制面板的"添加/删除程序"中出现2个相同名字的程序,菜单版本号还是原来的1.4.0.3,没有变。
怎样修改wix的wxs文件才能达到我要的效果,还是本身就不支持这个功能呢。当然我使用如下方法可以达到这个目的:
就是用控制面板中添加/删除程序卸载用setup1.msi安装的旧程序,然后再用setup2.msi进行全新安装。
但是这个程序是需要用SMS2003远程发布到8000个客户端,当然发布的时候用msiexec.exe /qn setup1.msi 进行远程静默安装
当程序版本升级时候,目前的方法,msiexec.exe /x setup1.msi 进行远程卸载第一版程序,
再用msiexec.exe /qn setup2.msi,远程安装第二版程序。就是说如果要卸载第一版程序,必须用msiexec.exe /x setup1.msi ,而不是msiexec.exe /x setup2.msi,无法用第二版程序setup2.msi加上/x参数卸载以前的程序。更无法用用第二版程序msiexec.exe /qn setup2.msi,进行覆盖安装,因为本身本地环境就测试没有通过。
以上是关于用Wix手工编辑XML制作C++ MSI安装程序,怎样保证安装新版本时候强制卸载旧版本,急急急!!!的主要内容,如果未能解决你的问题,请参考以下文章
使用 WiX 为 InstallShield 安装程序创建 msi 包装器
如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?