We have number of ways to deploy the SSRS RDLs like
(1) Uploading the RDLs from Report Manager
(2) Deploying from BIDS
(3) Using RS.EXE and RSS scripts
(4) Calling SSRS web service from a custom .NET application
Though first & second approaches are simple, they are manual and hence error prone. Also they can be taxing when you have to load lot of reports. We can consider this approach in DEV environment. Certainly not in QA or Production.
While the last two options are very helpful in automating the deployment, one of the challenge is that the DEV has to prepare the build i.e. DEV has to put the RDLs, RSS scripts and other supporting files in proper folders and send it to the QA/Production team.
An installer can help us in this scenario as it can
a) Package the required files
b) Control the execution sequence
c) Accept user inputs
We choose to go with WIX , an open source installer from Microsoft.
Our SSRS deployment is based on the following utilities
RS.EXE + RSS scripts — to deploy the RDLs, Create Folders in Report Server etc
WIX — to create installer and call the RS.EXE
The first step is to get the WIX. The current version is 3.5. Once you install the WIX you can use the Visual Studio to create the WIX project.
The Report solution looks like below (WIX project is added to the SSRS solution)
We have to give instructions to the WIX to
a) check for installation condition like product not installed already, prerequisites are already available etc
b) create folders and extract the packaged files
c) call the RS.EXE with necessary parameter
d) control the execution flow
All these instructions are coded in the WXS files.
In our solution the Product.wxs holds the product information like name of the installer, version , prerequisite and etc.
The Report.wxs contains the code to copy the RSS scripts to the folders and also calls RS.EXE to create a folder in Report Server
The MyReports.wxs has the instruction to copy the RDLs in the report projects and the call to RS.EXE to upload the RDLs to report server.
The ProductUI.wxs is used to create the user interface to accept inputs from user.
And the installer looks like
the above one is welcome screen and the below one is where user can select which report to deploy
the below screen captures the report server where the report has to be deployed and also the data source which needs to be assigned to the reports.
If you would like to explore this, download the code for the above samples (MyReports.Zip) from here. You need to have Visual Studio 2008 SP1 + WIX 3.5 to try it out.