11
votes

I have a .NET Winforms app (created in VS2005) that I deploy using ClickOnce. On one of the forms I have a Crystal Reports viewer control for the user to view the reports, but in order to use that in the app I have to include the the Crystal Reports XI Release 2 prereq which they install prior to installing the app. This basically installs a watered down version of Crystal onto the users machine.

It works publishing this way, but it is sort of a hassle for the user to have to wait on Crystal to install and is a huge hassle for me because publishing the app with the prereq takes a long time to finish because it has to upload the large prereq up to the server.

Since the publish takes so long and new installs are not super common I generally don't include the prereq when I publish changes and instead only publish it with the prereq if a new install is needed.

If you've used ClickOnce to publish an app with Crystal Reports, is this how you've published it or is there an easier/better way.

Is there a way to include/GAC the CR dll's needed instead of including and installing the Crystal Report prereq or is there a way that I can configure the OneClick deployment to not have to copy the file up every time. If I could configure the ClickOnce deployment so that I don't have to include the prereq and instead just point the install to a standard location that would help.

Hope this was somewhat clear and that someone can help out. Thanks

6
I had this issue too, but I didn't find a good solution for it except to include a link, in the install notes, to the CR Redist msi.Nathan Koop

6 Answers

6
votes

When you deploy a ClickOnce app with prerequisites you can specify where the prerequisites are downloaded from, local or the vendor (such as Microsoft). If you specify the vendor it will not include the prerequisite binaries in your deployment package.

If Crystal has not specified a remote location then you can always do your own prerequisite using the Bootstrapper Manifest Generator. You would then upload the Crystal binaries to a location on your deployment server, create your custom prerequisite using your new binary repository as the vendor site, add the custom prerequisite in your clickonce application and set it to download from the vendors site.

I believe that in VS 2010 you have a third option for ClickOnce prerequisites where you can target a specific site removing the need for your custom prerequisite.

3
votes

From the responses, it seems that this is pretty common so I'll just post what I do to get around the issue for now.

First I'll start that I think Bronumski's response should work, but I've not had success with it in the past when I tried it.

The way that I get around this issue is just to publish the files using ClickOnce to a folder locally and then ftp the files over manually excluding the crystalreport install directory that is created.

I know this is not a good answer for this, but I don't have to deploy very often anymore and so this is my work around to the issue for now. Please read through all of the other answers to find one that might help resolve your issue.

Hope it helps. Thanks

0
votes

Conceptually, you're doing it the same I did awhile ago. The one thing I did differently was to deploy it from the build server instead of my machine. Quite frankly, I didn't care how long it took to deploy just so long as it didn't interrupt my machine.

I was using CruiseControl.Net for the builds so when it came time to deploy the release build I would just disable the CC build for it, start the publishing process, and check it after awhile.

0
votes

The Crystal 11.5 Merge Modules for .Net are buggered, and that introduces issues when deploying through ClickOnce.

We eventually ditched ClickOnce and went for a self-extractor setup (Nullsoft Install System), and installed the Crystal Redist once-off on the client PC's.

Crystal is a nightmare, you can never 'get it right', but you can mitigate the headaches.

0
votes

When I had this problem, I created a seperate installer for Crystal Reports That made sense for me because I had many programs that used it.

That shortened the click once deployments but systems without the prequisite would crash with an exception, so when I migrated everything to Visual Studio 2008 and the newer Crystal Reports I started including them instead.

It takes longer each time they install and update, but in my case it isn't worth the trouble of managing the prequisite versus the ease of deploying.

0
votes

Sorry to have to admit that I had a similar problem and ended up coming up with similarly arbitrary solution.

I ended up sitting between two stools, if the user didn't want Crystal on their machine, I offered an option to access a webservice hosted on a server with Crystal, so the job could be done remotely. If they had Crystal, the the job was done locally.

It wasn't perfect, but it least it was reasonably reactive.