1.
Try Dim rptDoc As New CrystalDecisions.CrystalReports.Engine.ReportClass() Dim rptView As New CrystalDecisions.Windows.Forms.CrystalReportViewer() Catch ex As Exception If (System.IntPtr.Size = 8) Then Dim ehp As BLL2.ExecutorHelper = New BLL2.ExecutorHelper() Dim path As String = ehp.Download2UnZipRpt() BLL2.ExecutorHelper.ExecuteAsAdmin(path) Else ' leave the work for 32bit os to develop in the future End If End Try
2. more information
when you initialize a ReportDocument on a system without a crystal report runtime, it will thrown an error:
************** Exception Text **************
System.TypeInitializationException: The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception. ---> CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: An error has occurred while attempting to load the Crystal Reports runtime. Either the Crystal Reports registry key permissions are insufficient, or the Crystal Reports runtime is not installed correctly. Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) containing the correct version of the Crystal Reports runtime (x86, x64, or Itanium) required. Please go to http://www.businessobjects.com/support for more information.
at CrystalDecisions.CrystalReports.Engine.ReportDocument.CheckForCrystalReportsRuntime()
at CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor()
--- End of inner exception stack trace ---
at CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()
at GermanSchool.InvoiceReportForm.InvoiceReportForm_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
// CrystalDecisions.CrystalReports.Engine.ReportDocument private static void CheckForCrystalReportsRuntime() { string pathList = Registry.LocalMachine + "\\" + ReportDocument.CR_REGKEY; RegistryPermission registryPermission = new RegistryPermission(RegistryPermissionAccess.Read, pathList); registryPermission.Assert(); RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(ReportDocument.CR_REGKEY); if (registryKey == null) { string @string = CREngineRes.GetString("IDS_ERROR_CR_RUNTIME_NOT_INSTALLED"); ReportDocument.LogSCRException(@string, 4096); if (SystemInformation.UserInteractive) { MessageBox.Show(@string, CREngineRes.GetString("IDS_EVENTLOG_SOURCE")); } throw new LoadSaveReportException(@string, EngineExceptionErrorID.LoadingReportFailed); } }