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中添加判斷:php

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 ()調用;效果同樣。web

==================
更多Engine安裝與部署參見《ArcGIS Engine 中文開發指南.pdf》spa

相關文章
相關標籤/搜索