Docker - Контейнер Windows - Установите DotNet Framework 472 - PullRequest
1 голос
/ 26 мая 2019

Я пытаюсь настроить образ Windows Docker с помощью .net framework 4.7.2.По другим причинам я начинаю с microsoft / windowsservercore

То, что я до сих пор пробовал - у меня установлен образ choco, поэтому мое первоначальное решение заключалось в использовании choco install

choco install dotnet4.7.2 --allow-empty-checksums -y -v --trace -d

Что я получаю, это 0x80004005

C:\users\ContainerAdministrator\AppData\Local\Temp\chocolatey> more .\dd_NDP472-KB4054530-x86-x64-AllOS-ENU_decompression_log.txt
??[5/25/2019, 22:26:33] === Logging started: 2019/05/25 22:26:33 ===
[5/25/2019, 22:26:33] Executable: C:\Users\ContainerAdministrator\AppData\Local\Temp\chocolatey\dotnetfx\4.7.2.20180712\NDP472-KB4054530-x86-x64-AllOS-ENU.exe v4.7.3081.0
[5/25/2019, 22:26:33] --- logging level: standard ---
[5/25/2019, 22:26:33] Successfully bound to the ClusApi.dll
[5/25/2019, 22:26:33] Error 0x800706d9: Failed to open the current cluster
[5/25/2019, 22:26:33] Cluster drive map: ''
[5/25/2019, 22:26:33] Considering drive: 'C:\'...
[5/25/2019, 22:26:33] Drive 'C:\' has been selected as the largest fixed drive
[5/25/2019, 22:26:33] Directory 'C:\b659e2a87b51ccf0f10d6292d1a4c2\' has been selected for file extraction
[5/25/2019, 22:26:33] Extracting files to: C:\b659e2a87b51ccf0f10d6292d1a4c2\
[5/25/2019, 22:26:33] Error 0x80004005: Failed to extract all files out of box container #0.
[5/25/2019, 22:26:33] Error 0x80004005: Failed to extract

https://blog.nowmicro.com/2015/02/23/deploying-net-framework-4-5-2-configmgr-application/

Следуя некоторым идеям из ссылок выше, я это сделал:

  1. Я скачал вручную NDP472-KB4054530-x86-x64-AllOS-ENU.exe
  2. Я извлек его локально, нахост, из командной строки (с / извлекать).В основном у меня есть локальный каталог со всем содержимым NDP472 (включая Setup.exe)
  3. Я запускаю контейнер, используя том

Docker run --name cw10 -v C: \ MyNDP472: C: \ tmp -d client-windows10

Я присоединяюсь к контейнеру с помощью cmd.Из C: \ tmp (который указывает на C: \ MyNDP472 с хоста) я запускаю из командной строки.

Setup.exe / q / norestart / ChainingPackage "ADMINDEPLOYMENT" / x86/ x64 / redist / log "C: \ tmp \ reportdotnet.log"

Результат Окончательный результат: установка успешно завершена с кодом успеха: (0x80070BC2), «Запрошенная операция выполнена успешно. Изменения не вступят в силу до перезагрузки системы .

enter image description here

Я проверяю реестры (на этот раз с Powershell)

Get-ChildItem 'HKLM: \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP' -recurse | Get-ItemProperty -name Version, Release -EA 0 | Где {$ _. PSChildName -match '^ (?! S) \ p {L}'} | Выбрать PSChildName, Версия, Выпуск

Я все еще получаю предыдущую версию .net framework (Full 4.6.01586 394802) - ту, которая поставляется с базовым образом.Я перезагружаю контейнер с перезапуском докера.Я получаю точно так же.Без изменений.

Моя конечная цель: я хочу создать решение C # sln с целью 4.7.2.

У меня нет идей.Есть мысли?

Спасибо

1 Ответ

1 голос
/ 27 мая 2019

Вы можете использовать тот же dockerfile, который Microsoft использует для создания своих изображений dotnetframework здесь для SDK (https://github.com/microsoft/dotnet-framework-docker/blob/master/4.7.2/sdk/windowsservercore-ltsc2019/Dockerfile) или во время выполнения (https://github.com/microsoft/dotnet-framework-docker/blob/master/4.7.2/runtime/windowsservercore-ltsc2019/Dockerfile)

)
...