Docker Community Forums

Share and learn in the Docker community.

Windows container build fails to install vcredist


(Mwalzer) #1

Expected behavior

I tried several methods of installing vcredist (2012/2013) from a FROM microsoft/dotnet-framework:3.5 and SHELL ["powershell"] type of Dockerfile:

RUN Get-VcList | Get-VcRedist -Path $env:TEMP -Architecture x64 -Release "2012","2013" ; \
    Get-VcList | Install-VcRedist -Path $env:TEMP -Release "2012","2013" -Architecture x64
RUN Invoke-WebRequest -OutFile “$env:TEMP\vc2013x64.exe” -UseBasicParsing
RUN Start-Process “$env:TEMP\vc2013x64.exe” ‘/features + /q’ -wait
RUN Remove-Item “$env:TEMP\vc2013x64.exe”
COPY vc.redist.x86.2013.exe vc.redist.x86.2013.exe
COPY vc.redist.x86.2012.exe vc.redist.x86.2012.exe
RUN C:\vc.redist.x86.2012.exe /quiet /install; \
    C:\vc.redist.x86.2013.exe /quiet /install 

Actual behavior

reg query HKLM /s /f MSVCP120.dll
shows me that nothing got installed.


When I however then run an interactive Powershell with the container and install the vcredist like above, the right dlls get registered. I can stop and commit the container as new image:tag.

Maybe someone can shed some light on why this is not working in the build…

(Artisticcheese) #2

Run your installation inside powershell which will wait on output of installation like below.

RUN powershell.exe -Command Start-Process c:\vcredist_x86.exe -ArgumentList '/quiet' | Wait-Process

(Mwalzer) #3

Hey, thanks for picking this up!
I thought I am already in powershell-mode with the

build instruction. It works! … but is also adding to my confusion :exploding_head:
Thanks in any case