Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to install Visual C++ 2015 Redistributable to this image? #15

Closed
andreymir opened this issue Apr 16, 2017 · 23 comments
Closed

How to install Visual C++ 2015 Redistributable to this image? #15

andreymir opened this issue Apr 16, 2017 · 23 comments

Comments

@andreymir
Copy link

I have an ASP.NET application that requires native libraries to run. How could I install Microsoft Visual C++ 2015 Redistributable into this image?

@shirhatti
Copy link
Contributor

shirhatti commented Apr 17, 2017

This should do the trick See updated suggestion.

FROM microsoft/dotnet-framework:4.6.2

ADD https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe /vc_redist.x64.exe
RUN C:\vc_redist.x64.exe /quiet /install

# Rest of your Dockerfile

@andreymir
Copy link
Author

Thanks!

@nkamatam
Copy link

RUN C:\vc_redist.x64.exe /quiet /install - does not work for me. I ran it from the cmd prompt from within the container, I just get the prompt back immediately without any work/install getting done.

@mlapaglia
Copy link

@nkamatam you'll need to put that command into your dockerfile, not run manually from your command line.

@VikasAgarwal1984
Copy link

@mlapaglia It work for me when i put in docker file, but it does not work when i try to install it from container. Is there any reason to it? As i was trying to run helloworld exe but it is still not printing to console after above installation as well. I verified in registry also.

@S93rastogi
Copy link

S93rastogi commented May 23, 2019

Is the installation of VC runtime does not work with "mcr.microsoft.com/dotnet/core/aspnet:2.1" base image which is basically of ASP.NET CORE. If I try the dotnet framework base image VC runtime gets installed. Is the reason on mentioned here
https://social.msdn.microsoft.com/Forums/aspnet/en-US/67425dcd-6812-4b52-81a8-f85c0e4e7d59/error-3221225781-when-running-existing-applications-in-docker?forum=windowscontainers

@Escoto
Copy link

Escoto commented May 9, 2020

This should do the trick

FROM microsoft/dotnet-framework:4.6.2

ADD https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe /vc_redist.x64.exe
RUN C:\vc_redist.x64.exe /quiet /install

# Rest of your Dockerfile

Hi,
I am having issues with this solution, I am getting this error, can i get some help?
container eec... encountered an error during hcsshim::System::CreateProcess: failure in a Windows system call: The user name or password is incorrect. (0x52e)

@MichaelSimons
Copy link
Member

@Escoto, That error seems orthogonal to your Dockerfile and is a general Windows Docker issue. The username or password part is interesting. I would suggest posting this on the windows containers forum.

@MichaelSimons
Copy link
Member

I have a refined suggestion that follows the Dockerfile best practices. The previous suggestion is not optimal from a layer perspective.

# escape=`

#  Change the base image as appropriate for your scenario.
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8

USER ContainerAdministrator
RUN curl -fSLo vc_redist.x64.exe https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe `
    && start /w vc_redist.x64.exe /install /quiet /norestart `
    && del vc_redist.x64.exe

@BranigansLaw
Copy link

I have a refined suggestion that follows the Dockerfile best practices. The previous suggestion is not optimal from a layer perspective.

# escape=`

#  Change the base image as appropriate for your scenario.
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8

USER ContainerAdministrator
RUN curl -fSLo vc_redist.x64.exe https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe `
    && start /w vc_redist.x64.exe /install /quiet /norestart `
    && del vc_redist.x64.exe

I'm fairly new to Dockerfiles, but the following gave me an error:

The command 'powershell -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; curl -fSLo vc_redist.x86.exe https://aka.ms/vs/16/release/vc_redist.x86.exe     && start /w vc_redist.x86.exe /install /quiet /norestart     && del vc_redist.x86.exe' returned a non-zero code: 1

I switched it out for @MichaelSimons's solution and that works much better.

@wilbit
Copy link

wilbit commented Sep 14, 2021

I have a refined suggestion that follows the Dockerfile best practices. The previous suggestion is not optimal from a layer perspective.

# escape=`

