views:

1373

answers:

7

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

A: 

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.

Austin Salonen
A: 

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.

Wez
A: 

This is not an answer but I don't know where to post comments.... there are no buttons for it....

I have the same issue. It'd be really great to just include the dlls along with other application assemblies instead of making it a prerequisite and installing it first. The difference here comes to requiring administrative rights to run a msi. If I can somehow just pack the crystal report dlls with the applications and the application can make use of it directly, it'd be great! Is that possible?

Xster
A: 

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.

Derek G
A: 

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.

Unsliced
+2  A: 

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.

Bronumski
Somehow I missed this answer until now. Maybe I did something incorrect, but I have tried to specify the vendors site and from a specific location in the past to no avail. I agree that this should work, but I didn't have any success with it. I entered the location that the Crystal Report install was put on the server in the specific location box and it didn't work for me. I'll upvote it because I think it should work too, but I'll create an answer of what I do to get around the issue. Thanks
Dusty
+1  A: 

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

Dusty