간간히 만나는 이슈중에 Visual C++ 재배포 패키지의 설치 중 문제로 인한 중단 이슈가 간혹 있다. 여러가지 많은 케이스가 있겠지만, 간혹 머신의 상태가 정상적으로 윈도우 업데이트가 안되는 가운데, 재배포 패키지가 정상 설치되지 않는 경우도 적지 않은 경우가 있다. -ml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
먼저, VC++ 재배포패키지의 설치 중 문제가 발생한다면, 가장 먼저 확인하는 것이 설치 로그일 것이다. 일반적으로는 vcredist_x86.exe /l [Log File] 와 같이 실행하여 로그를 남길 수 있다. 로그를 살펴보면 어느 정도 인터넷을 뒤져서 원인을 확인하고 fix가 될 텐데, 그렇지 않은 애매한 경우, 즉, 윈도우 업데이트와 관련이 있는 경우라면 정확하게 정보를 얻기가 어려울 수 있다. 다음의 로그를 보자.
MSI (s) (BC:44) [시간정보]: 제품: Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729 -- 오류 1935'Microsoft.VC90.ATL,version="9.0.30729.1",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86",type="win32"' 어셈블리를 설치하는 동안 오류가 발생했습니다. 자세한 내용은 도움말 및 지원을 참조하십시오. HRESULT: 0x8007054F. 어셈블리 인터페이스: IAssemblyCacheItem, 함수: Commit, 구성 요소: {AE56AAF5-F3C0-3D4B-8859-A1E50A3E27BF}
해당 로그에서 오류 1935나 기타 정보는 도움이 별로 되지 않는 다. HRESULT값 0x8007054F 가 힌트인데, 만일, 해당 오류를 경험한다면, cbs.log 를 살펴보는 것을 권고 하고 싶다. (Cbs.log는 sfc.exe 즉, System File Checker 프로그램을 수행하였을 때 뭔가 시스템에 이상이 있다면 이후에 살펴보는 로그 정보로 유용했던 그것이다. 물론, VC++ 재배포 패키지의 설치 중 문제가 있을 때 간혹, sfc.exe /scannow 를 실행하여 문제가 해결되는 경우도 많이 있지만, 해당 문제 0x8007054F 관련 이슈에 대해서 정보를 좀 더 찾아 볼 수 있는 부분이 cbs.log 파일이다. 해당 파일은 C:\Windows\Logs\CBS 폴더에 존재한다.) 문제 시점의 cbs 로그를 살펴보면, 다음과 같은 관련 정보를 찾아 볼 수 있을 지 모른다.
[시간정보] Error CSI 00000320 (F) STATUS_RM_NOT_ACTIVE #50844# from Windows::Rtl::SystemImplementation::DirectRegistryProvider::SysOpenKey(flg = (AllowAccessDenied), key = {provider=NULL, handle=0}, da = (KEY_ALL_ACCESS|KEY_WOW64_64KEY), oa = @0x114e5d4->OBJECT_ATTRIBUTES {s:24; rd:NULL; on:[51]"\Registry\Machine\COMPONENTS\DerivedData\Components"; a:(OBJ_CASE_INSENSITIVE)}, disp = Unmapped disposition: 18146716 (0x0114e59c))[gle=0xd0190005]
이 경우가 맞다면 다음과 같은 작업을 통해서 문제가 해결되는 지 살펴보는 것이 좋을 듯 하다. 방법은 Windows File System Utility라는 fsutil.exe 를 이용해서 다음과 같은 명령을 수행하는 것이다.
fsutil resource setautoreset true DriveLetter:drive
예를 들어, C 드라이브에 운영체제가 인스톨되어 있다면, 관리자 권한으로 “fsutil resource setautoreset true c:\” 와 같이 실행하는 것이며, 이는 Windows File system Transaction log 를 reset 하는 명령이라고 보면 된다. 그리고, 해당 이슈는 transaction log corruption이 원인이라고 보면 될 듯 하다.
덧글