这两天搞安装包真心坎坷,一个问题接一个问题,先是为了实现自定义动作现啃vbs,后面又是安装过程老是报错:

各种搜索、各种尝试,总算搞掂,积累了些经验,分享一下。

首先CR for VS2010的所有东东都在这里:http://scn.sap.com/docs/DOC-7824

简单说一说资源下载表的情况,资源表如图(敢情都出到SP10了,我用的是13.0.9.1312):

每列代表一类资源,每行代表一个版本,我仅就我知道的资源类别介绍一下:

Install Executable:我理解是完整版,包括VS插件、报表设计器、运行环境等所有东西,装上后就可以在VS中创建CR报表了。适用于开发机;

MSI 32/64 Bit:运行环境独立安装包,分别适用于32/64平台。就是装在客户电脑上的东东,下文我所谓的MSI整合法就是指这个;

MSM 32 Bit:也是运行环境,只不过是用来合并在安装包中的,不能独立安装。看起来只有32位版;下文我所谓的MSM合并法就指它

别的什么ClickOnce、WEB XML Dep..啥的我没用过,不清楚。

一、MSM合并法

这是我最先选择的方式,也正是老出现上述报错的方式。

优点:正统打包方式;得到的安装包体积相比MSI整合法小接近30M

缺点:不管系统是否已经有CR组件,安装时长都不短(我的环境是起码2min+),光软件部分的安装过程其实是很快的,等于大部分安装时间都是部署CR组件去了

另外有一点我现在懒得确认了,就是该方式在软件卸载时会不会连CR组件一起卸载不确定,以后有机会再试。

该方法的官方文档在此:

http://wiki.scn.sap.com/wiki/display/BOBJ/Using+Crystal+Reports+for+Visual+Studio+2010+Merge+Modules+(MSM)+to+create+a+Setup+project

E文好的童鞋照着做应该就成了,我主要说一下我认为的关键点:

1、CR的msm文件最少只需并一个即可,就是CRRuntime_13_x.msm,40M多那个,其余的是语言包和一个CRRuntime_maps_13_x.msm,maps这个不知道干嘛的,反正我没并也不影响使用。语言包的话按需并就是。

2、另外要并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目录中即可。

3、另一个关键是,客户机要装这个http://www.microsoft.com/zh-CN/download/details.aspx?id=14431,即VC++2005 SP1分发包的ATL更新。扯一下,VC++05的分发包我知道的有这么4个:VC++05、VC++05 SP1、VC++05 SP1 ATL、VC++05 SP1 MFC,根据经验,SP1包含RTM,ATL更新和MFC更新又都包含SP1,但ATL和MFC应该互不包含(从文件大小判断)。总之本例来说,只需且必须在客户机装ATL更新即可,之前老报那个错就是因为客户机只装了RTM或SP1的原因,这个在官文中也有提及。

完成以上3点,MSM法就没问题了。说实话弄清楚以上关键点煞费周折,容我张狂,网上说CR部署的文章不少,但都没叽歪到重点,不知道是那些作者RP好没遇到问题还是咋的。

二、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法,原因就是后者可以判断,在已装过的情况下可以不装(例如重装软件),而前者就是不管装没装过都要耗一下,反正我是挺在意安装时长这事的。

三、手动MSI法

这条完全是凑数的,它就是上面第二法的手动版,没技术含量,不过作为列举部署方法的文章来说,它的确也是方法之一,并且该方法可以大大缩小安装包的体积,省70M哦亲。容我啰嗦,此法在部署时需要扔两个文件到客户机,自然就是CR MSI和软件安装包这俩货了,完了先装CR MSI,再装软件。如果客户机已经装过CR,只需传一个不带任何添加剂的绿色无公害安装包过去即可,这在ADSL翔上行的年代,还是有点惬意的,这也是此法写出来的缘由。

Anyway~折腾了几天,这鸟包总算打好,开始下一个项目...

- 文毕 -

