个人版机房收费系统做完之后,要进行异地发布,本来想用VB.NET自带的工具进行打包,却不如我愿,怎么弄也弄不好,只好重新找个工具,就找到Advanced Installer了,现在就说说我用这个软件打包时需要添加的几个.msm文件及出现的一些错误。
我的个人版机房收费系统包括两个报表,第一个是水晶报表(Grid++Report)和VB.NET自带的Reportview,我用的版本是Advanced Installer 9.8的汉化版。
需要添加的.msm文件:
当你在将你需要打包的文件添加进去的时候,不要忘记在左边选择合并模块,添加你需要的.msm文件,即在这里添加:
如果没有crystal reports redist要先下载,然后将下载的crystal reports redist放到C:\Program Files\Common Files\Merge Modules,并添加CrystalReportsRedist2005_x86或CrystalReportsRedist2005_x64(就看你的机子是多少位的了)
同时添加的文件还有C:\Program Files\Common Files\Merge Modules对应你电脑的机型的所有MSM文件。
错误一:
安装成功后,系统找不到水晶报表的文件,经过检查弹出的错误提示,发现是水晶报表的路径不对。设置路径我们要用水晶报表的当前路径,同时,把水晶报表.grf文件放在当前打包文件下的UI\bin\Debug下,将报表也打进去。
如何设置报表的当前路径呢?
在VB中用的是App.Path,在VB.NET用的是Application.StartupPath,示例:
Imports Microsoft.VisualBasic.Compatibility '导入获取文件路径的类库
Public Shared GridppReport As New grproLib.GridppReport
Public Shared Function GetSampleRootPath() As String GetSampleRootPath = Application.StartupPath() '获取报表路径 End Function
Private Sub frmDayCheck_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load GridppReport.LoadFromFile(GetSampleRootPath() + "\日报表.grf") '加载模板报表 End Sub
错误二:
在打包安装完之后,VB.NET自带的报表却不能显示,出现错误:未能加载文件或程序集“Microsoft.ReportViewer.WebForms,Version=9.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。
解决方法:
Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.WebForms.dll
Microsoft.ReportViewer.WinForms.dll
这三个文件存在位置:
如果你的VS安装在C盘,那么就在C:\Program Files\Microsoft Visual Studio 9.0\ReportViewer