2007/12/04

Vbscript - MsiExec.exe 로 소프트웨어 Uninstall

Windows 에서의 소프트웨어 설치 방법에는 크게 2가지가 있습니다. 인스톨쉴드(http://www.installshield.com/)와 같은 패키지 배포툴 또는 Microsoft 의 MSI Installer 입니다.

인스톨쉴드의 경우 자체적인 소프트웨어 설치 및 제거 방법 경로를 제공하고 있습니다.

Microsoft Windows Installer 는 Windows 에 설치되는 소프트웨어에 대한 별도의 데이터베이스를 가지고 있으며 효율적인 소프트웨에 관리 향상을 위해서 종종 버젼이 업데이트 되기도 합니다.


Windows Installer 배포
http://msdn2.microsoft.com/ko-kr/library/2kt85ked(vs.80).aspx

Windows Installer 를 이용해서 소프트웨어 배포를 하는 경우에는 해당 소프트웨어만의 고유 ClassID 를 지정하게 되어 있으나,

대부분 Visual Studio 같은 RAD 툴을 이용하면 소프트웨어 프로젝트생성시 자동으로 키가 생성되거나 명령어를 이용해서 고유키를 따로 만들수 있습니다.

Windows Installer 설치 트랜잭션 로그 이벤트 종류 지정
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=345


생각보다는 매우 간단한 스크립입니다.

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "msiexec /x
{082BDF7B-4810-4599-BF0D-E3AC44EC8524} /q",1,true


위 스크립트에서, 인자값으로 uninstall 하고자 하는 소프트웨어의 ClassID 를 지정하게 되어 있는데요,. 물론 레지스트리의 HKEY_CLASSES_ROOT 에서 검색해 보아도 됩니다만, 제어판의 소프트웨어 설치목록을 출력하는데 이용하는 레지스트리 경로를 참고 하는 것이 더 좋습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{082BDF7B-4810-4599-BF0D-E3AC44EC8524}

위의 경우는 "Microsoft ASP.NET 2.0 AJAX Extensions 1.0" 의 ID 값입니다. 그리고 키값중에 UninstallString 를 확인해 보면 제거 명령어를 제공합니다.

MsiExec.exe /X{082BDF7B-4810-4599-BF0D-E3AC44EC8524}

실제 제어판에서 소프트웨어 제거를 하면, 위 명령어가 실행이 된다는 얘기입니다.

댓글 없음:

댓글 쓰기

가장 많이 본 글