制作MapObjects安裝程序



MapObjects 安裝程序MO2.2的一些組件文件,它的組件文件最常見的就有兩種,一種是 *ocx 一種是*.dll ,當然 還有其它格式的,只是這兩種是開發(fā)所必須,如果你想讓你的MO2.2程序能夠正常運行的話其實這兩種文件在 InstallShield6.22 中有可以分為兩種,一種是需要注冊的,一種是不需要注冊的①下面是需要注冊的一些文件:Mo20.ocx , MO21Legend.ocx, MO21ScaleBar.ocx , weblink.ocx , MemTable21.dll , MemTableServer.dll , Street20.dll , Vpf20.dll , InfoTable20.dll , JetTable20.dll , ADOTable20.dll , aiimage20.dll , CAD20.dll , Coverage20.dll , MoImageCat.dll ,MoSde81.dll , MoSde82.dll , MoSde83.dll , MoSde302.dll , MoMrSID.dll , MoSde80.dll , OdbcTbl20.dll , Shape20.dll②下面是那些不需要注冊的文件:dforrt.dll , efileio.dll , elib.dll , ergxlib.dll , ethrlib.dll , ISO8211.dll , libtiff.dll , mobase.dll , Moe.dll , mofeat.dll , mogridio.dll , pe80.dll , Pe81.dll , pe82.dll , pe83.dll , Sde30.dll , Sde80.dll ,Sde81.dll , Sde82.dll , Sde83.dll ,Sg80.dll , Sg81.dll , Sg82.dll , Sg83.dll , ShapeLT20.dll , AFLT20.dll , AiSetup.dll , CADE.dll , CADPI.dll , pe.dll , Sg.dll , AF20.dll , mtch.dll , EDGE32.dll , sdeora8isrvr81.dll , sdeora8isrvr82.dll , sdeora9isrvr82.dll , sdesqlsrvr81.dll , sdesqlsrvr82.dll , Mo20.lic以上這些文件,均可在安裝了 MO2.2的機子的X:\Program Files\Common Files\ESRI (X代 表當前操作系統(tǒng)所在的目錄)目錄下找到。
1、在 InstallShield6.22 的 “File Groups” 視圖下新建兩個文件組 “ MOOCX和 “MODLL , 在前一個文件組中插入文件 ①,后一個文件組中放入文件②2、在“File Groups”視圖中選中“ MOOC X文件組,在右邊將它的“ Sel - Registered ”值設(shè) 為“Yes”,文彳^組“ MODLL正好相反設(shè)為“ NO3、需要特別注意的一點那就是,一定要將 “MOOCX和“MODLL文件組的“ Destination ”值設(shè)置為相同的目錄(比如TARGETDIR)不然就不能夠正確的完成 MO2.2的注冊這樣就完成了 MO2.2基本控件的注冊安裝問題簡單吧,一句代碼都不用寫接下來我們就來看看 MO2.2字體的安裝吧,看過好多例子都是通過寫注冊表的啟動項,然后 重啟,以此來達到字體的安裝就我個人認為這種辦法實在是麻煩,而且成功的機率不是很 高在這里我給大家介紹一種,通過給操作系統(tǒng)發(fā)消息的方發(fā)法來完成 MO2.2字體的安裝這個方法就稍微的麻煩一些了,需通過寫腳本來實現(xiàn),其實也不難,下面就看一下?lián)w操作吧1、 現(xiàn)在把 InstallShield6.22 切換到“ Scripts ”視圖下,在它右面的編輯框中的“// your DLL function prototypes ”的下一行添加下面一行代碼:prototype number GDI32.AddFontResource(BYREF STRING); 并在“ // your global variables ”的下一行聲明兩個常量:#define HWND_BROADCAST 0xFFFF#define WM_FONTCHANGE 0x001D2、 然后在“ // your script function prototypes ”的下一行聲明一個函數(shù):export prototype number InstallFonts(string szFontsName, sting szFontsFiles);并在腳本最后將這個自定義函數(shù)的實現(xiàn)完成,具體代碼如下:function number InstallFonts(szFontName, szFontFiles) string szKey;beginszKey = "Software\\Microsoft\\Windows"; if (SYSINFO.WINNT.bWinNT) then szKey = szKey + " NT\\CurrentVersion\\Fonts"; elseif (SYSINFO.WIN9X.bWin98) then szKey = szKey + "\\CurrentVersion\\Fonts";endif;RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);RegDBSetKeyValueEx (szKey,szFontName,REGDB_STRING,szFontFiles,-1); AddFontResource(szFontFiles);// 向操作系統(tǒng)發(fā)送安裝字體的消息SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0); end;這樣整個安裝字體的函數(shù)就全部寫完了。
3、 首先,在 InstallShield6.22 的 “File Groups ” 視圖下新建一個 “ MOFonts 文件組, 將 它 的 “ Destination ” 值 設(shè) 置 為 “
為了能夠讓你的程序支持更多的 圖形格式,建議你把X:\Program Files\Common Files\ESRI\MO_image (X代表當前操作系統(tǒng)所在的目錄)整個目 錄都放在“MODLL這個組件下,最好不改變它的目錄結(jié)構(gòu),當然為了節(jié)省空間你可以刪掉 里面的pdf文件這樣以來你就可以在你的程序中處理所有 MO2.2所能夠支持的圖形格式了說明:文中出現(xiàn)的①、②分別代表了需要注冊和不需要注冊的兩種文件(注:專業(yè)文檔是經(jīng)驗性極強的領(lǐng)域,無法思考和涵蓋全面,素材和資料部分來自網(wǎng)絡(luò),供 參考可復(fù)制、編制,期待你的好評與關(guān)注) 。
