3.安装、部署与运行

问1.我经常遇到 IE 浏览器下控件首次安装失败,请问通常是什么原因呢?
1).如果是 XP 操作系统, 请在 "Internet选项" 中把安全等级调到 "默认" 的等级,通常就能自动安装;
2).如果是 Vista / Win7 / Win8 及后来的操作系统,需要在 "Internet选项" 的 "安全" 选项卡中关闭下方的 "保护模式".
如果你不放心、怕影响面过大,那么请把部署了硕正控件的服务器地址加入到 "受信任" 网站,这样在访问该网站时 “保护模式” 能自动关闭(见下图):
3).确保当前操作员有管理者(Administrator)权限,而不是标准用户;
4).如果客户端电脑是不能访问外网的,那么请参考下面的 "问2.我单位是不允许连外网...." ;
5).如果还不行,请直接访问硕正官网 (www.supcan.cn) 上的在线演示,如果在线演示没问题,那说明是你的后端部署有问题,比如少部署了文件、或URL不正确,问题应该迎刃而解;
6).请检查操作系统目录 Windows 下,子目录 "Downloaded Program Files" 是否存在,如果不存在,说明你的操作系统目录是不完整的,可能是杀毒软件或瘦身软件将其误删了,请手工创建该子目录;
7).请检查 IE 的右侧菜单 (齿轮图标) 中的“安全”子菜单,看看里面的“ActiveX筛选器”是否被勾上了,这个勾是不能勾上的,否则控件根本无法下载和安装;
8).请在“Internet选项”中把浏览器的安全等级降到最低试试;
9).如果仍无法运行,请关闭360等杀毒软件,尤其是网络版的360软件,必须放开和插件加载项安装有关的限制;
10).如果是Win7后的系统(包括Win7),请在 控制面板 \ 系统和安全 \ 系统 \ 系统保护 中,将 C: 盘的 "保护设置" 关闭;
11).如果大部分电脑没问题,有个别电脑死活装不上,这种情况也确实存在。我们发现,确实有大约 2% 左右的电脑无法自动安装,原因不明,主要是XP系统,遇到这种情况,请用硕正的本地安装程序安装,或用硕正本地安装包制作工具制作的安装程序安装,借助该工具,肯定能安装成功。
如果不是首次安装,而是升级不成功,一般手工删除BC目录、清理IE的Cache后,重启浏览器,就肯定能成功。 |
 |

问2.我单位是不允许连外网的,我发现首次安装硕正套件速度很慢甚至安装不成功,是不是需要连外网的原因?
是的,因为 IE 会在线检查插件加载项的数字签名证书是否已被加入了黑名单。
所以您必须跳过在线检查:手工打开IE浏览器菜单“工具”下的“Internet选项”,切换到“高级”选项卡,在“安全”树杈中,把 “检查发行商的证书是否吊销”、“检查下载程序的签名” 勾选除去。
然后,在“Internet选项”的“安全”中,点击“自定义安全级别”,把“ActiveX控件和插件”下的“标记为安全...”、“下载未签名...”这些选项,统统改为“启用”或“提示”,就肯定可以了。

问3.首次安装硕正套件时,浏览器马上就崩溃,一般是什么原因?
通常是因为当前用户不具备管理员权限。

问4.在Win7 / Win8 / Win8.1下,我明明把报表另存到文件、或者转换为Excel文件输出,但是为什么在资源管理器中根本找不到这个文件?
1.Win7 操作系统
是 IE 的“保护模式”起作用的结果,在“保护模式”下,IE8中看到的文件目录其实都是虚拟目录,你可能根本就找不到它们。关闭保护模式的方法请参考上面的 "问1.请问 IE 浏览器下需要怎么配置...":
2.Win8 / Win8.1 操作系统:
“保护模式”大致同上,但是操作系统的给浏览器和控件的权限比 Vista/Win7 更少,首先,您必须关闭保护模式; 其次,只能存取当前用户目录下的文件,比如存取“我的文档”中文件。

