deploying a click-once application with Crystal Reports 13 to limited-access users?

matao picture matao · Jun 23, 2011 · Viewed 8.9k times · Source

Updating a VS2003 1.1 windows forms app to VS2010 with click-once, we had to upgrade the version of crystal reports used in the app as well.

Everything works perfectly if the user has local admin. Unfortunately most of our users run extremely locked-down and can't install anything. This presents a problem for installing the CR13 binaries. In the click once settings I've marked all the CrystalDecisions.* dlls as Include/Required, but they aren't being published to the deployment folder, and hence not copied to users machines with other 3rd party libraries. This means that the app starts fine, but as soon as a user tries to run a report they get the following error:

************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'CrystalDecisions.Windows.Forms, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified.
File name: 'CrystalDecisions.Windows.Forms, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304'

Even though it's marked as Include/Required, this file is not being deployed. I really don't want to have to chase down every user and install it manually (we don't have the option to do a group-policy push). There are four Crystal dlls we use:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • CrystalDecisions.Shared
  • CrystalDecisions.Windows.Forms

Of these, only the engine is actually being deployed! Does anyone know why click-once isn't deploying the others (esp the Windows Forms dll) and how I can convince it to?

thanks!

edit: tried removing the existing references to the Crystal dll's (which pointed to the Crystal install under "C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet", copying them into the project and adding them via the "browse" tab, but they still weren't deployed :( It's almost like they have a flag set to say that they shouldn't be deployed, so visual studio just ignores them??

Answer

RLH picture RLH · Jun 23, 2011

I manage a major ClickOnce project that also uses the Crystal Reports engine for generating PDF documents.

I believe what you are trying to do is, technically, against the Crystal Reports terms of service. Instead, you must have the users install the latest version of the distributable Crystal Reports runtime as a prerequisite. Yes, I understand that this is a HUGE inconvenience but it is the only solution to this problem.

Were you trying to install the CR runtime by using the ClickOnce prerequisite or were you trying to bundle an installer with your app? You will want to use the latest, ClickOnce installation package, which is available on this page, from the SAP site. I could be wrong, but I think that your users may be able to install the runtime without admin privileges if you install it via the ClickOnce auto-installer for prereqs.

From my experience if you are deploying a robust application that needs to have multiple prerequisites installed on a user's application, someone with admin rights should install your prerequisites. This is not always a requirement but it can save a lot of headaches in the future.