zoukankan      html  css  js  c++  java
  • 利用InstallShiled 10.5制作AE应用程序安装包

    [转]利用InstallShiled 10.5制作AE应用程序安装包 作者:3SNEWS 社区ESRI(ArcGIS)版版主:zhaoxiang_whu
    http://www.3snews.net/bbs/index.php

    利用InstallShiled 10.5 打包AE 开发的应用程序
    AE 开发的应用程序必须要在装有AE 运行时并且正确的授权的机器上才可以运行。因此,在制作安装包的
    时候可以把AE 运行时一起打进来,用户在安装程序时,只需要执行一个安装文件就可以正确的运行应用程序
    了。利用InstallShiled10.5 打包的基本思路如下:
    1、先将自己的程序打包进来;
    2、安装AE 运行时;
    3、安装AE 运行时补丁;
    4、检查系统文件夹下的服务文件是否正确的写入服务;
    5、对AE 运行时进行授权。
    有了以上基本思路就可以开始制作安装包了。具体步骤如下:
    一、
    打包自己的程序
    1、启动InstallShiled,创建一个InstallScript Project,如下图:
    2、可以利用InstallShiled 的工程向导,将自己的程序打包进来,效果如下图:

    其中的Application Target Folder 就是你的应用程序在客户机器上的那个安装文件夹。
    二、
    将所有需要安装的AE相关的文件准备好,并设置好他们在目标机器上的路径
    1、将所有AE 运行时相关的待安装文件准备好,放入同一个文件夹内备用。
    2、在Application Target Folder 文件夹下新建一个文件夹: “temp”。此文件夹的作用是用于临时放置AE
    运行时相关的文件,安装过程完成以后,此文件夹及里面的所有内容将被删除。
    3、将本机上的准备好的打包文件拖入到temp 文件夹下,如下图所示:

    三、
    写安装脚本,进行运行时及其补丁的安装和授权
    文件和路径都已经准备好了以后,就可以开始写安装脚本了。其实在InstallShiled 里面安装AE 运行时及
    其补丁的原理都相当简单,就是调用了Windows 的Installer 程序而已。因此,只需要将调用Installer 的参数
    设置正确就可以了。具体参数说明如下:
    1 执行安装时的参数
    Msiexec.exe /i "%MSIPATH%" /qn ADDLOCAL= %Feature%
    MSIPATH 是Engine 的安装路径包括msi 包文件名
    Feature 表示安装时的选项多个feature 用逗号隔开
    feature 描述
    ArcEngine ArcGIS Engine
    JavaRuntime ArcGIS Engine-Java Runtime
    DotNetRuntime ArcGIS Engine .NET Runtime
    2 安装后license 的注册
    在安装路径下的BinSoftwareAuthorization.exe 是注册license 的执行文件
    有三个常用参数
    -p <选择注册项> IMS SDE ENGINE DEVKIT SERVER
    -LIF <选择注册文件>
    -S 无界面运行
    关于更具体的参数说明以及Windows Installer 的运行参数可参考EDN 上面的说明。
    在调用Windows 的Installer 时,可以使用IS 的内部函数:LaunchAppAndWait,其函数原型为:
    LaunchAppAndWait ( szProgram, szCmdLine, nOptions );
    四、
    检查系统文件夹下的服务文件是否正确的写入了服务
    有时候正确的安装了AE 运行时并对其授权,但在连接SDE 数据库的时候,却依然会出现问题,这主要是因为
    系统文件夹下的Service 文件缺少SDE 的服务信息。这个文件夹的路径为:
    <Windows>/system32driversetcService.检查是否有5151/tcp 服务,若没有,则加上一行:
    esri_sde 5151/tcp sde #ArcSDE
    五、
    生成安装包
    文件路径设置完成,且代码也编译通过以后就可以通过Installshield 生成安装文件了。方便起见,可以将
    其生成为单个EXE 文件。这样以来,用户运行该安装文件后,可以只需要一直点下一步就可以完成程序的安装
    和授权了。
    六、
    脚本程序
    以下脚本只实现了基本的功能,各位根据自己的需要进行修改。
    #include "ifx.h"
    function OnMoved()
    string szCommand,szCmdLine,szPath,svResult,LicPath;
    STRING svLine,svReturnLine,InsertTxt; //////操作文件的变量
    NUMBER nvFileHandle; //////////文件句柄
    NUMBER nvLineNumber ,nvResult; //////////操作文件的变量
    begin
    szPath=TARGETDIR^"temp";
    szCommand = WINSYSDIR^"msiexec.exe";
    LongPathToShortPath(szCommand);
    ////////////////////////安装AE 运行时
    if (FindFile (szPath^"ArcEngine92", "Setup.msi", svResult) = 0) then
    szCmdLine =TARGETDIR^"temp"^"ArcEngine92"^"Setup.msi" /qn";
    LongPathToShortPath(szCmdLine);
    SdShowMsg("正在安装ArcGIS Engine Runtime,请稍候...",TRUE);
    Delay(1);
    if (LaunchAppAndWait(szCommand ,"/i ""+szCmdLine,WAIT) < 0) then
    MessageBox("安装ArcGIS Engine Runtime 失败!",WARNING);
    abort;
    SdShowMsg("正在安装ArcGIS Engine Runtime,请稍候...", FALSE);
    endif;
    SdShowMsg("正在安装ArcGIS Engine Runtime,请稍候...", FALSE);
    endif;
    /////////////////////安装AE 运行时补丁
    if (FindFile (szPath, "ArcGISEngine92sp2.msp", svResult) = 0) then
    szCmdLine =TARGETDIR^"temp"^"ArcGISEngine92sp2.msp" /qn";
    // SprintfBox(INFORMATION,"TEST","%s",szCmdLine);
    LongPathToShortPath(szCmdLine);
    SdShowMsg("正在安装ArcGIS Engine Runtime SP2,请稍候...",TRUE);
    Delay(1);
    if (LaunchAppAndWait(szCommand ,"/Update ""+szCmdLine,WAIT) < 0) then
    MessageBox("安装ArcGIS Engine Runtime SP2 失败!",WARNING);
    abort;
    SdShowMsg("正在安装ArcGIS Engine Runtime SP2,请稍候...", FALSE);
    endif;
    SdShowMsg("正在安装ArcGIS Engine Runtime SP2,请稍候...", FALSE);
    endif;
    /////////////////////////////安装AE 中文包
    if (FindFile (szPath, "ACEEngine92sp2.exe", svResult) = 0) then
    szCmdLine =TARGETDIR^"temp"^"ACEEngine92sp2.exe" /qn";
    LongPathToShortPath(szCmdLine);
    SdShowMsg("正在安装ArcGIS Engine Runtime 中文包,请稍候...",TRUE);
    Delay(1);
    if (LaunchAppAndWait(szCmdLine ,"",WAIT) < 0) then
    MessageBox("",WARNING);
    SdShowMsg("正在安装ArcGIS Engine Runtime 中文包...", FALSE);
    endif;
    SdShowMsg("正在安装ArcGIS Engine Runtime 中文包...", FALSE);
    endif ;
    /////////////////////////AE 授权
    SdShowMsg("正在对ArcGIS Engine Runtime 授权,请稍候...",TRUE);
    LicPath=" -Lif "" +TARGETDIR^"temp"^"ArcGIS Engine Runtime License.ECP" -s";
    if (FindFile (TARGETDIR^"temp", "ArcGIS Engine Runtime License.ECP", svResult) = 0) then
    szCmdLine="C:\Program Files\ArcGIS\Bin\SoftwareAuthorization.exe " ;
    if (LaunchAppAndWait(szCmdLine ,LicPath,WAIT) < 0) then
    MessageBox("授权错误!",WARNING);
    abort;
    endif;
    endif;
    SdShowMsg(正在对ArcGIS Engine Runtime 授权,请稍候"...",FALSE);
    ////////////////////////// 写服务文件
    szCmdLine=WINSYSDIR^"drivers"^"etc" ;
    InsertTxt="esri_sde 5151/tcp sde #ArcSDE";

    OpenFileMode (FILE_MODE_APPEND);
    if (OpenFile (nvFileHandle, szCmdLine , "services") < 0) then
    MessageBox ("不能打开服务文件", SEVERE);
    abort;
    endif;
    nvResult = FileGrep (szCmdLine ^ "services", "esri_sde", svReturnLine,
    nvLineNumber, RESTART);
    if (svReturnLine!="") then
    else
    if (WriteLine(nvFileHandle, InsertTxt) < 0) then
    MessageBox ("写入SDE 服务信息失败", SEVERE);
    endif;
    endif ;
    CloseFile (nvFileHandle);
    if (ExistsDir(TARGETDIR^"temp")=0 ) then
    if (DeleteProgramFolder (TARGETDIR^"temp") < 0) then
    MessageBox ("删除临时文件夹失败,请手动删除!", SEVERE);
    endif;
    endif ;
    end;

  • 相关阅读:
    oracle的安装与plsql的环境配置
    Working with MSDTC
    soapui-java.lang.Exception Failed to load url
    Oracle 一个owner访问另一个owner的table,不加owner
    Call API relation to TLS 1.2
    Call API HTTP header Authorization: Basic
    VS2008 .csproj cannot be opened.The project type is not supported by this installat
    The changes couldn't be completed.Please reboot your computer and try again.
    Create DB Table View Procedure
    DB Change
  • 原文地址:https://www.cnblogs.com/xianyin05/p/3357636.html
Copyright © 2011-2022 走看看