背景:
由于项目需求,需要在安装包安装之前,先卸载之前旧版本的安装。那么怎么能比较干净的卸载掉之前的旧版本安装包呢?
-
方法一:查找搜索安装路径并删除相应文件夹?删除快捷键?删除添加删除程序对应的项目,还有一些installsheild自己生成的文件,注册表键值等等?有没有遗漏?
-
方法二:还有没有别的方法,能够像添加删除程序中所作的,进行干净的卸载呢?
在开始前,这里先介绍Installshield的一个函数,具体大家可以参考Installshield的手册:
-
语法:LaunchAppAndWait (szProgram, szCmdLine, lWait);
-
说明:LaunchAppAndWait函数运行由szProgram指定的带有szCmdLine指定的命令行参数的应用程序。第三个参数,lWait指示安装在继续前是否要等待直到运行的应用程序终止。
一个安装程序只能监控由szProgram指定的应用程序;如果该应用程序要运行其它应用程序或进程,安装程序不能监控它们。因此,安装程序将在第一个应用程序结束后继续,即使那时由第一个应用程序运行的其它应用程序仍在运行。注意如果运行的应用程序终止失败,则安装程序将无限等待运行的应用程序完成。参数: szProgram 指定要被运行的应用程序的文件名。建议要指定应用程序的完整路径和文件名。如果你不包括一个路径,InstallShield将使用被Windows API 函数CreateProcess使用的相同的查找次序来定位文件。如果文件未能在这些位置找到,函数将失败。 如果应用程序的全限定名包括长文件夹名和/或一个长文件名,在把szCommand传递给LaunchAppAndWait之前先把它传递给LongPathToQuote。 szCmdLine 指定传递给运行的应用程序的命令行参数。为运行没有命令行参数的应用程序,传递一个空字符串。 lWait 指定安装程序在继续前是否要等待运行的应用程序终止。在该参数位置传递下列预定义常量之一: NOWAIT:指定安装程序在运行应用程序后立即继续,应用程序将和安装程序脚本同时运行。注意使用该参数等效于调用函数LaunchApp。 WAIT:指定安装程序必须等待直到由该函数运行的应用程序终止。