InstallShield中打包ArcEnineRuntime

最近研究了一阵应用程序的打包,几天下来也算颇有收获。普通的.net程序打包相对简单一点,不过ArcEngine的应用程序还涉及到Engine Runtime的检测及安装。所以我采用的是IntallShield软件打包。
        3SNews版主[zhaoxiang_whu]写过一篇《利用InstallShiled 10.5 打包AE 开发的应用程序》,我也是看了篇教程才去实践的。该方法的原理是将Engine Runtime和程序文件一起打包进一个Setup.exe文件中,然后Runtime释放到目标文件夹下;等于是安装完成之后才检测目标机器是否安装Runtime;若无,则调用系统Msiexec.exe安装Runtime.Msi。成功后便删除掉目标机器上的Runtime安装包。
         这是一个可行的方法,但是Runtime 243M,比较大导致安装包Setup.exe也比较大,而且无论目标机器上是否安装都得执行一遍Runtime安装包的释放和删除操作。这对于此提出一个改进的方法:
          1.将Runtime 拷贝到安装盘或者与应用程序相同的目录下;
          2.在InstallShield脚本事件的OnBegin中添加判断:

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);  
//判断是否安装ArcGIS Engine Runtime 也可以添加版本判定
if (RegDBKeyExist ("SOFTWARE\\ESRI\\.ArcGIS Engine Runtime") < 0) then
   //判断是否存在Runtime安装包
   if (FindFile ("Runtime", "Setup.msi", svResult) = 0) then
        SdShowMsg("正在安装ArcGIS Engine Runtime 9.2,请稍候...",TRUE);
        //判断是否安装成功
        if (LaunchAppAndWait ("Runtime\\Setup.exe","", LAAW_OPTION_WAIT)<0)then
            MessageBox("安装ArcGIS Engine Runtime 失败!",WARNING);
            abort;
            SdShowMsg("正在安装ArcGIS Engine Runtime 9.2,请稍候...",FALSE);
        endif;
        SdShowMsg("正在安装ArcGIS Engine Runtime 9.2,请稍候...",FALSE);   
    else
        MessageBox("没找到ESRI ArcGIS Engine 9.2 Runtime安装程序,请自行安装!",WARNING);
    endif
endif;

按此方法可以检测和安装任何软件运行条件,比如.NetFrameWork和AE运行时补丁、AE运行时中文包、Licence注册等。最后用户需点下一步下一步就可以完成安装了。此外,如果不熟悉installshield脚本可以将各种安装步骤写成批处理。最后由LaunchAppAndWait ()调用;效果一样。

==================
更多Engine安装与部署参见《ArcGIS Engine 中文开发指南.pdf》

InstallShield中打包ArcEnineRuntime的更多相关文章

  1. 在InstallShield中发布单一的Setup.exe文件

    原文:在InstallShield中发布单一的Setup.exe文件 InstallShield默认的Release模式下,生成了一个setup.exe文件,一个msi文件,以及一些其它的杂项文件. ...

  2. InstallShield 软件打包完整教程(含添加自定义依赖环境)

    任务说明:公司一个绿色版的软件,为安装部署是需要很多的环境依赖,如 DevExpress..net4.5.WinRAR等,客户提出安装复杂,并且有漏装后无法启动等情况,现将绿色版转安装版,并将依赖环境 ...

  3. InstallShield程序打包图解

    InstallShield程序打包图解     VS2012中打包工具被看做程序集,在使用时和程序集一样被创建到程序解决方案下.需要我们做的是添加项目即可.但是对于初次使用的朋友来说,我们需要根据提示 ...

  4. InstallShield 2018 打包安装

    关于InstallShield 2018打包安装程序的使用 1. 下载InstallShield2018 建议使用新的版本,毕竟新的版本功能功能全.问题少.用户体验佳. 下载地址:http://www ...

  5. 如何设置Installshield中 feature的选中状态

    原文:如何设置Installshield中 feature的选中状态 上一篇: 使用strtuts2的iterator标签循环输出二维数组之前一直有筒子问如何设置Installshield中 feat ...

  6. ionic在iOS中打包失败

    在ios中打包失败,遇上这样的错误 解决办法,查看index.html的权限是否是只读状态,如果是,改成可读可写,再次打包重试,成功!

  7. 应用InstallShield 2015打包软件打包C#程序

    大家都明白,程序员写出的程序与用户直接使用的程序之间还有一个简单的环节,就是打包.今天就简单介绍下用InstallShield 2015打包工具进行程序的打包, 有兴趣的可以看看! 首先前面安装打包工 ...

  8. 【Electron】在 WSL2 中 打包 electron Linux 版本

    [Electron]在 WSL2 中 打包 electron Linux 版本. 安装 WSL 我使用的是 Ubuntu 20.04.4 LTS 的版本. 安装 WSL 文档地址:https://do ...

  9. installshield中的installscript编程

    上一篇说道了InstallShield高速建立一个打包程序,如今说说InstallShield里面的installscript脚本. 该文属于个人理解.參考一些相关文章. 相关资料下载地址:http: ...

随机推荐

  1. 2016年蓝桥杯B组C/C++省赛(预选赛)题目解析

    2016年蓝桥杯B组C/C++ 点击查看2016年蓝桥杯B组省赛试题(无答案版) 第一题:煤球数目 题解 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个( ...

  2. UVa 1354 天平难题

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. Vhost.conf 范例

    NameVirtualHost *:80 <VirtualHost *:80> ServerName haofei.com DocumentRoot "E:/test/" ...

  4. hdu 1573 X问题 两两可能不互质的中国剩余定理

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Desc ...

  5. cqlsh 一个错误

    C:\Users\jasqia>cqlsh 10.215.70.158 1433Can't detect Python version! http://zqhxuyuan.github.io/2 ...

  6. UTC和GMT时间辨析

    一.UTC和GMT 每个地区都有自己的本地时间,在网上以及无线电通信中时间转换的问题就显得格外突出. 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统 ...

  7. Codeforces 388A - Fox and Box Accumulation

    388A - Fox and Box Accumulation 思路: 从小到大贪心模拟. 代码: #include<bits/stdc++.h> using namespace std; ...

  8. 安装 tensorflow 时遇到 OSError: [Errno 1] Operation not permitted 的解决办法

    Installing collected packages: numpy, scipy, six, pyyaml, Keras, opencv-python, h5py, html5lib, blea ...

  9. JS-构造函数2

    一.如何创建对象 1.对象字面量 var obj1={ name:"吻别", singer:"张学友", type:"流行" } 2.构造函 ...

  10. nyoj737区间dp(石子合并)

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的 ...