支持Crystal Reports的Docker容器

lndjwyie  于 2022-12-26  发布在  Docker
关注(0)|答案(2)|浏览(293)

我正在尝试创建一个Docker映像来托管我的asp.net MVC应用程序,该应用程序依赖于Crystal Reports。
我的dockerfile如下所示

FROM microsoft/iis

COPY ./bin/Release/Publish/ c:\\inetpub\\wwwroot

RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]  
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]

#install Crystal reports runtime
COPY Resources/Files/CRRuntime_64bit_13_0_21.msi . 
RUN powershell.exe -Command Start-Process CRRuntime_64bit_13_0_21.msi -ArgumentList '/quiet' -Wait

安装CRRuntime_64bit_13_0_21.msi失败。我登录到我的container,从powershell运行msi安装,并生成了一个日志。它很长,但有两件事很突出:
1.错误1904。模块C:\程序文件(x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win64_x64\pageobjectmodel.dll无法注册。HRESULT-2147024770。请与您的支持人员联系。操作结束时间:17:20:50:安装完成。返回值3。
1.行动结束时间17:23:56:安装。返回值3。MSI(3C:54)[17:23:56:467]:产品:用于.NET Framework(64位)的SAP Crystal Reports运行时引擎--安装操作失败。MSI(3C:54)[17:23:56:467]:Windows安装程序已安装该产品。产品名称:适用于.NET Framework(64位)的SAP Crystal Reports运行时引擎。产品版本:13.0.21.2533.产品语言:1033.制造商:SAP。安装成功或错误状态:1603.
第一个错误似乎没有停止安装。
我们欢迎您提出任何解决此问题的建议,以及创建映像的替代方法。
此外,只是确认。网站加载和运行良好。我只是不能使用任何功能,需要水晶报表依赖。

hsgswve4

hsgswve41#

使用完整的Windows 2019容器mcr.microsoft.com\windows:1809作为基础,安装程序可以工作,这暗示了它只是缺少操作系统组件。
我没有记录"错误1904",但可能我在不同的主机操作系统上。
安装程序日志显示自定义操作SetASPDotNetDllPath失败。
如果您:

  • 打开MSI安装程序(例如,在Orca中)
  • 找到并解压缩操作二进制文件,另存为dll
  • 检查其导入(例如,使用dumpbin

这显示了对oledlg.dll的依赖关系。这是其唯一的依赖关系,在服务器核心中不可用。
它不是很好,但你可以从完整的Windows容器复制这个版本来修复它:

FROM mcr.microsoft.com/windows:1809 as dll_source
FROM microsoft/iis

#hack in oledlg dll!!
COPY --from=dll_source /windows/system32/oledlg.dll /windows/system32/oledlg.dll 
COPY --from=dll_source /windows/syswow64/oledlg.dll /windows/syswow64/oledlg.dll 

RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]  
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]

WORKDIR c:/temp
COPY CRRuntime_64bit_13_0_21.msi . 
RUN powershell.exe -Command Start-Process c:\temp\CRRuntime_64bit_13_0_21.msi -ArgumentList '/l*v c:\temp\install.log' -Wait
gmxoilav

gmxoilav2#

我将添加一个额外的答案,虽然Peters答案工作完美的安装水晶报告,我有一个额外的问题,丢失字体时,从水晶报告导出到PDF。
这就是我最终得到的结果。关键是图像标签名称的变化是一个旧版本。

#windowsservercore-1803 required as it has the fonts we need in the report in order to export to PDF
FROM microsoft/iis:windowsservercore-1803

#install features we need
RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]

#hack in oledlg dll so that Crystal Runtime will install
COPY Resources/Files/64/oledlg.dll /windows/syswow64/oledlg.dll
COPY Resources/Files/32/oledlg.dll /windows/system32/oledlg.dll

#copy in Crystal MSI and install. Note it's 64bit version
WORKDIR c:/temp
COPY Resources/Files/CRRuntime_64bit_13_0_21.msi .
RUN powershell.exe -Command Start-Process c:\temp\CRRuntime_64bit_13_0_21.msi -ArgumentList '/quiet /l*v c:\temp\install64.log' -Wait

#Add website files
COPY ./bin/Release/Publish/ /inetpub/wwwroot

由于某种原因,微软从1803版到1809版减少了很多字体。我只能假设减少操作系统映像大小。

相关问题