zoukankan      html  css  js  c++  java
  • InstallShield 工程类型MSI 使用过程中碰到的问题及解决方法。

    一、安装完 桌面创建IE快捷方式:

      1、  install script可以直接建internet快捷方式。

      2、  basic msi 要先在desktop随便创建一个快捷方式, 修改Target和Arguments两项。将Target 的内容改为[ProgramFilesFolder]Internet ExplorerIEXPLORE.EXE,即将快捷方式指向IE,然后将Arguments修改为网址(必须有http://):http://tools.taokuaiche.com

    二、现在流行安装完程序打开网址: 只需在OnEnd中加一行命令:

      (使用默认浏览器打开)

      1、LaunchApplication("http://tools.taokuaichen.com", "", "", SW_NORMAL, INFINITE, LAAW_OPTION_WAIT | LAAW_OPTION_USE_SHELLEXECUTE );

      (使用IE浏览器打开)

      2、LaunchAppAndWait(WINDIR ^ "explorer.exe","http://tools.taokuaichen.com", LAAW_OPTION_WAIT);

    三、覆盖安装:每次运行setup.exe时不提示卸载,仍执行安装:

      开始修改了卸载逻辑,强制进行每次安装,导致程序安装后无法卸载的死循环。 开始菜单及添加/删除的卸载也是安装,后来在网上找了下资料试了下真管用。操作如下:

      Basic MSI工程删除behaviorandLogic->custom actions and Sequences-> Sequencse->installation-> Execute中的RegisterProduct和PublishProduct即可。

      注:如果碰到文件有更新不了的现象让你们的开发人员对 升级文件的版本号修改为高一点的即可。

    四、现在好多安装程序在安装完成后都有推荐安装其他工具,安装完成去调用另一个setup安装另外的程序

      推荐安装的工具不超过2个可以通过以下方法实现(超过2个则需要自定用界面了):

      1、将另一个setup.exe加入到 support files—language independent中。(此处的调用路径为SUPPORTDIR)

      2、在OnFrstUIAfter中 调用LaunchApp (SUPPORTDIR ^ "setup.exe","");

    五、安装包升级的时候如何检查安装目录下被安装程序是否正在运行。如果正在运行则跳提示退出。

            if( Is ( FILE_LOCKED, TARGETDIR^"XXX.exe")) then

        if(  MessageBoxEx( "检查到'XXXX'正在运行,请关闭后再重试","安装提示", WARNING|MB_OK )) then

                  abort;

               endif;

           endif;

    六、卸载完后判断根目录下及开始菜单是否卸载干净,不干净则强制删除

          查找开始菜单是否存在未卸载干净的文件夹

      nResult=QueryProgItem (FOLDER_PROGRAMS, "文件夹名称",svCmdLine, svWrkDir,svIconPath,nvIconIndex, svShortCutKey, nvMinimizeFlag);

      如果存在则强制删除

         if(!(nResult< 0))then  

               DeleteProgramFolder ( FOLDER_PROGRAMS^"文件夹名称" );

               //MessageBox ("DeleteProgramFolder success.", SEVERE);

      endif;

      查找安装目录是否存在未卸载干净的文件夹

      nResult=QueryProgItem (TARGETDIR, "文件夹名称",svCmdLine, svWrkDir,svIconPath,nvIconIndex, svShortCutKey, nvMinimizeFlag); 

      如果存在则强制删除

      if(!(nResult< 0))then

              DeleteProgramFolder ( TARGETDIR^"文件夹名称" );  

         endif;

    以上有些问题是网上找了好多资料 试过可以执行成功的。

    刚开始接触研究installshield,发现解决一个问题需要很长的时间,网上找资料不断的调试、修改、研究。解决完才发现找到适合的方法几分钟就能搞定,希望给大家带来个方便!

  • 相关阅读:
    利用进制转换压缩数字
    一个不错的移动政务网站
    系统缓存全解析(转摘)
    GeoDatabase元数据不能编辑的问题“The application is not licensed to perform this operation ”
    RSA算法的分析与实现(转载)
    云计算经济学
    Memcached在Windows操作系统下多实例并存(转载)
    AGS FlexView 与 ArcGIS Server的FeatureLayer交互的过程
    转载>ArcEngine中版本的使用
    基于ArcEngine的地图四着色算法的实现(转载)
  • 原文地址:https://www.cnblogs.com/daocaorenbx/p/InstallShield.html
Copyright © 2011-2022 走看看