天天看點

使用Advanced Installer 自動部署 Arcgis Engine Runtime 10.0

      目前采用Arcgis9.2 + c#(vs2008)作為程式開發平台,是一個不錯的搭配。(雖然标準搭配是9.3+vs2008)但是到目前面臨了一個很嚴重的問題,就是arcgis desktop的license到2011年11月11日到期,雖然ae的許可是無限期的,但是将影響arcmap軟體編輯處理圖形。無奈之下,需要盡快更新到arcgis10.0,這個版本目前有無限期的許可。

    目前開發的韶關水文分析系統的使用者數量不止是幾個,都要逐一對AE運作庫進行更新。問題是,在各個現有的用戶端上已經安裝了AE9.2,需要一一解除安裝;而AE10的安裝包很龐大,自身安裝包大小451m,更新檔sp2大小139m,加上License安裝包(22.3M)及License 更新檔SP2(13.4M),總共超過620M,而且部分計算機未安裝.Net Framwork 3.5 SP1,這個安裝包大小231M(真是微軟的大手筆,那般爺們不知道怎麼弄出來的),雖然網上有80M左右的簡化安裝包,但是那個安裝包不能自動安裝。

    利用國慶4天的值班時間,在無數次的測試後,終于使用Advanced Installer完成了Arcgis平台自動部署。下面分享一下我的做法與體會。

準備的腳本:

       1、解除安裝老版的Arcgis License Manager   

            編寫腳本檔案script_delete_license92_new.cmd,内容為

@echo off

rem 停止服務

net stop "ArcGIS License Manager"

rem 殺死程序arcgis

taskkill /f /im arcgis.exe

rem 删除服務

sc delete "ArcGIS License Manager"

rem 清除系統資料庫項

reg import deletelicense92.reg

if exist "C:\Program Files\ESRI\License\arcgis9x\" rd "C:\Program Files\ESRI\License\arcgis9x" /S /Q

if exist "C:\Documents and Settings\All Users\「開始」菜單\程式\ArcGIS\License Manager (9.x)" rd "C:\Documents and Settings\All Users\「開始」菜單\程式\ArcGIS\License Manager (9.x)" /S /Q

2、解除安裝老版的ArcGIS Engine Runtime

       利用msiexec指令行工具,自動解除安裝

       腳本:

       @msiexec /x {9B139B36-F1FF-4DB8-89F9-4DA3D5C12BE8} /qb

3、解除安裝9.2版本的Arcgis Desktop

腳本:msiexec /x {1F34839E-4826-4B64-B1B3-42E5AE8DEC5A} /qb  

4、安裝.Net Framework 3.5 SP1

     腳本:MainPack\dotnetfx35sp1-zhcn.exe /q

5、安裝ArcGIS License Manger 10.0

6、更新ArcGIS License Manager 10.0 至 SP2;

腳本:@msiexec /update "ServicePacks\ArcGISLicenseManager10sp2.msp" /qb

7、安裝ArcGIS Engine Runtime 10.0;

8、更新ArcGIS Engine Runtime 10.0至SP2;

腳本:@msiexec /update "ServicePacks\ArcGISEngine10sp2.msp" /qb

9、安裝許可證。

rem "正在停止ArcGIS License Manager 服務..."

rem "複制ArcGIS License Manager許可檔案..."

copy service.txt "C:\Program Files\ArcGIS\License10.0\bin\service.txt" /Y

rem "複制成功!"

REM "重新開機ArcGIS License Manager 服務"

net start "ArcGIS License Manager"

rem "搞定!"

pause

  

  Advanced Installer配置(7.01企業版授權)

    運作環境->啟動條件,去掉windows 9x,windows NT自 “Windows XP 服務包3”,Windows NT 64位自 “Windows XP 64位”;(以下有類似選項同此設定)

    運作環境->軟體環境,添加如下項目:

使用Advanced Installer 自動部署 Arcgis Engine Runtime 10.0

 逐項詳細配置:

第一項:解除安裝ArcGIS License Manager

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\script_delete_license92.cmd;檔案夾:Script

    安裝條件:搜尋 :有指定内容的系統資料庫項,系統資料庫值:HKLM\SOFTWARE\FLEXlm License Manager\ArcGIS License Manager\Lmgrd,

                                    值:C:\Program Files\ESRI\License\arcgis9x\lmgrd.exe,比較:不同于;

           選項:不設定;

           檔案:添加腳本檔案

          如圖:

使用Advanced Installer 自動部署 Arcgis Engine Runtime 10.0

