【问题标题】:Docker Container with support for Crystal Reports支持 Crystal Reports 的 Docker 容器
【发布时间】:2021-11-03 20:08:50
【问题描述】:

我正在尝试创建一个 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 安装失败。我登录到我的容器并从 powershell 运行 msi 安装并生成了一个日志。它很长,但有两点很突出:

  1. 错误 1904。模块 C:\Program Files (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 结束:InstallFinalize。返回值3。

  2. 操作于 17:23:56 结束:安装。返回值 3。 MSI (s) (3C:54) [17:23:56:467]:产品:适用于 .NET Framework(64 位)的 SAP Crystal Reports 运行时引擎——安装操作失败。 MSI (s) (3C:54) [17:23:56:467]:Windows Installer 安装了产品。产品名称:用于 .NET Framework(64 位)的 SAP Crystal Reports 运行时引擎。产品版本:13.0.21.2533。产品语言:1033。制造商:SAP。安装成功或错误状态:1603.

第一个错误似乎没有停止安装。

欢迎提出任何解决此问题的建议以及创建图像的替代方法。

另外,只是为了确认。该网站加载并运行良好。我只是无法使用任何需要 Crystal Reports 依赖项的功能。

【问题讨论】:

    标签: docker crystal-reports


    【解决方案1】:

    使用完整的 Windows 2019 容器 mcr.microsoft.com\windows:1809 作为基础,安装程序可以正常工作,这表明它只是缺少操作系统组件。

    我没有记录“错误 1904”,但可能我在不同的主机操作系统上。

    安装程序日志显示自定义操作 SetASPDotNetDllPath 失败。

    如果你:

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

    这显示了对oledlg.dll 的依赖。 这是它唯一在 Server Core 中不可用的依赖项。

    它不是很好,但你可以从完整的 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
    

    【讨论】:

      【解决方案2】:

      我将添加一个额外的答案,而 Peters 答案非常适合安装 Crystal Reports,我在从 Crystal Report 导出为 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
      

      出于某种原因,Microsoft 已经从 1803 版到 1809 版中删除了很多字体。我只能假设减小操作系统映像的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-29
        • 2012-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        相关资源
        最近更新 更多