问5.客户端如何卸载Supcan套件?
最佳方案:用硕正本地安装程序安装,注意必须勾选 “Google Chrome浏览器插件” ,安装后,控制面板中的 “程序 \ 卸载” 中就有硕正的卸载项了,双击这个卸载项能基本干净卸载硕正程序。
如果硕正组件版本未能正常升级, 有一个简单的解决办法, 删除下面的 BC* 文件夹(BC开头的文件夹,比如 BC64、BC_Mozilla、BC_chrome、BC64_Mozilla、BC64_chrome):
WIn7 / Win8 操作系统:
位于 \用户\用户名\ 下, 个别安全设置比较严格的机器,BC目录有可能在 D:\BC 或 D:\Backup\BC 或 D:\UserData\BC
Step1: 删除 BC 目录,或 BC64 目录 (64 位 IE), 或 BC_Mozilla 目录(Chrome 或 Firefox 浏览器), 该目录位于:
XP / 2003操作系统:
位于 \Documents and Settings\用户名\ 下,个别安全设置比较严格的机器,BC目录有可能在D:\BC

问6.客户端能保持多版本共存吗?
在浏览器进程(Process)中不能同时加载多个版本,否则会报这个错:

多个版本的程序文件是能够共存的,程序文件都在 BC (C:\Users\用户名\BC )下各自的版本子目录中,页面加载哪个版本完全取决于dynaload.js中的版本号。
为了避免版本升级后无用老版本的积聚,Supcan采用如下策略:每次浏览器进程首次加载控件时都将自动检查配置文件,如果新版本程序访问过的URL覆盖了老版本访问过的URL,才会自动删除老版本程序.

问7.我在服务器中升级了Supcan的新版本包,为什么有的电脑能自动升级、而有的电脑老是报这个错?

浏览器进程同时加载了2个不同的版本,所以会这个报错. 导致这个问题的可能原因如下:
1.浏览器加载过老版本,在没有关闭过浏览器的情况下又加载了新版本。所以我们建议在深夜、尤其是在周末的深夜升级服务器;
2.页面未能及时更新dynaload.js所致,象页面中类似如下的脚本:
<script type='text/javascript' src='dynaload.js' />
当该js被修改后,浏览器不一定会马上刷新,它可能会从本地cache中读取,所以它以为版本没变,就加载了本地的老版本。当然解决办法也非常简单:在src后加一个特定的文字戳即可,例如改成:
<script type='text/javascript' src='dynaload.js?123' />
这样这段js就肯定能刷新,以后只要js改动过,文字戳也必须更改。
其实,不只是js,象常用的<a href='abc.htm'>超链接偶尔也会发生这种情况,其解决方法同上。这个问题本身和硕正套件是没有关系的,其实,有很多Web开发者在平时开发时都碰到过js未及时刷新的现象。
本demo演示页基本上都采用了这种书写格式,避免了静态文件未能及时刷新现象。
所以,这个问题也很容易解决的:是清理一下浏览器缓存、彻底关闭浏览器再打开,现象会自动消失。如果还是不行,那么将访问的网站加入受信任、手工删除 BC 目录,就肯定解决了。

问8.我给我的用户升级后,为什么有的电脑会出现如下错误:

原因和上一个问题完全一样,解决方法也一样。

问9.在版本升级时,有几台电脑死活升不上去,手工删除BC目录了还不行,怎么办?
很有可能是缓存在作怪,缓存包括服务器端缓存、浏览器缓存。
重启Web服务、清理浏览器的Cache,一般就能解决。

问10.我们每次版本升级都很费劲,硕正套件升级难道都这样的吗? 有没有什么彻底的解决办法?
不会,只要你理解“问4”、“问6”,并严格按照要求做了,基本应该是很顺利的。可以归纳为如下3点,希望您严格执行:
1.在夜间升级
原因:保证用户下次打开IE,IE进程是干净的,不会出现一个进程同时加载2个版本的情况。
2.象“dynaload.js?123”这个数字,每次版本升级都应该变化
原因:保证IE能下载这个文件,而不是从IE Cache 中读取。
3.升级后,后端服务建议重启
原因:Web服务器也有Cache,重启服务以清空这个Cache。
有一种情况,我们恐怕没有好办法:某些用户不喜欢关机(比如喜欢用睡眠)、IE进程又不关闭。