水晶报表13.x(Crystal Reports for VS2010)的安装部署经验的更多相关文章

  1. asp.net core使用水晶报表问题

    背景     最近项目上遇到一个需求,要后台通过定时任务把水晶报表生成pdf文件,然后邮件发送给相关人. 技术实现思路     选用ASP.NET Core框架(基于2.2版本),通过IHostedS ...

  2. 报表学习总结(一)——ASP.NET 水晶报表(Crystal Reports)的简单使用

    一.水晶报表简介 Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表.水晶报表是业内最专业.功能最强的报表系统,它除了强大的报表功能外.最大的优势是实现了与绝 ...

  3. Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

    在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...

  4. Visual Studio 2010打开水晶报表是出现二进制

    水晶报表在64位的机器下未安装成功 解决方法 到http://www.cnblogs.com/siyunianhua/p/4806513.html下载  水晶报表VS2010版IDE安装标准版SAP ...

  5. Asp.Net中使用水晶报表

    Asp.Net中使用水晶报表(上) 在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心.一周以后,在阅 ...

  6. Asp.Net 中使用 水晶报表(上)

    Asp.Net中使用水晶报表(上) 在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心.一周以后,在阅 ...

  7. 创建条形码图像易用的控制字符编码功能的条形码控件Native Crystal Reports Barcode Generator

    Native Crystal Reports Barcode Generator是一个对象,它可以很容易地被嵌入到一个Crystal Report中用于创建条形码图像.一旦此条形码被安装在一个报表中, ...

  8. Crystal Reports 2008(水晶报表) 第一个报表

    学习Craystal Reports 2008的时候,光看说明文档,很多东西看了就忘了. 我在看文档的时候,是跟着文档上面来做的. 这样边看边做,效果还不错哈 下面就是我的第一个demo 先看看效果: ...

  9. Crystal Reports 2008(水晶报表) 安装

    这篇blog主要是介绍Crystal Reports2008(水晶报表)的安装. 首先我们应该知道Crystal Reports 有什么作用? 从这里Crystal Reports 你可以了解到它的一 ...

随机推荐

  1. python property

    python property 在2.6版本中,添加了一种新的类成员函数的访问方式--property. 原型 class property([fget[, fset[, fdel[, doc]]]] ...

  2. CocoSocket开源下载与编写经验分享

    CocoSocket分享 cocos2dx 3.1都出了,但依然没有发现与它原生的SOCKET支持,于是,这几天在家,手工撸了一个. 目前版本对IOS,ANDROID,WINDOWS支持良好.且为异步 ...

  3. No resource found that matches the given name 'android:Widget.Material.A解决方案

    1:首先新建空白工作区 2:先import appcompat_v7 appcompat_v7在一个类似这样的地方, C:\mywork\android\android-sdk-windows\ext ...

  4. 在ThoughtWorks工作这几年我学到了什么?

    不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...

  5. Atitit intellij idea的使用总结attilax

    Atitit intellij idea的使用总结attilax 1. ideaIC-2016.2.4.exe1 1.1. Ij vs eclipse市场份额1 1.2. Ij的优点(方便的支持gro ...

  6. 使用JSExcelXML.js导出Excel模板

      github地址:https://github.com/464884492/JSExcelXml 业务系统显示效果图 导出模板图 功能描述    世间万物总是相生相克,既然我们的客户要求有导出Ex ...

  7. 每天一个linux命令(37):date命令

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...

  8. KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定

    if绑定目的 if绑定一般是格式是data-bind=if:attribute,if后所跟属性或表达式的值应为bool值(也可以是非bool值,当非空字符串时则为真),if绑定的作用与visible绑 ...

  9. silverlight中 Storyboard(动画)的使用,实现球的上下循环移动,左右移动,及旋转功能

    话说,总结应该是个收获的心情,可现在的自己似乎没感觉到哪个喜悦的心情,说明自己做得还不够好,现在还是把一些做好的东西总结下.“总结”是学习,工作中必须的,不能偷这个懒 o(╯□╰)o 实现上下循环移动 ...

  10. 使用supervisor提高nodejs调试效率

    如果你有PHP 开发经验,会习惯在修改PHP 脚本后直接刷新浏览器以观察结果,而你 在开发Node.js 实现的HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止 Node.js 再重新运 ...