我在程序安装完成后的界面 上放了几个CHECKBOX,现在想根据 选择CHECKBOX的不同,则点完成后可以来启动不同的程序我写了个函数:只是先弹出一个 MESSBOX但我在完成 的 DOACTION 里,以及 CHECKBOX的DOACTON里 都加了那个弹出函数!可不管用我用的InstallShield是9.0,创间的是base instll 项目!我看到别的条件里有什么, Install and Install='Action' 等的动西希望大家帮帮我!

解决方案 »

  1.   

    安装完成后,显示“查看ReadMe”,“运行程序”等:
    关键词:OnMoved、SdFinish
         1.InstallShieldX脚本中有一个OnMoved事件。这个事件在需要安装的文件拷贝完成之后触发;
         2.SdFinish是一个标准对话框函数,函数原型为SdFinish ( szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2 );从参数中可以发现,这里只提供最多两个选项。实例代码如下:
    function OnMoved()
        STRING szTitle;
        STRING   szMsg1, szMsg2,szOpt1,szOpt2;
        BOOL     bvOpt1, bvOpt2;
        STRING szApplicationPath,szApplicationCmdLine,szCmdLine;
    begin      
        if (MAINTENANCE) then return 0;endif;//如果不是安装状态,比如修改/卸载状态的时候,则不执行。
        szTitle = "安装完成";//对话框的标题
        szMsg1  = "%P 安装已经完成.\n" +
                  "请根据需要选择下面的选项.";//%P为软件产品名称
    //如果要单独在这里设置产品名称,在之前使用如下两句
    //    szProductName = "某某软件";
    //    SdProductName (szProductName);    szMsg2  = "点击‘完成’按钮完成%P安装.";
            szOpt1 = "阅读自述文件";//如果这里为空,则表示只有一个选项
        szOpt2 = "运行程序";
        SdFinish (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2);
        if (bvOpt1) then
            LaunchApp ('notepad.exe',TARGETDIR ^ "\\readme.txt");//LaunchApp 用来运行某外部程序
        endif;
      
        if (bvOpt2) then
               LaunchApp (TARGETDIR ^ "\\App.exe","");
        endif;
    end;
      

  2.   

    楼上的哥哥!!按你的设置了窗口倒是能弹出来,不过,在修复时也会出现    if (MAINTENANCE) then return 0;endif;//如果不是安装状态,比如修改/卸载状态的时候,则不执上边这句话没有起做用,!你有邮箱吗,我把我的发给你,你给看一下,
    谢谢了!
      

  3.   

    我看过您的工程了。在MSI中使用MAINTENANCE这样的全局变量是无效的,必须是InstallScript Project
     
    InstallScript MSI project 可以转换为InstallScript Project:菜单project->Convert to InstallScript Project.
     
    这是InstallShield自己本身的问题