간단한 비베 스크립트로 기존에 서버형 운영체제에서
설치 불가능했던 프로그램을 설치할수 있도록 해봅시다!
메모장을 열어서 다음의 내용을 붙인다음 확장자를 .vbs로 저장합니다.
Option Explicit
Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1
Dim argNum, argCount:argCount = Wscript.Arguments.Count
If (argCount < 1) Then
Wscript.Echo "Please supply the name of the msi file to be modified."
Wscript.Quit 1
End If
' Scan arguments for valid SQL keyword and to determine if any update operations
Dim openMode : openMode = msiOpenDatabaseModeReadOnly
openMode = msiOpenDatabaseModeTransact
' Connect to Windows installer object
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
' Open database
Dim databasePath:databasePath = Wscript.Arguments(0)
Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError
' Process SQL statements and delete the crap out of this installer!
Dim query, view, record, message, rowData, columnCount, delim, column
Set view = database.OpenView("Delete from LaunchCondition") : CheckError
view.Execute
wscript.echo "Launch Conditions Removed"
Set view = database.OpenView("Delete from InstallExecuteSequence where Action='OnCheckSilentInstall'")
view.Execute
wscript.echo "OnCheckSilentInstall step removed"
Set view = database.OpenView("Delete from CustomAction where Action='ErrorIncompatibleOSShow'")
view.Execute
wscript.echo "ErrorIncompatibleOSShow removed"
Set view = database.OpenView("Delete from Property where Property = 'ISSETUPDRIVEN'")
view.Execute
wscript.echo "Property ISSETUPDRIVEN removed"
Set view = database.OpenView("INSERT INTO Property (Property,Value) VALUES ('ISSETUPDRIVEN',1)")
view.Execute
wscript.echo "Property ISSETUPDRIVEN added"
database.Commit
Wscript.Quit 0
Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then
Set errRec = installer.LastErrorRecord
If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText
End If
Fail message
End Sub
Sub Fail(message)
Wscript.Echo message
Wscript.Quit 2
End Sub
위의 vbs파일을 테스트해보려면 MSI형태로 배포되는 프로그램을 찾아야되는데
쉽게 구할수 있는 카스퍼스키7.0 3개월 트라이얼을 이용해보겠습니다.
http://www.kasperskylab.co.kr/event/kavkis/3monthevent.html
위의 링크에서 KAV나 KIS 맘에 드는걸로 다운받은 후 압축을 풀어야됩니다.
자주 사용되는 7-zip프로그램으로 압축 풀기를 하면 EXE형태 안의 MSI파일이 보입니다.
KAV의 경우 kav.kor.msi혹은 KIS의 경우 kis.kor.msi 파일이 있을 껍니다.
위의 vbs파일을 위의 프로그램 압축이 풀린 폴더에 복사한 후에
탐색기에서 kav.kor.msi혹은 kis.kor.msi파일을 드래그한뒤에 vbs스크립트 파일위로 끌어다가 놓습니다.
팝업창이 몇개 뜬 후에 msi파일이 수정되었을 껍니다.
수정된 msi로 프로그램을 설치하면 기존에 서버에서는 에러나면서 설치가 안되던게 설치가 됩니다.
이걸 응용하면 기존에 서버운영체제에서 게임이 안깔리던경우에 사용이 가능한데
단, MSI형태의 설치되는 게임에 한해서 사용가능합니다.
출처:비스타포럼



