我想在安装结束前调用另一个程序,我知道要用到它的LaunchAppAndWait()函数,但不知道应该在哪个地方添加脚本,帮帮忙,谢谢啦!

解决方案 »

  1.   


    18.4  LaunchAppAndWait
    语法:LaunchAppAndWait (szProgram, szCmdLine, lWait);
    说明:LaunchAppAndWait函数运行由szProgram指定的带有szCmdLine指定的命令行参数的应用程序。第三个参数,lWait指示安装在继续前是否要等待直到运行的应用程序终止。
      一个安装程序只能监控由szProgram指定的应用程序;如果该应用程序要运行其它应用程序或进程,安装程序不能监控它们。因此,安装程序将在第一个应用程序结束后继续,即使那时由第一个应用程序运行的其它应用程序仍在运行。注意如果运行的应用程序终止失败,则安装程序将无限等待运行的应用程序完成。
    参数:
    szProgram
    指定要被运行的应用程序的文件名。建议要指定应用程序的完整路径和文件名。如果你不包括一个路径,InstallShield将使用被Windows API 函数CreateProcess使用的相同的查找次序来定位文件。如果文件未能在这些位置找到,函数将失败。
      如果应用程序的全限定名包括长文件夹名和/或一个长文件名,在把szCommand传递给LaunchAppAndWait之前先把它传递给LongPathToQuote。
    szCmdLine
    指定传递给运行的应用程序的命令行参数。为运行没有命令行参数的应用程序,传递一个空字符串。
    lWait
    指定安装程序在继续前是否要等待运行的应用程序终止。在该参数位置传递下列预定义常量之一:
    NOWAIT:指定安装程序在运行应用程序后立即继续,应用程序将和安装程序脚本同时运行。注意使用该参数等效于调用函数LaunchApp。
    WAIT:指定安装程序必须等待直到由该函数运行的应用程序终止。
    返回值:
    1:表明应用程序成功运行。
    < 0:表明应用程序未能运行。
    注解:
    ·InstallShield 安装程序使用函数CreateProcess。在InstallShield运行应用程序后,它查找装入的应用程序的窗口句柄。如果它找到窗口句柄,则它在继续前等待直到应用程序窗口消失。
    ·安装程序不能监控一个不创建窗口的应用程序。如果指定的应用程序没有创建一个窗口,安装程序在运行应用程序后立即继续。注意应用程序的窗口不需要可见,但它必须存在,以便让安装程序等待。
    ·一些应用程序试图装入DLLs并且当那些DLLs不能被定位时不能正确运行。为确保一个应用程序能找到它需要的DLLs,有必要在调用LaunchAppAndWait前改变到包含可执行应用程序的目录。为改变当前目录,调用ChangeDirectory函数。
    ·如果运行的应用程序终止失败,则安装程序将无限等待运行的应用程序完成。
    ·LaunchAppAndWait以一个全屏DOS窗口来运行DOS程序。为以一个不同类型的窗口来运行一个DOS程序,你必须直接调用Windows APIs。
      

  2.   

    谢谢你的热情,但是答非所问。
    我是不知道在哪里添加LaunchAppAndWait()
    !!
      

  3.   

    在function OnFirstUIAfter()事件里最后添加
      

  4.   

    我是在这个事件里添过的,
    LaunchAppAndWait(TARGETDIR^"myex.exe","",WAIT);
    MessageBox(TARGETDIR^"myex.exe",MB_OK);//for debug
    第二句正确执行了,但LaunchAppAndWait那一句却没执行,难道这个时候目标文件还没产生??(注:我添在OnFirstUIAfter()的最后)
    不懂...