目前采用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位”;(以下有類似選項同此設定)
運作環境->軟體環境,添加如下項目:
逐項詳細配置:
第一項:解除安裝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,比較:不同于;
選項:不設定;
檔案:添加腳本檔案
如圖:
第二項:解除安裝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的相容問題。有空再把那個發上來分享^-^。
運作效果:
軟體運作效果圖