티스토리 뷰
목차
시작하기
WinForms에서 Chromium 브라우저 구성 요소(CefSharp)를 사용하려면 필요한 정보입니다. CefSharp을 사용하려면 Visual Studio C++ 2015 redistributables(재배포 가능 패키지) 이상이 필요합니다.
CefSharp을 사용하여 응용 프로그램을 배포할 때 필요한 오프라인용 Microsoft Visual C++ 설치 배치 작성 내용을 소개합니다.
설치 완료 확인
.NET 응용 프로그램은 AnyCPU로 설정하면, 32bit(x86) 또는 64bit(x64) 여부도 판단해야 합니다.
- Visual Studio C++ 2015 Redistributable (x86)
- Visual Studio C++ 2015 Redistributable (x64)
설치 여부를 판단하려면 레지스트리 제거 정보를 확인해야 합니다.
CPU |
레지스트리 제거 정보 |
32bit |
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall |
64bit |
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall |
vc_redist 폴더 아래, Visual Studio C++ 2015 redistributables(재배포 가능 패키지)가 존재합니다.
- vc_redist.x86.exe
- vc_redist.x64.exe
주의
2012에서 Redistributable (x99) 형식으로 통일되어 있습니다만, 그 이전 버전은 통일되지 않았습니다.
이번에는 2015 이상으로 배포되었음을 예로 듭니다. 그래서 Redistributable (x99) 형식으로 추출합니다.
또한, 2015 이상은 버전 번호 대신 연도(2015)로 판단했었습니다. 하지만 2015과 2017은 14로 똑같으니 주의하세요.
CPU |
레지스트리 제거 정보 |
32bit |
Visual Studio C++ 2005 Redistributable |
64bit |
Visual Studio C++ 2005 Redistributable (x64) |
32bit |
Visual Studio C++ 2008 Redistributable - x86 9.0.xxxxx |
64bit |
Visual Studio C++ 2008 Redistributable - x64 9.0.xxxxx |
32bit |
Visual Studio C++ 2010 x86 Redistributable - 10.0.xxxxx |
64bit |
Visual Studio C++ 2010 x64 Redistributable - 10.0.xxxxx |
32bit |
Visual Studio C++ 2012 Redistributable (x86) - 11.0.xxxxx |
64bit |
Visual Studio C++ 2012 Redistributable (x64) - 11.0.xxxxx |
32bit |
Visual Studio C++ 2013 Redistributable (x86) - 12.0.xxxxx |
64bit |
Visual Studio C++ 2013 Redistributable (x64) - 12.0.xxxxx |
32bit |
Visual Studio C++ 2015 Redistributable (x86) - 14.0.xxxxx |
64bit |
Visual Studio C++ 2015 Redistributable (x64) - 14.0.xxxxx |
32bit |
Visual Studio C++ 2017 Redistributable (x86) - 14.16.xxxxx |
64bit |
Visual Studio C++ 2017 Redistributable (x64) - 14.16.xxxxx |
배치 버전
배치 파일의 레지스트리 정보 검색(REG QUERY 명령) 기능은 느립니다. 제 경우 1분 이상 걸립니다.
Install.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | @echo off cd /d %~dp0 set vcInstall=0 set vcVersion=2015 setlocal enabledelayedexpansion echo Microsoft Visual C++ 재배포 가능 패키지 2015 설치 if "%PROCESSOR_ARCHITECTURE%" equ "x86" ( call :DetectVC x86 HKEY_LOCAL_MACHINE\Software if !vcInstall!==0 start /wait vc_redist\vc_redist.x86.exe ) if "%PROCESSOR_ARCHITECTURE%" equ "AMD64" ( call :DetectVC x64 HKEY_LOCAL_MACHINE\Software\Wow6432Node if !vcInstall!==0 start /wait vc_redist\vc_redist.x64.exe ) endlocal exit /b REM ------------------------------------------------------- REM Microsoft Visual C++ 재배포 가능 패키지 2015 이상 검출 REM ------------------------------------------------------- :DetectVC set "vcfindname=Redistributable (%1)" for /f "TOKENS=1,2,*" %%A in ('REG QUERY "%2\Microsoft\Windows\CurrentVersion\Uninstall" /s ^| find "DisplayName"') do ( echo %%C | find "%vcfindname%" >NUL if not ERRORLEVEL 1 ( set str=%%C set vcver=!str:~21,4! set vcver=!vcver:ab=0! if !vcver! geq %vcVersion% ( set vcInstall=1 ) ) ) if %vcInstall%==1 ( echo. echo Microsoft Visual C++ 재배포 가능 패키지 2015 이상 설치됨 ) else ( echo. echo Microsoft Visual C++ 재배포 가능 패키지 2015 이상 설치되지 ) exit /b | cs |
VBScript 버전
VBScript를 실행하면 몇 초 내에 설치 판정을 확인할 수 있습니다.
vc_redist 폴더 아래에 CheckVCRedist.vbs 파일을 생성합니다.
CheckVCRedist.vbs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Option Explicit 'On Error Resume Next Const HKEY_LOCAL_MACHINE = &H80000002 Const SubKeyName = "Microsoft\Windows\CurrentVersion\Uninstall\" Const VCVersion = 2015 Dim WshShell, arch, reg, firstkey, keys, key, ret, display_name Set WshShell = WScript.CreateObject("WScript.Shell") arch = WshShell.Environment("Process").Item("PROCESSOR_ARCHITECTURE") If arch = "x86" Then firstkey = "SOFTWARE\" Else firstkey = "SOFTWARE\Wow6432Node\" arch = "x64" End If Set reg = CreateObject("WbemScripting.SWbemLocator").ConnectServer(, "root\default").Get("StdRegProv") reg.EnumKey HKEY_LOCAL_MACHINE, firstkey & SubKeyName, keys For Each key In keys display_name = "" ret = reg.GetStringValue(HKEY_LOCAL_MACHINE, firstkey & SubKeyName & key, "DisplayName", display_name) If Instr(display_name, "Redistributable (" & arch & ")") > 0 Then If CInt(Mid(display_name, 22, 4)) >= VCVersion Then Wscript.Quit(1) End If End If Next Wscript.Quit(0) | cs |
검색 내용을 "cscript //nologo vc_redist\CheckVCRedist.vbs"로 변경합니다.
Install.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | @echo off cd /d %~dp0 set vcInstall=0 set vcVersion=2015 echo Microsoft Visual C++ 재배포 가능 패키지 2015 설치 call :DetectVC if "%PROCESSOR_ARCHITECTURE%" equ "x86" ( if %vcInstall%==0 start /wait vc_redist\vc_redist.x86.exe ) if "%PROCESSOR_ARCHITECTURE%" equ "AMD64" ( if %vcInstall%==0 start /wait vc_redist\vc_redist.x64.exe ) exit /b REM ------------------------------------------------------- REM Microsoft Visual C++ 재배포 가능 패키지 2015 이상 검출 REM ------------------------------------------------------- :DetectVC cscript //nologo vc_redist\CheckVCRedist.vbs set vcInstall=%ERRORLEVEL% if %vcInstall%==1 ( echo. echo Microsoft Visual C++ 재배포 가능 패키지 2015 이상 설치됨 ) else ( echo. echo Microsoft Visual C++ 재배포 가능 패키지 2015 이상 설치되지 ) exit /b | cs |
마지막으로
REG QUERY 명령이 이렇게 느린 줄 알았는데 실제로 돌려보니 진짜로 느렸습니다. 처음 한 번은 해볼만한데, 여러번 돌려봐야 한다면, VBScript 버전이 빠르고 좋습니다.
참고
VisualStudio2012, XP 배포 설정
https://codingcoding.tistory.com/451
재배포패키지 다운로드
https://codingcoding.tistory.com/502
Microsoft Visual C++ 삭제
https://codingcoding.tistory.com/1095
비주얼 스튜디오 2010 마우스 휠 막기