本文转载自: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~折腾了几天,这鸟包总算打好,开始下一个项目...
- 文毕 -