本文轉載自:http://www.tuicool.com/articles/Jb6ziyJui
這兩天搞安裝包真心坎坷,一個問題接一個問題,先是爲了實現自定義動做現啃vbs,後面又是安裝過程總是報錯:插件
各類搜索、各類嘗試,總算搞掂,積累了些經驗,分享一下。設計
首先CR for VS2010的全部東東都在這裏: http://scn.sap.com/docs/DOC-7824blog
簡單說一說資源下載表的狀況,資源表如圖(敢情都出到SP10了,我用的是13.0.9.1312):資源
每列表明一類資源,每行表明一個版本,我僅就我知道的資源類別介紹一下:開發
Install Executable: 我理解是完整版,包括VS插件、報表設計器、運行環境等全部東西,裝上後就能夠在VS中建立CR報表了。適用於開發機;文檔
MSI 32/64 Bit: 運行環境獨立安裝包,分別適用於32/64平臺。就是裝在客戶電腦上的東東,下文我所謂的MSI整合法就是指這個;部署
MSM 32 Bit: 也是運行環境,只不過是用來合併在安裝包中的,不能獨立安裝。看起來只有32位版;下文我所謂的MSM合併法就指它get
別的什麼ClickOnce、WEB XML Dep..啥的我沒用過,不清楚。虛擬機
1、MSM合併法
這是我最早選擇的方式,也正是老出現上述報錯的方式。
優勢:正統打包方式;獲得的安裝包體積相比MSI整合法小接近30M
缺點:無論系統是否已經有CR組件,安裝時長都不短(個人環境是起碼2min+),光軟件部分的安裝過程實際上是很快的,等於大部分安裝時間都是部署CR組件去了
另外有一點我如今懶得確認了,就是該方式在軟件卸載時會不會連CR組件一塊兒卸載不肯定,之後有機會再試。
該方法的官方文檔在此:
E文好的童鞋照着作應該就成了,我主要說一下我認爲的關鍵點:
一、CR的msm文件最少只需並一個便可,就是CRRuntime_13_x.msm,40M多那個,其他的是語言包和一個CRRuntime_maps_13_x.msm,maps這個不知道幹嗎的,反正我沒並也不影響使用。語言包的話按需並就是。
二、另外要並4個VC80的msm,分別是:Microsoft_VC80_ATL_x86.msm、Microsoft_VC80_CRT_x86.msm、Microsoft_VC80_MFC_x86.msm、Microsoft_VC80_MFCLOC_x86.msm。這個在官文的截圖中有體現。關鍵問題是,裝VS2010後,在【C:\Program Files (x86)\Common Files\Merge Modules】中只會有VC100版的msm,上哪弄VC80的着實讓我折騰了一下,後來是在虛擬機中裝個VS2005才獲得的,已上傳至網盤: http://pan.baidu.com/s/1dDELlWt 。下載後放到上述Merge Modules目錄中便可。
三、另外一個關鍵是,客戶機要裝這個 http://www.microsoft.com/zh-CN/download/details.aspx?id=14431 ,即VC++2005 SP1分發包的ATL更新。扯一下,VC++05的分發包我知道的有這麼4個:VC++0五、VC++05 SP一、VC++05 SP1 ATL、VC++05 SP1 MFC,根據經驗,SP1包含RTM,ATL更新和MFC更新又都包含SP1,但ATL和MFC應該互不包含(從文件大小判斷)。總之本例來講,只需且必須在客戶機裝ATL更新便可,以前老報那個錯就是由於客戶機只裝了RTM或SP1的緣由,這個在官文中也有說起。
完成以上3點,MSM法就沒問題了。說實話弄清楚以上關鍵點煞費周折,容我張狂,網上說CR部署的文章很多,但都沒嘰歪到重點,不知道是那些做者RP好沒遇到問題仍是咋的。
2、MSI整合法
該方法其實原理就是,先裝CR運行環境獨立安裝包(見上文資源表說明部分,下文簡稱CR MSI,下文說的安裝包都指軟件安裝包),再裝軟件自己,跟手動分開裝同樣的效果,只不過整合到安裝包中的話,是由安裝包調用CR MSI進行安裝,而不是人工安裝。照例說一說我認爲的優缺點:
優勢:不折騰。因爲CR MSI是能夠獨立安裝的,它已經集成了VC80 msm、ATL啥的,只要它裝完就已經能夠支撐報表運行;另外就是這種方法能夠寫條件判斷是否已裝CR組件,若是已裝就不裝了,這樣能大大縮短整個安裝時長
缺點:安裝包比MSM合併法大近30M。緣由固然是CR MSI自己就有70M多的個頭,比40M的CRRuntime_13_x.msm+單個語言包就大了那麼多
此外這種方法安裝完成後,在控制面板【添加/刪除程序】中會體現CR運行環境:
意味着能夠獨立卸載它,這個是優/缺點各人看待。
言歸正傳,具體整合方法,因打包軟件不一樣而不一樣,因此很差詳說。我用的是Advanced Installer(簡稱AI),是在先決條件中加入CR MSI,加入後AI能智能識別並填好安裝條件什麼的,就是在客戶機還沒裝CR MSI時,安裝過程就會執行CR MSI,不然不執行,這樣在已裝CR運行環境的機器上,整個安裝過程就很快。話說不管是MSM法仍是MSI法,只要是沒裝CR的機器,部署CR組件的時間都挺長的,這尼瑪水晶報表更新到這一版就這點很差,早期版本的安裝都是很快的,這一版沒個幾分鐘裝不下來。因此正是由於安裝時長這個問題,在我解決msm法後,毅然決然仍是選用MSI法,緣由就是後者能夠判斷,在已裝過的狀況下能夠不裝(例如重裝軟件),而前者就是無論裝沒裝過都要耗一下,反正我是挺在乎安裝時長這事的。
3、手動MSI法
這條徹底是湊數的,它就是上面第二法的手動版,沒技術含量,不過做爲列舉部署方法的文章來講,它的確也是方法之一,而且該方法能夠大大縮小安裝包的體積,省70M哦親。容我囉嗦,此法在部署時須要扔兩個文件到客戶機,天然就是CR MSI和軟件安裝包這倆貨了,完了先裝CR MSI,再裝軟件。若是客戶機已經裝過CR,只需傳一個不帶任何添加劑的綠色無公害安裝包過去便可,這在ADSL翔上行的年代,仍是有點愜意的,這也是此法寫出來的原因。
Anyway~折騰了幾天,這鳥包總算打好,開始下一個項目...
- 文畢 -