Hacking the Report Viewer Redistributable
Click Once is the most recent and most successful Microsoft web deployment strategy for Smart Client Applications. The technology is a great way to deploy and/or update .NET 2.0 applications on client machines without the need for an installer.
I have used the Report Viewer Control included in Visual Studio 2005 to embed reports within our Smart Client. The control allows me to create professional reports without the use of a third party tools. Plus I can always scale up to Reporting Services should the need arrise.
There is a Report Viewer Redistributable available for download. However, the Redistributable is an MSI and installs all components in the GAC. This action requires administrator permissions which is frowned upon by our network security team. The MSI is 1.83 MB and contains several extra files besides the core DLL's.
We can solve this problem by "hacking" the MSI Redistributable. The following steps were performed by co-worker John Arcidiacono and myself to successfully solve the challenge described above.
- Download Report Viewer Redistributable
- Use favorite Zip Utility to extract the MSI.exe to a folder of your choice
- Find the file ReportV1.cab in extract folder from step #2
- Use favorite Zip Utility to extract ReportV1.cab to a folder of your choice
- Open the new folder from step 4 and find 4 files
- Rename: FL_Microsoft_ReportViewer_Common_dll_117718_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 To Microsoft.ReportViewer.Common.dll
- Rename: FL_Microsoft_ReportViewer_ProcessingObject_125592_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 To Microsoft.ReportViewer.ProcessingObjectModel.dll
- Rename: FL_Microsoft_ReportViewer_WebForms_dll_117720_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 To Microsoft.ReportViewer.WebForms.dll
- Rename: FL_Microsoft_ReportViewer_WinForms_dll_117722_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 To Microsoft.ReportViewer.WinForms.dll
- Copy these dlls to your smart client project and reference them
- Now they will be part of the Smart Client's Build Output and Click Once Deployment