Procedure about setup issue for troubleshooting

Visual Studio Product, .NET Framework Redistributable, Visual C++ Redistributable 설치 관련 Issue 는 다음과 같은 절차를 통해서 진행됩니다. 설치 Issue 에서 중요한 것은 Log를 수집하는 것입니다. 물론 Debugger를 Attach 해서 확인 하는 방법도 있을 수 있으나, Registry 권한이나 File Permission 같은 경우 Exception 처리가 되어 있지 않다면, Debugger로 확인 할 수 없을 수도 있기 때문입니다.
따라서, 기존에 작성한 문서를 참조하셔서, Log 를 남기거나 Log를 수집하는 것이 선행 조건이 됩니다. https://kikiwaka.egloos.com/1554229

그리고 또한, Repro 가 되는 여부에 따라 문제를 Isolation 하기가 쉬어집니다.
문제를 해결하기 위해서는 정확한 원인 파악이 우선 필요합니다. Msiexec 에서 발생한 문제인지, 배포된 Application 문제인지, Bug 인지, 또는 사용자 환경의 문제인지 확인을 해야 합니다. (저희는 이 과정을 Isolation 과정이라 부릅니다.)

정보 수집 절차

  1. Setup Log 를 확인합니다.
    Ex)
    Installing using command
    'D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\VSD1F0.tmp\DotNetFX35\dotNetFx35setup.exe' and parameters ' /lang:kor /passive /norestart'
    Process exited with code 1603
    Status of package '.NET Framework 3.5' after install is 'InstallFailed'
    Status of package 'Visual Studio Tools for the Office system 3.0 Runtime' after install is 'InstallNeeded'

    Setup Log 를 확인하여 보면, Error Code 또는 문제의 Description 을 확인 할 수 있습니다. 대게 문제가 발생하여 Setup이 중지되는 경우는 Procedure 마지막에 일어나므로, 마지막 Log 만을 확인하면 됩니다. 하지만 그렇지 않은 경우도 있으므로, 전체 Log를 확인해야 될 때도 있습니다. 이때 편리한 Tool 이 Windows SDK 에서 제공하는 WilogUtil.exe Tool입니다. 이 Tool을 사용하여 Log 를 분석하면, 문제가 될 만한 부분을 정리해서 보고 해줍니다.
    Msiexec Error Code 의 Description은 다음을 참조하시면 됩니다.
    https://msdn.microsoft.com/en-us/library/aa368542.aspx

  2. Event Viewer 를 확인합니다.
    Application 또는 System의 문제가 발생 시 사용자 컴퓨터의 정보를 수집하기 위해 MPSReports 를 사용하여 수집합니다.
    https://support.microsoft.com/kb/818742/ko
    간단히 문제가 발생한 Machine 의 System, Application Event 를 수집해도 됩니다.

문제 해결

Log 를 확인해서 문제를 Isolation 하여 KB(Knowledge Base) https://support.microsoft.com 에서 Known issue 인지 확인을 합니다. 만일 찾을 수 없거나 문제가 해결되지 않을 경우 Microsoft Support Engineer 의 도움을 받거나 일반적인 TS 과정을 수행합니다.

  1. Process Explorer 또는 Task manager를 사용하여 불필요한 Process를 종료합니다.
    Anti Virus Tool은 설치 과정에서 문제를 일으킬 소지가 큽니다. 따라서 Anti Virus Tool은 설치 과정에서 사용하지 않는 것이 좋습니다.
  2. %TEMP% Directory 의 내용을 제거합니다.
    요즘은 설치 File이 Network 을 통해 Update 또는 Installation 을 진행합니다. (File 용량이 점점 커지는 관계로) Download 되는 해당 Bin file 은 %TEMP% 에 저장됩니다. 문제는 Malware 또는 Anti Virus로 인한 Setup Issue 인 경우  이러한 Bin File 또한 문제가 될 수 있습니다.
  3. 기존의 설치된 Application 이 문제라면, 삭제 후 재설치를 진행하셔야 합니다.
    MSI Database의 문제가 생겨 상위 Version 의 Application 이 문제가 될 수 있습니다.
    예를 들어, .NET Framework 2.0 에 문제가 있다면, .NET Framework 3.5 설치에 문제가 발생할 수 있습니다.
    기본적으로 제어판의 프로그램 추가/제거 로 삭제를 하며, 삭제 후 Windows Installer Cleanup Tool 을 사용하여 해당 Application 이 삭제가 되어 있는지 확인 합니다. https://support.microsoft.com/kb/290301/ko 
    .NET Framework Issue 라면 Aaron Stebner 의 .NET Framework cleanup tool 이 유용할 수 있습니다.
  4. 해당 Application 의 상위 Version 이 있는지 확인 합니다.
    Update Version 을 설치 함으로써 기존에 알려진 Bug 들을 Fix 할 수 있기 때문입니다.
    예를 들어, .NET Framework 3.5 설치 Issue 에서 .NET Framework 3.5 SP1 을 설치함으로써 문제가 해결될 수 있습니다.
  5. Full Package 를 사용하여 Setup 을 진행합니다.
    Network 문제로 발생한 경우도 있기 때문에 기본적으로 Full Package 를 사용하여 Setup을 진행합니다. Full Package 인 경우 세부적인 문제로 접근할 수 있는 방법이 될 수 있습니다. 예를 들어, .NET Framework 3.0 설치 과정 중 WCF 설치에서 문제가 발생했을 때 가 있을 수 있습니다. https://www.microsoft.com/downloads 에서 Full Package 를 Download 받을 수 있습니다. (.NET Framework 또는 C++ Redistributable)
  6. 재설치 후에도 문제가 계속해서 발생한다면, Process Monitor(FileMon, RegMon이 포함) 를 사용하여 Registry 또는 File 관련된(접근 권한 확인) 정보들을 확인합니다.
    https://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
    Windows Debugger 를 사용하여 문제를 확인 할 수 있습니다.
    https://www.microsoft.com/whdc/devtools/debugging/default.mspx
    이에 대한 분석은 Microsoft Technical Support 를 통해 받으실 수 있습니다.

참고 : https://kikiwaka.egloos.com/1554229