2011. 1. 28. 18:45

Install msxml4 Vista by Internet Explorer

msxml4.cab 은 Vista 이상의 OS에서 정상 적으로 설치되지 않는다. MS의 공식적인 자료는 없으나 몇몇 blog 에서 해당 현상의 글을 보았다.
실제 테스트를 해보면 IE가 권리자 권한 인경우 정상동작하나 그렇지 않은 경우 msxml4.dll 이 system32로 복사가 되지 않았다.

msxml6 부터는 cab 파일을 제공하지 않았고,  해당 파일을 cab으로 묶어 테스트 해 보았다. msxml6도 정상 동작하지 않는다.

이 부분을 해결하기 위해서  다른 방법을 사용했다. 

1. IE의 object tag에 EXE를 연결

<body>
<object id="MSXML4"
classid="clsid:88d969c0-f192-11d4-a65f-0040963251e5"
codebase="./msxml4.exe"
STYLE="display: none">
</object>
</body>

위 처럼 작성하면 해당 CLSID 가 존재하지 않는 경우 codebase의 exe를 다운받아 실행한다.

2. NSIS 로 실행파일 제작

RequestExecutionLevel admin
  
  ; Put file there
  File msxml.msi
 
   ExecWait 'msiexec /i $INSTDIR\msxml.msi /passive'   // 자동으로 진행되도록 

   Delete $INSTDIR\msxml.msi
  
SectionEnd ; end the section

NSIS 로 제작한 이유는 admin 권한 획득을 위한 부분 과  msi 를 passive 모드로 실행하기 위함이다.