Merge Modules and MSI
If you are using CRBasic 2008, SAP has recently provided
runtime MSI installers for your clients. There are separate installers for X86,
X64 (each about 25 MB) and IA64, which is about 50MB. These installers are
available on their download site.
For CR 2008, you can choose between an MSI, Merge Modules or
a ClickOnce assembly. When grabbing these from the download page, the MSI shows
up in three different files: "Crystal Reports 2008 - MLB Runtime,"
"Crystal Reports 2008 - Redistributable Installation" and "CR
2008 Runtime Package for the .NET Framework (EXE file)." The MSI requires
that you enter your developer Keycode during installation and this installer is
recommended for deploying the runtime on a web server for your web applications
that use Crystal Reports.
As with previous versions of Crystal Reports, the merge
modules are best for embedding the runtimes into your application setup package.
If you are using ClickOnce you can include the merge module in the manifest. If
you are building a setup package and including the merge module, do not forget
to enter your Keycode into the merge module’s properties when creating your
setup package as shown in Figure 2.
Figure 2: Applying your Keycode to the runtime
merge module
In my latest solution, since we are updating our reports to
CR2008, wedo not want to surprise the end users with a 50 MB addition to their
ClickOnce update—especially the users who are updating over the web. (Generally
their updates contain files that are under ½ MB.) Rather than adding the merge
module into the manifest, I created a setup package just for the runtime. The
admin at my client's site will be sure that this setup package is run on the users'
computers prior to deploying the update to the web server.
Nothing like a little branding
The embedded report viewer has the Business Object’s logo on
it as you can see in Figure 3.
Figure 3: The Business Objects logo seems like a permanent
fixture but it is not
While the User Guide documents how to remove this banner
from the Installer, there is nothing about this logo in the viewer.
However, there is a completely undocumented property of the
CrystalReportViewer control called ShowLogo. It is not surfaced in the
Properties page. It does not show up in Intellisense. It does not show up in the
Object Browser. I could not even find it using Reflector. But you can code it
in and it will compile and it does, indeed, do the trick as you can see in
Figure 4.
CrystalReportViewer1.ShowLogo = False
Figure 4: The hidden ShowLogo property allows you to
remove the logo from the viewer
Thanks to Bruce Landry who trolled around long enough on the
web to find this and then share it on the Business Objects forums.
Avoiding the mess that I made (and the time that I
wasted)
Because I had so much trouble with the embedded designer and
then the runtime, I ended up installing and uninstalling CR 2008 and
reinstalling and uninstalling CRBasic 2008 many times. At one point I had
decided to give up and just stick with CR Basic. When I was finally pointed to
the information about targeting X86 in the project's build properties I had
already updated my reports to CRBasic. As I moved everything to CR 2008 and
tested my deployment, the deployed application complained that Crystal Reports
version 10.5 was unavailable. I still had a dependency to CRBasic 2008 built
into one of my many assemblies. Once I tracked it down I uninstalled CRBasic
2008 entirely from my machine so that I would not make that mistake again.
Now the ClickOnce is working; the assemblies with the new
reports are getting downloaded and the client machines have the Crystal Reports
12.0 runtime on it with everything working well.