InstallShield中打包ArcEnineRuntime
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的更多相关文章
- 在InstallShield中发布单一的Setup.exe文件
原文:在InstallShield中发布单一的Setup.exe文件 InstallShield默认的Release模式下,生成了一个setup.exe文件,一个msi文件,以及一些其它的杂项文件. ...
- InstallShield 软件打包完整教程(含添加自定义依赖环境)
任务说明:公司一个绿色版的软件,为安装部署是需要很多的环境依赖,如 DevExpress..net4.5.WinRAR等,客户提出安装复杂,并且有漏装后无法启动等情况,现将绿色版转安装版,并将依赖环境 ...
- InstallShield程序打包图解
InstallShield程序打包图解 VS2012中打包工具被看做程序集,在使用时和程序集一样被创建到程序解决方案下.需要我们做的是添加项目即可.但是对于初次使用的朋友来说,我们需要根据提示 ...
- InstallShield 2018 打包安装
关于InstallShield 2018打包安装程序的使用 1. 下载InstallShield2018 建议使用新的版本,毕竟新的版本功能功能全.问题少.用户体验佳. 下载地址:http://www ...
- 如何设置Installshield中 feature的选中状态
原文:如何设置Installshield中 feature的选中状态 上一篇: 使用strtuts2的iterator标签循环输出二维数组之前一直有筒子问如何设置Installshield中 feat ...
- ionic在iOS中打包失败
在ios中打包失败,遇上这样的错误 解决办法,查看index.html的权限是否是只读状态,如果是,改成可读可写,再次打包重试,成功!
- 应用InstallShield 2015打包软件打包C#程序
大家都明白,程序员写出的程序与用户直接使用的程序之间还有一个简单的环节,就是打包.今天就简单介绍下用InstallShield 2015打包工具进行程序的打包, 有兴趣的可以看看! 首先前面安装打包工 ...
- 【Electron】在 WSL2 中 打包 electron Linux 版本
[Electron]在 WSL2 中 打包 electron Linux 版本. 安装 WSL 我使用的是 Ubuntu 20.04.4 LTS 的版本. 安装 WSL 文档地址:https://do ...
- installshield中的installscript编程
上一篇说道了InstallShield高速建立一个打包程序,如今说说InstallShield里面的installscript脚本. 该文属于个人理解.參考一些相关文章. 相关资料下载地址:http: ...
随机推荐
- dp专题训练
****************************************************************************************** 动态规划 专题训练 ...
- [js] - 关于js的排序sort
js的排序sort并不能一次排序好 function solution(nums){ return nums.sort(sortNumber); } function sortNumber(a, b) ...
- 到底二级域名和一级域名哪个更利于SEO
到底二级域名和一级域名哪个更利于SEO呢?本文是从百度官方转载详细的介绍:二级域名和一级域名的区别,请各位认真阅读. 二级域名和子域名的区别可以通过以下3点来解读: 一,二级域名的特点 搜索引擎往往将 ...
- HDU 6128 Inverse of sum(同余)
http://acm.hdu.edu.cn/showproblem.php?pid=6128 题意:有一个a数列,并且每个数都小于p,现在要求有多少对$(i,j)$满足$\frac{1}{a_i+a_ ...
- python ros 订阅robot_pose获取机器人位置
#!/usr/bin/env python import rospy import tf from tf.transformations import * from std_msgs.msg impo ...
- python 集合交集
#Intersection setx = set(["green", "blue"]) sety = set(["blue", " ...
- git 生成 公钥
生成公钥 ssh-keygen -t rsa -C "your email" 查看公钥 cat ~/.ssh/id_rsa.pub
- re.sub
1.re.sub主要功能实现正则的替换. re.sub定义: sub(pattern, repl, string, count=0, flags=0) 意思为:对字符串string按照正则表达式pat ...
- 03_ExeZZ.cpp
1.静态加载 DLL : #pragma comment(lib, "DllZZ.lib") __declspec(dllimport) void __stdcall AA(); ...
- Android中getLocationOnScreen和getLocationInWindow 获取屏幕大小
需要确定组件在父窗体中的坐标时,使用getLocationInWindow,需要获得组件在整个屏幕的坐标时,使用getLocationOnScreen. 其中location [0]代表x坐标,loc ...