#  Change the base image as appropriate for your scenario.
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8

USER ContainerAdministrator
RUN curl -fSLo vc_redist.x64.exe https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe `
    && start /w vc_redist.x64.exe /install /quiet /norestart `
    && del vc_redist.x64.exe

Does not work to me. I get Access Denied error on start /w vc_redist.x64.exe /install /quiet /norestart command
The first suggestion does the trick!

@mmikkola
Copy link

mmikkola commented Mar 16, 2022

I'm using the following:

# escape=`
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; `
	Invoke-WebRequest "https://aka.ms/vs/17/release/vc_redist.x64.exe" -OutFile "vc_redist.x64.exe"; `
	Start-Process -filepath C:\vc_redist.x64.exe -ArgumentList "/install", "/passive", "/norestart" -Passthru | Wait-Process; `
	Remove-Item -Force vc_redist.x64.exe;

It works for me and should be more in line with the Best practices.

@akozyreva
Copy link

Hi everyone!
Thanks a lot for your help! Bellow is my part which works great!

# Visual C++ 2015 Multithreaded Runtime DLLs (vcruntime140.dll)
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
	Invoke-WebRequest "https://aka.ms/vs/17/release/vc_redist.x64.exe" -OutFile "vc_redist.x64.exe"; \
	Start-Process -filepath C:\vc_redist.x64.exe -ArgumentList "/install", "/passive", "/norestart" -Passthru | Wait-Process; \
	Remove-Item -Force vc_redist.x64.exe;

# Visual C++ 2013 Multithreaded Runtime DLLs (msvcp120.dll and msvcr120.dll)
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
	Invoke-WebRequest "https://aka.ms/highdpimfc2013x64enu" -OutFile "vc_redist.x64.exe"; \
	Start-Process -filepath C:\vc_redist.x64.exe -ArgumentList "/install", "/passive", "/norestart" -Passthru | Wait-Process; \
	Remove-Item -Force vc_redist.x64.exe;	

@abaghum
Copy link

abaghum commented Mar 23, 2023

None of these work

@nkamatam
Copy link

nkamatam commented Mar 23, 2023 via email

@vinothprasathCS
Copy link

vinothprasathCS commented May 12, 2023

Hi All, I am using Podman instead of Docker.. Can i use C++ Redistributable in podman container since its linux based..?

@mthalman
Copy link
Member

Hi All, I am using Podman instead of Docker.. Can i use C++ Redistributable in podman container since its linux based..?

What is your scenario for using this in the context of Linux?

@engarde
Copy link

engarde commented May 23, 2023

Podman will support your use of wsl(2) based linux images on a Windows host but not a lot of call for visual c runtime in that case.

@Jens-G
Copy link

Jens-G commented Jun 22, 2023

This does not work if the image is Nano Server 64 based, because the installer is a 32 bit app and immediately terminates with exit code 3221225781 on that system.

@SCLDGit
Copy link

SCLDGit commented Dec 10, 2023

What would need to be done to the dotnet/sdk or dotnet/aspnet base images to get this working correctly? Our application leverages sqlcipher, which won't run without the redist. I can get it running on windows:ltsc2019, but the image size is enormous.

@MichaelSimons
Copy link
Member

@SCLDGit - Have you tried this suggestion?

@SCLDGit
Copy link

SCLDGit commented Dec 12, 2023

@SCLDGit - Have you tried this suggestion?

Yep. After giving it some more thought I'm thinking it's because the dotnet sdk and aspnet images are meant to run cross platform on both wsl and hyper-v containers, which vcredist is obviously a Windows only package.

@MichaelSimons
Copy link
Member

@SCLDGit - Have you tried this suggestion?

Yep. After giving it some more thought I'm thinking it's because the dotnet sdk and aspnet images are meant to run cross platform on both wsl and hyper-v containers, which vcredist is obviously a Windows only package.

I missed that you were asking about the .NET (Core) images and the not .NET Framework images. You should be able to install redist on the .NET Windows Server Core images. As you noted it won't work with the Linux images and it also won't work on the Nano Server images.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests