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缓存
在特别着急时，手工清除缓存是最简单而直接的办法，手工清理需要注意２点：
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) 函数.