第二項:解除安裝ArcGIS Engine Runtime 9.2

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\script_delete_arcengine92.cmd;檔案夾:Script

    安裝條件:搜尋 :系統資料庫項不存在,系統資料庫值:HKLM\SOFTWARE\ESRI\ArcGIS Engine Runtime;

           檔案:添加腳本檔案        

第三項:解除安裝Arcgis Desktop 9.2 

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\script_delete_arcgis92.cmd;檔案夾:Script

    安裝條件:搜尋 :有指定内容的系統資料庫項,系統資料庫值:HKLM\SOFTWARE\ESRI\ArcInfo\Desktop\8.0\RealVersion,

                                    值:9.2,比較:不同于;

第四項:安裝 .NET Framework 3.5 SP1 屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\MainPack\dotnetfx35sp1-zhcn.exe;指令行:/q;檔案夾:dotNet3.5sp1

    安裝條件:搜尋 :有指定内容的系統資料庫項,系統資料庫值:HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\SP,

                                    值:1,比較:精确比對;

           檔案:添加 dotnetfx35sp1-zhcn.exe(官方原版)

第五項:安裝 ArcGIS License Manager 10.0 ;

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\ArcGis License Manager\setup.msi;指令行:/qb;

      檔案夾:ArcGIS License Manager 10.0

    安裝條件:搜尋 :系統資料庫項存在,系統資料庫值:HKLM\SOFTWARE\ESRI\ArcGIS License Manager 10.0,

    選項:不設定;

           檔案:添加安裝檔案夾下所有檔案(含子檔案夾)

第六項:更新 ArcGIS License Manager10 至 sp2

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\ServicePacks\ArcGISLicenseManager10sp2.msp;指令行:/qb;檔案夾:ServicePack

    安裝條件:搜尋 :有指定内容的系統資料庫項,系統資料庫值:HKLM\SOFTWARE\ESRI\ArcGIS License Manager 10.0\RealVersion,

                                    值:10.0.3200,比較:精确比對;

           選項:父環境:安裝 ArcGIS License Manager 10.0

           檔案:添加ArcGISLicenseManager10sp2.msp;

第七項:安裝 ArcGIS Engine Runtime 10.0

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\ArcGIS Engine Runtime\setup.msi;指令行:/qb;檔案夾:ArcGIS Engine Runtime 10.0

    安裝條件:  搜尋1 :系統資料庫項存在,系統資料庫值:HKLM\SOFTWARE\ESRI\Engine10.0;

          搜尋2 :系統資料庫項存在,系統資料庫值:HKLM\SOFTWARE\ESRI\Engine10.0\.NET_Support;

           檔案:添加檔案

第八項:更新 ArcGIS Engine Runtime 10 至 sp2

    屬性:位置:程式包中的檔案;檔案路徑:D:\打包測試\ServicePacks\ArcGISEngine10sp2.msp;指令行:/qb;檔案夾:ServicePack

    安裝條件:搜尋1 :系統資料庫項存在,系統資料庫值:HKLM\SOFTWARE\ESRI\Engine10.0;

         搜尋2 :有指定内容的系統資料庫項;系統資料庫值:HKLM\SOFTWARE\ESRI\Engine10.0\SPNumber;值1;比較:大于;

           選項:父環境:安裝 ArcGIS Engine Runtime 10.0 

           檔案:添加ArcGISEngine10sp2.msp

将安裝許可證的腳本script_add_license10.cmd 與 許可證檔案 放于 “檔案和檔案夾”,并在“應用程式快捷方式檔案夾 ”中建立快捷方式到腳本檔案。

引導程式建立exe安裝檔案,為了便于分發,exe檔案中包括安裝檔案。

這樣,就生成了真正的ArcGIS平台自動部署軟體。

體會:Advanced Installer功能強大,但是比較傻瓜式,部分應該具有的功能不足,如在運作環境條件判斷中缺少檔案是否存在的判斷,判斷條件隻能選擇失敗,造成一些邏輯判斷比較複雜(當對非再非,再來一個失敗,又加上當滿足一個或同時滿足多個條件,隻好拿筆來畫一下,還好腦子還算夠用)。指令行中調用cmd缺少unc支援,從網絡運作時可能會出錯。

從ArcGIS9.2平台更新到10.0,改程式花了一天多時間,不過後來才發現其實沒什麼太大的問題,基本代碼不需要改動,主要是和office的相容問題。有空再把那個發上來分享^-^。

運作效果:

使用Advanced Installer 自動部署 Arcgis Engine Runtime 10.0

軟體運作效果圖

使用Advanced Installer 自動部署 Arcgis Engine Runtime 10.0

繼續閱讀