通常情况下,如果是一个完备的软件,我们可以通过启动软件的uninstaller.exe之类的程序来完成卸载。但是使用installShield打包的程序,本身可能并不含有这类卸载程序。此时,我们可以通过MsiExec.exe来对其进行卸载。
QProcess process; process.start("MsiExec.exe /x{???}"); process.waitForFinished();
在QT中,按如下命令,只需要将???替换为软件对应的注册表key值即可。而这个值要怎么找呢?一个简单的方法,是使用应用程序在程序列表(想卸载某一程序时windows的那个列表)中的名字,在注册表中进行搜索,多查找几次,就能找到其位置。对应的也会有MsiExec.exe命令的显示在UninstallString值项里。只要把里面的/I替换成/x,按照上述代码使用即可。