问11.我的应用复用了dynaload.js,如何实现和硕正官网类似的判断浏览器种类自动转安装的功能?
请参考安装包中根目录下的首页(index.htm)文件,找到 function go(url) 函数,参考一下这个函数

问12.经常发现貌似浏览器缓存导致的问题,比如报表保存了,但下次打开看到的仍是旧的内容,怎么解决?
浏览器的缓存问题确实困惑了很多开发者,在您使用硕正套件前肯定也遇到过类似的问题. 避开浏览器缓存的方法有很多,介绍几种简单的方案如下:
A. 动态内容禁止缓存
如果是动态内容(如aspx、jsp),您可以设置 Response 的 CacheControl 属性,程序片段例如:
..
Response.CacheControl="no-cache";
Response.End();
}
最终CacheControl将附在 http 头中,浏览器获得这段信息,就不会去缓存该 URL 的内容了。
B. 硕正控件绕过缓存
请打开 binary 目录下的 supcan.xml,找到 httpCache 小节,改成
<httpCache>NoCache</httpCache>
只要是硕正插件发出的 http 请求,就一律绕过浏览器的缓存,直接访问服务器了。该方法简单,和动态、静态无关,不需要您修改源代码.
C. 修改URL
浏览器缓存的入口很可能是以 URL 为 key 的哈希表,想办法不用重复的 key,也是绕过缓存的好办法,假如您要访问的 URL 是
http://192.168.1.1/myItem/get.xml
你在后面加问号和一个随机数,比如:
http://192.168.1.1/myItem/get.xml?2344
这个 2344 是随机产生的,保证和上一次的 URL 不一样,对缓存而言,它是一个全新的 key, 自然也没有缓存.
硕正控件的自动升级是由 dynaload.js 中的字符串(版本号)控制的,为了保证 dynaload.js 能及时更新,我们也是建议采用该方法的,当然后面的数字不是随机产生,而是在升级前人工修改.
D. 用 POST 代替 Get
请注意,POST 是决不会被缓存的,所以可以用 POST 代替常规的 GET。不过,并不是所有硕正的函数都支持 POST.
E. 手工清理IE缓存
在特别着急时,手工清除缓存是最简单而直接的办法,手工清理需要注意2点:
i).哪个浏览器的缓存
如果您用的是 Chrome/Firefox 浏览器,您仍然还需要清理 IE 的缓存,因为硕正插件是通过 WinInet 访问 http 的,相当于共用了 IE 的底层通讯组件、共用了缓存;
ii).如何清理缓存
如果您是用 Chrome、Firefox 浏览器,除了清理它们自己的缓存,还需要清理 IE 的缓存,因为硕正套件的底层Http通讯直接使用了 Windows 的 WinInet 基础组件,所以它实际上是共享了 IE 的缓存.
关于如何清理 IE 的缓存,请看下图,只要勾第二条 "临时Internet文件和网站文件" 即可,其它的都不需要勾,尤其是第一条,不能勾.

问13.使用Supcan套件过程中,发现\Documents and Settings\用户名\BC\Temp 目录下临时文件会越积越多,这正常吗?
不必理会,Supcan自有一套垃圾清理机制.

问14.我明明是正版,为什么显示的还是学习版?
首先确保服务器端的正版文件已经覆盖。
客户端如果已经安装过学习版,应该手工先将其卸载,卸载方法如前所述,如果还不行,请清理一下浏览器缓存再试。
如果还不行,您可能需要检查一下版本,该版本的版本号是否是在有效升级期内。
此外,硕正报表还有一个特殊的情况:如果您报表中的数据源是在演示版中设计的,那么有些字段仍然会显示成 "学习版限制" ,数据源设置界面需要在正式版下在走一遍,然后保存报表即可。

问15.我们购买了正版了,但 Firefox/Chrome 初次安装必须要访问一下硕正官网在线演示,才能安装上,是这样的吗?
不是。请您参考一下zip包根目录下的 index.htm 文件,把这个思路移植到你们自己的应用中去。关键代码是页面中的 function go(url) 函数.