本人用的方法是:单独得制作一个部署Reporting Services的exe文件,然后再安装程序中调用这个.exe文件即可。
Reporting Services部署:
private void Form1_Load(object sender, System.EventArgs e)
{
//服务器名称
string strServerName = System.Environment.MachineName;
//数据库相关信息,可以在安装的时候存在某个文件中或注册表中,然后在此来使用。(略)
string[] strServer = null;
//动态的创建.rss脚本文件(由于在文件中需要相关的数据库信息,这些信息是用户在安装时动态输入的,因此在这里需要动态的创建其脚本文件。脚本文件的内容在上面已经显示了,具体的方法就不在此列出)
CreateRss(strServerName,strServer[0],strServer[1],strPwd);
//报表部署
ProcessStartInfo startInfo = new ProcessStartInfo("rs.exe");
startInfo.WindowStyle = ProcessWindowStyle.Maximized;
string strCmd = " -i c://inetpub//wwwroot//" + strServer[0](安装时的虚拟目录) + "//ReportSystem//PublishCHDReports.rss"
+" -s http://" + strServerName(服务器名称) + "/reportserver"
+" -v parentFolder=ReportSystem" ;
startInfo.Arguments = strCmd;
Process.Start(startInfo);
}
/// <summary>
/// 创建脚本文件
/// </summary>
/// <param name="strServerName">服务器名称</param>
/// <param name="strPathName">虚拟目录</param>
/// <param name="struid">数据库所在服务器名称</param>
/// <param name="strPwd">数据库所在服务器密码</param>
private void CreateRss(string strServerName,string strPathName,string struid,string strPwd)
{
//(略)………………
}
在安装程序installer中调用:
/// <summary>
/// 安装报表
/// </summary>
/// <param name="strServerName">服务器名称</param>
/// <param name="strPath">虚拟目录</param>
private void RunExe(string strPath)
{
ProcessStartInfo startInfo = new ProcessStartInfo("c://inetpub//wwwroot//" + strPath + "//ReportSystem//ReportSetup.exe");
Process.Start(startInfo);
}
注:有关RS.exe的信息请查看 《如何利用RS.exe部署Reporting Services》
参阅:ms-help://MS.RSBOL80.2052/rsuiref/htm/cpu_rs_v1_5fxe.htm