문제

명령 줄에서 짧은 텍스트 속성을 추가하거나 수정 해야하는 MSI 설치 프로그램이 있습니다.

설치 프로그램이 구축 된 후에 수행해야합니다. 처음에 설치 프로그램을 생성하는 프로세스를 수정할 수 없습니다. 또한 스크립트에서 헤드리스를 실행해야합니다.

"속성"이라고 말할 때, 그것은 MSI 속성, 설치 시간에 레지스터에 기록되는 값 또는 실행될 때이 짧은 사용자 정의 텍스트를 설치된 응용 프로그램에 가져올 수있는 다른 메커니즘 일 수 있습니다.

도움이 되었습니까?

해결책

예제 vbscript 구축 후 속성을 업데이트 (또는 추가)하는 데 사용할 수있는 VBScript ...

Option Explicit

Const MSI_FILE = "myfile.msi"


Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & myproperty & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & myproperty & "')")
view.Execute


Set database = Nothing
Set installer = Nothing
Set view = Nothing

자세한 내용은 Windows Installer SDK (일부의 일부를 확인하십시오. Windows SDK), 예를 들어 명령 줄에서 사용할 수있는 다양한 예제 스크립트가 있습니다. 예를 들어 다양한 MSI 조작 작업을 수행합니다. WiRunSQL.vbs MSI에 대해 임의의 SQL을 실행할 수 있습니다.

다른 팁

c:\> msiexec /i yourmsi.msi THEPROPERTYNAME=valueofproperty

자세한 정보는 CommandLine에서 MSIEXEC을 입력하십시오.

편집 : 또는 SQL 문을 사용하고 속성 테이블에서 속성을 업데이트하여 .msi 파일 자체를 변경하십시오.http://msdn.microsoft.com/en-us/library/aa372021(vs.85).aspx http://msdn.microsoft.com/en-us/library/aa368568(vs.85).aspx

이것은 '09 년 @saschabeaumont의 답변에 추가하는 것입니다. 현재 DOTNET 4.0을 사용하고 있습니다

Option Explicit

Const MSI_FILE = "myFilePath.msi"
Const PROPERTY_STRING_Value = "FooBar"

Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & PROPERTY_STRING_Value & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & PROPERTY_STRING_Value & "')")

view.Execute()
database.Commit()

Set database = Nothing
Set installer = Nothing
Set view = Nothing
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top