티스토리 뷰

목차

    반응형

    시작하기

    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

    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 /"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

    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

    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 마우스 휠 막기

    https://codingcoding.tistory.com/699

    반응형