如何在VS2022安装项目中集成Crystal Reports MSI包
由于64位Crystal Reports无可用合并模块,需将其MSI作为先决条件纳入安装项目,实现客户端自动部署,具体操作如下:
第一步:安装VS2022安装项目扩展
打开VS2022,在「扩展」→「管理扩展」中搜索并安装「Microsoft Visual Studio Installer Projects」,重启VS生效。第二步:添加安装项目到解决方案
右键你的VB.Net WinForms解决方案→「添加」→「新建项目」,搜索「Setup Project」创建安装项目,命名后确认。第三步:配置安装项目平台
右键安装项目→「属性」,将「Target Platform」设置为x64,与Crystal Reports MSI版本匹配。第四步:配置应用程序部署内容
在安装项目的「File System」视图中,右键「Application Folder」→「Add」→「Project Output」,选择WinForms项目的「Primary Output」和「Content Files」,确保应用文件被正确打包。第五步:添加Crystal Reports MSI作为先决条件
- 在解决方案目录下新建
Prerequisites\CrystalReports文件夹,将下载的CR13SP32MSI64_0-80007712.MSI放入其中。 - 右键安装项目→「属性」→点击「Prerequisites...」按钮。
- 勾选「Create setup program to install prerequisite components」,选择「Download prerequisites from the same location as my application」。
- 点击「Add...」,在「Create New Prerequisite」窗口中:
- 输入名称:比如「SAP Crystal Reports Runtime 13 SP32 (x64)」
- 「Component location」选择「Same as application」
- 点击「Add...」,选中放入的CR MSI文件
- 「Install command line」输入静默安装参数:
/qn(避免安装时弹出交互窗口) - 确认保存后,回到Prerequisites列表,勾选刚创建的先决条件。
- 在解决方案目录下新建
第六步:调整应用项目的CR引用设置
打开WinForms项目,找到所有Crystal Reports相关引用(如CrystalDecisions.CrystalReports.Engine),右键设置「Copy Local」为False,避免将运行时DLL打包,转而依赖MSI安装的系统级运行时。第七步:生成并测试安装包
右键安装项目→「Build」,生成完成后在输出目录找到setup.exe及对应MSI文件。运行setup.exe测试,安装程序会先自动静默安装Crystal Reports运行时,再部署WinForms应用,客户端无需手动操作。
内容的提问来源于stack exchange,提问作者KitKat

