Legacy: Silently Install Crystal Reports Viewer 2


File this one under PITA.

As part of our #XPMustDie campaign we sometimes come across old software that simply cannot be updated in time. It’s usually some bespoke system that will take a lot of time and money to re-write or upgrade. In my opinion, it is better to get the OS secure and let an old legacy app run, than to keep a dusty Windows XP PC just for the use of one program. Of course, the ideal solution may be to virtualise the app but if you don’t have the infrastructure in place already then that may be cost-prohibitive or time consuming as well.

One such app we need to use is  Crystal Reports Viewer 2.0. This is completely unsupported by the publisher (SAP) and means it is very difficult to track down files or documentation.

It actually installs and runs fine on Windows 7 Pro (x64) but it does give a pesky error


CrystalViewer Setup

An error occurred while registering the file ‘C:\Windows\system32\PDADDIN.DLL’


I’ve no idea what the PDAddIn.dll does but everything we do with the app seems to work fine without it.

You also get the usual “The file you are trying to install is older than the one on your system. Do you want to keep it?” message. In Crystal Viewer, that comes up for MSVCRT.DLL.

The problem with this, is that it makes it impossible to install the app silently. This is then a headache if you wanted to deploy via a script,  group policy,  Microsoft Deployment Toolkit, System Center etc.

Luckily I found this superb article Silent Installs and Visual Basic 6 Setup Packages. In here, it explains how you can edit a SETUP.LST file to ignore the problematic files and carry on as normal. SETUP.LST should already be one of the files in your installation folder alongside SETUP.exe.

After I removed the offending lines I could then use the silent install command to deploy the app.

A note about the silent install command itself. It should be setup.exe -s<logfile> but it wasn’t working for me at first. Check these things if you are getting an “Invalid command-line arguments. Unable to continue.” error

  • The -s must be in lowercase
  • The <logfile> must be specified
  • There is no space between -s and <logfile>
  • When I used -sC:\temp\CrystalViewer-Setup.log the log file was truncated to CrystalViewer without a file extension. I’m guessing it was the hyphen that did it but there may be a file length restriction

The command that worked for me was setup.exe -s%TEMP%\Crystal.log

For completeness, here is the contents of my SETUP.LST file

[Bootstrap]
SetupTitle=Install
SetupText=Copying Files, please stand by.
CabFile=CrystalViewer.CAB
Spawn=Setup1.exe
Uninstal=st6unst.exe
TmpDir=msftqws.pdw
Cabs=1

[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 1:00:00 AM,101888,6.0.84.50
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 1:00:00 AM,22288,4.71.1460.1
File3=@olepro32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,8/4/04 1:56:46 AM,83456,5.1.2600.2180
File4=@stdole2.tlb,$(WinSysPathSysFile),$(TLBRegister),,7/22/01 2:39:20 AM,17920,3.50.5014.0
File5=@asycfilt.dll,$(WinSysPathSysFile),,,8/4/04 1:56:42 AM,65024,5.1.2600.2180
File6=@oleaut32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,8/4/04 1:56:46 AM,553472,5.1.2600.2180
File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,2/23/04 1:00:00 AM,1386496,6.0.97.82

[IconGroups]
Group0=CrystalViewer
PrivateGroup0=True
Parent0=$(Programs)

[CrystalViewer]
Icon1="CrystalViewer.exe"
Title1=CrystalViewer
StartIn1=$(AppPath)

[Setup]
Title=CrystalViewer
DefaultDir=$(ProgramFiles)\CrystalViewer
AppExe=CrystalViewer.exe
AppToUninstall=CrystalViewer.exe

[Setup1 Files]
File1=@0.REG,$(AppPath),0.REG,,4/11/05 4:55:19 PM,161,0.0.0.0
File2=@mscomctl.ocx,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 1:00:00 AM,1081616,6.1.97.82
File3=@comdlg32.ocx,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 1:00:00 AM,152848,6.1.97.82
File4=@keycode.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,$(dllSelfRegister),$(Shared),7/5/02 5:13:16 AM,221184,9.0.0.147
File5=@u2ddisk.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/12/02 10:32:21 AM,49152,9.2.0.541
File6=@u2ftext.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/12/02 10:29:59 AM,155648,9.2.0.548
File7=@crtslv.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,$(dllSelfRegister),$(Shared),7/5/02 5:12:42 AM,30793,9.2.0.528
File8=@ExportModeller.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,$(dllSelfRegister),$(Shared),7/12/02 10:26:29 AM,495688,9.2.0.559
File9=@crxf_pdf.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/12/02 10:26:59 AM,389175,9.2.0.563
File10=@crxf_xls.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/12/02 10:28:35 AM,405571,9.2.0.650
File11=@crxf_wordw.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/12/02 10:27:35 AM,163897,9.2.0.566
File12=@crxf_rtf.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/12/02 10:27:18 AM,163895,9.2.0.566
File13=@exlate32.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 1:10:40 AM,671801,9.2.0.528
File14=@querybuilder.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 12:50:06 AM,163911,9.2.0.498
File15=@crdb_odbc.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/15/02 12:43:58 AM,373836,9.2.0.564
File16=@crdb_dao.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 12:51:56 AM,217152,9.2.0.487
File17=@crdb_ado.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/17/02 12:44:36 AM,368704,9.2.0.512
File18=@crqe.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,$(dllSelfRegister),$(Shared),7/6/02 12:44:46 AM,1417289,9.2.0.580
File19=@Implode.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),12/2/96 12:00:00 AM,18944,1.0.0.1
File20=@sscsdk80.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),6/26/02 3:00:12 PM,1273856,2.3.6.8
File21=@u25samp1.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:14:36 AM,24576,9.2.0.15
File22=@u25dts.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:13:28 AM,24576,9.2.0.8
File23=@u252000.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:13:12 AM,24576,9.2.0.7
File24=@u2lfinra.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:14:18 AM,69632,9.2.0.4
File25=@u2lexch.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:14:00 AM,28672,9.2.0.16
File26=@u2ldts.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:13:40 AM,24576,9.2.0.5
File27=@u2lcom.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:12:26 AM,106496,9.2.0.5
File28=@u2l2000.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:12:42 AM,24576,9.2.0.8
File29=@ufmanager.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/16/02 3:37:36 PM,225280,9.0.0.1
File30=@crtowords_en.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,,$(Shared),7/5/02 4:14:54 AM,24576,9.2.0.14
File31=@craxdrt9.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,$(dllSelfRegister),$(Shared),7/15/02 3:42:21 AM,6135873,9.2.0.448
File32=@crviewer9.dll,$(CommonFiles)\Crystal Decisions\2.0\bin,$(DLLSelfRegister),$(Shared),7/5/02 5:14:30 AM,770816,9.2.0.528
File33=@CrystalViewer.exe,$(AppPath),,,4/11/05 4:43:35 PM,57344,1.0.0.0

Learning about the LST file has really helped speed up our deployment so thanks again to Joe Robinson for educating me 🙂

Advertisements

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s