Product(s): | Bentley VPR Viewer | ||
Version(s): | All | ||
Original Author: | Bentley Technical Support Group |
This document describes how to diagnose and correct major Bentley VPR Viewer problems (those that render the control unusable). It does not attempt to address every potential problem you might encounter when using Bentley VPR.
The major problems fall into two categories:
This guide applies to all versions of the Bentley VPR Viewer. When some information is specific to one version of the Viewer, it will be indicated.
When you view a Web page that references the VPR control, Internet Explorer automatically downloads and registers the control (if an up-to-date version is not already installed). Various problems can interfere with this downloading and registration, and the result is a red "X" icon in the Web page instead of a VPR window.
Download and registration problems like this are very difficult to diagnose and solve, but there are few steps you should take when you encounter the problem.
Any time you see the red "X" for VPR (or any other ActiveX control), the first thing you should do is examine the log file Internet Explorer creates that describes the problem. These log files reside in Internet Explorer's Temporary Internet Files folder. Viewing them is a little trick, but here's the procedure:
The log should indicate, on a file-by-file basis, which files Internet Explorer extracted from VPR's CAB file (vprctl.cab). It should be possible to identify which VPR file caused the problem.
This Web page describes how Internet Component Download works in general. http://support.microsoft.com/default.aspx?kbid=325307
This link describes why you often see directories named CONFLICT.1, CONFLICT.2 in the system's Downloaded Program Files folder. http://support.microsoft.com/default.aspx?scid=kb;en-us;196150
Sometimes you'll discover that you have multiple copies of vprctl.dll on your system, and it's not clear which one is actually in use.
The answer is in the Windows Registry:
HKEY_CLASSES_ROOT CLSID | {009BE90E-03E8-463F-B6DF-8C94C6E335CA} | InprocServer32 = full-path\vprctl.dll | ProgID = Vprctl.Vpr.1 | TypeLib = {BD27D8B6-FBE8-40CA-8091-3C89C0F9F5F4} | Version = 14.5.0.37 | VersionIndependentProgID = Vprctl.Vpr | TypeLib | {BD27D8B6-FBE8-40CA-8091-3C89C0F9F5F4} | 1.0 = vprctl 1.0 Type Library | 0 | win32 = full-path\vprctl.dll | Vprctl.Vpr | CLSID = {009BE90E-03E8-463F-B6DF-8C94C6E335CA} | CurVer = Vprctl.Vpr.1 | Vprctl.Vpr.1 CLSID = {009BE90E-03E8-463F-B6DF-8C94C6E335CA}
The most important entry is VPR's class ID entry, and specifically the InprocServer32 key. The class ID is important because it uniquely identifies VPR; no other ActiveX control will ever have the same class ID. The InprocServer32 key is important because its default value is the full path to vprctl.dll. If you have more than one vprctl.dll on your machine, this registry key will identify the one that is actually being used.
Starting with the 8.5 release, VPR's CAB file includes some system DLLs that are necessary for its execution. The vprctl.inf file lists these files and their versions. If Internet Explorer sees that a given DLL is not present, or is present but older than the version listed in the .inf file, it will install the DLL while the Viewer is being installed.
VPR Viewer versions up to and including 8.5
The files are msvcrt.dll and msvcp60.dll
The installation of msvcrt.dll has been a source of problems, because it is shared by so many Windows applications. In some cases, Internet Explorer is unable to install the new DLL, and the VPR installation fails. We have seen this problem with Windows 2000 Service Pack 1, and we have seen it with old versions of Internet Explorer (Version 5.0). In these cases, the solution has been to install a newer Windows Service Pack or Internet Explorer.
VPR Viewer version 8.9
The 8.9.x version of the VPR Viewer use the 7.1 version of the C/C++ runtime libraries. As these must be installed in the windows "system32" folder in order to be shared by multiple applications there are sometimes access rights issues when Internet Explorer tries to install them. Manually installing the files or relaxing the access rights normally fixes the problem.
VPR Viewer version 8.11
The 8.11 version of the VPR Viewer uses version 8.0 of the C/C++ runtime libraries. These are installed in the side-by-side libraries directory and normally don't give any problems. Extreme security configurations can sometimes exhibit installation problems.
VPR Viewer versions version 8.9 and up
Whereas older versions relied on OpenGL for display, these versions now use DirectX 9 technology. The DirectX 9.0c package must be installed on the computer before the VPR Viewer is installed otherwise installation will fail.
For VPR Viewer version 8.9 the vprctl.cab files brings an extension dll to the DirectX installation that must also be installed under the "system32" directory, much like the C/C++ runtime. Similar problems may occur here. Future versions of the VPR Viewer do not require nor package this extension dll.
It is possible to prohibit the downloading and the execution of ActiveX controls inside Internet Explorer. Since the VPR Viewer is an ActiveX control, it needs to be allowed to run. Make sure that your Internet Explorer security settings allow signed ActiveX controls to download and run.
It is probable that the VPR Viewer will be running inside a web page that uses scripting to interact with the VPR Viewer. You should also make sure that your security settings allow executing scripts.
Sometimes VPR will download and install properly but fail to display any graphics. VPR's main window will display in the web page (or other host application like InterPlot's plot preview window) and its context menu displays if you right-click in the window; it just won't display a DPR file.
The sections below describe the tests you can perform to isolate and correct the problem. It's generally a good idea to perform the steps in the order listed.
Note that any time you take corrective action, you should close all Internet Explorer windows before retesting VPR to make sure you're testing a new VPR instance, not an already loaded one.
In some cases, VPR may not display and DPR graphics because it is not receiving valid DPR data from the server. This problem is less likely to occur with Digital InterPlot servers, which simply return existing DPR files, than it is with Bentley Publisher servers, which generate the DPR data streams dynamically. With Publisher, you may end up publishing an empty view in a DGN, in which case the DPR file VPR displays contains no graphics elements.
The easiest way to check VPR's display capabilities is to test it with a local DPR file. Save the file to disk, then drag its file name onto an Internet Explorer window. If you see an image, VPR is working properly. (Of course, this will work only if VPR is already installed and registered on your PC.)
VPR Viewer versions up to and including 8.5
Another way to test if VPR is receiving valid DPR data from the server, but failing to display it, is to try printing the file. VPR uses very different code to display a DPR file than it does to print it. Note that this is not true in versions 8.9 and up where display and printing have been unified. If the print is correct even though the display is blank, the problem is definitely a VPR display problem, and you should continue the tests below.
VPR Viewer versions up to and including 8.5
VPR will not run on PCs or VMs configured for 256-color display. The PC must be set to run in either high-color (16-bit) or, preferably, true-color (24- or 32-bit) for VPR to work properly.
Note that this color-depth requirement prevents VPR from running over terminal server connections, which are limited to 256-color display. There is no workaround for this problem.
VPR Viewer versions version 8.9 and up
The DirectX technology only works in 16-bit or 32-bit modes. Make sure your display settings are configured appropriately.
VPR Viewer versions up to and including 8.5
VPR's display code is based on QuickVision, which is currently based on OpenGL and OpenGL is dependent on DirectX. If any of these dependent subsystems are malfunctioning, VPR's display will not work.
The easiest way to test OpenGL is to try one of the OpenGL screen savers included with Windows. The "3D Pipes" and "3D Maze" screen savers are good ones to try. If those screen savers work properly, the OpenGL and DirectX subsystems are fine, and are not likely causes of the VPR display problem.
If the screen savers do not work, you should reinstall DirectX.
VPR Viewer versions version 8.9 and up
This test does not apply. If DirectX is installed, it should run properly.
VPR Viewer versions up to and including 8.5
The version of QuickVision VPR uses in 8.5 makes much more use of the video hardware than previous versions. Sometimes VPR display problems occur because QuickVision is using hardware features that your video card or drivers do not support. (QuickVision internally maintains a list of cards and drivers known to be incompatible, but the list is not necessarily complete.)
To check if an incompatibility is causing this problem, define the environment variable QV_NOPBUFFER=1 in yoursystem environment. (For example, don't use the set command from a command window.) Then make sure to close all Internet Explorer instances before trying VPR again.
If setting that variable does not clear up the problem, define QV_SWCONTEXT=1 in your system environment. As before, close all Internet Explorer instances before re-testing VPR. This variable disables QuickVision's use of the hardware, and it typically clears up hardware-related VPR display problems.
If the problem is hardware related, you can sometimes clear it up by installing the latest video drivers. If VPR still does not display with the latest drivers, leaving QV_NOPBUFFER or QV_SWCONTEXT set in your system environment is your only option.
VPR Viewer versions version 8.9 and up
This test does not apply. If there is a problem with the hardware, the VPR Viewer will revert to software rendering.
ProjectWise TechNotes And FAQs
Bentley Technical Support KnowledgeBase
Bentley's Technical Support Group requests that you please confine any comments you have on this Wiki entry to this "Comments or Corrections?" section. THANK YOU!