用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,进行覆盖安装,因为本身本地环境就测试没有通过。

建议:   我看了《电脑报》2001年4月2日第13期《Excel在会计中的应用》一文,其中提到利用Execl汇总报表的方法,但每次都要把下属单位的报表数据手工输入子报表中,如果下属单位较多,每次都这样操作甚是麻烦。下面介绍我在实际工作中摸索出的一种合并会计报表的方法:利用Execl可以在不同的工作簿文件中建立链接关系的功能来合并报表。这种方法可一劳永逸解决每次手工输入的问题,只要每次将下属单位的报表文件拷贝到指定的目录下,就轻松完成了报表合并! 参考技术A 只是程序做了修改ProductCode时不要更改,用MajorUpgrade删除旧版,好像还会用到RemoveExistingProducts动作。我也刚开始看,再多的,我也不会了。

以上是关于用Wix手工编辑XML制作C++ MSI安装程序,怎样保证安装新版本时候强制卸载旧版本,急急急!!!的主要内容,如果未能解决你的问题,请参考以下文章

WiX创建了msi文件,奇怪的主要升级行为

使用 WiX 为 InstallShield 安装程序创建 msi 包装器

Wix 安装程序包产生损坏的“msi”

如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?

WiX 安装程序 msi 未安装使用 Visual Studio 2017 创建的 Winform 应用程序

如何使用 WIX 使用单个 MSI 包安装两个 MSI 包?