Docker Container с поддержкой Crystal Reports - PullRequest
2 голосов
/ 11 апреля 2019

Я пытаюсь создать образ Docker для размещения моего приложения asp.net MVC, которое зависит от Crystal Reports.

Мой файл docker выглядит следующим образом

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.Я вошел в свой контейнер и запустил установку msi из powershell и создал журнал.Это очень долго, но вот две вещи, которые выделяются:

  1. Ошибка 1904. Модуль C: \ Program Files (x86) \ SAP BusinessObjects \ Crystal Reports для .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 (3C: 54) [17: 23: 56: 467]: Продукт: Среда выполнения SAP Crystal Reports для .NET Framework (64-разрядная версия) - операция установки не выполнена.MSI (3C: 54) [17: 23: 56: 467]: установщик Windows установил продукт.Название продукта: Среда выполнения SAP Crystal Reports для .NET Framework (64-разрядная версия).Версия продукта: 13.0.21.2533.Язык продукта: 1033. Производитель: SAP.Успешная установка или статус ошибки: 1603.

Первая ошибка, по-видимому, не останавливает установку.

Приветствуются любые предложения по устранению неполадок, а также альтернативные способы создания.изображение.

Кроме того, просто для подтверждения.Сайт загружается и работает нормально.Я просто не могу использовать какие-либо функции, требующие зависимости Crystal Reports.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Используя полный контейнер 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
0 голосов
/ 10 мая 2019

Я собираюсь добавить дополнительный ответ, пока Peters ответ отлично работал для установки Crystal Reports, у меня возникла дополнительная проблема с отсутствующими шрифтами при экспорте в PDF из Crystal Report.

Это то, что я закончил.Ключевым моментом является изменение имени тега изображения на более старую версию.

#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. Я могу только предположить, что уменьшить размер образа ОС.

...