ReinstallMode를 MSI 파일로 전달합니다
-
20-09-2019 - |
문제
간단한 MSI 파일을 만들기 위해 VisualStudio2005와 VDProj를 사용하고 있습니다. 발사 할 때 ReinstallMode 속성을 통과해야합니다.
나는 이것이 그렇게 명령 줄을 통해 수행 할 수 있다는 것을 알고 있습니다.msiexec.exe /i foo.msi REINSTALLMODE=amus
그러나 사용자가 MSI를 직접 클릭하기로 선택한 경우 (마법사 시작) 속성이 전달되지 않습니다. VS와 VDPROJ를 통해이 작업을 수행 할 수 있습니까?
내가 조사한 몇 가지 옵션 :
- VS를 통해 MSI를 빌드하면 setup.exe도 생성됩니다. 이를 통해 ReinstallMode 속성을 통과시키는 방법이 있습니까?
- ORCA를 설치하여 MSI의 속성 테이블을보고/편집 할 수 있습니다. 이 방법을 추가 할 수는 있지만 MSI 빌드를 할 때마다 추가해야합니다.
조언에 감사드립니다.
해결책
안타깝게도 Vstudio에서 다른 MSI 속성을 바로 설정하는 방법을 찾을 수 없습니다.
그럼에도 불구하고 작동 해야하는 한 가지 방법은 다음과 같습니다.
- ORCA를 사용하여 속성 리 슈타 모드 만 변경하는 변환 (MST)을 만듭니다. (요컨대, 속성을 편집하고 새 변환으로 저장 한 다음, "Transform gentate"명령을 사용하여 MST를 생성합니다.)
- 이 변환은 msitran.exe 명령 (ORCA를 찾은 동일한 Windows 설치 프로그램 SDK에서 사용 가능).
- (a) MSI 빌드 직후에 Visual Studio가 항상 MSITRAN 명령을 실행하는 방법을 찾거나 (b) 빌드 후부터 테스트하기 전에 MSITRAN을 수동으로 (배치 파일에서) 수동으로 실행하십시오.
다른 팁
더 자동화 된 방법을 찾았습니다.
이름이 지정된 스크립트를 만듭니다 add_reinstall_prop.vbs(예제)와 함께 :
set objArgs = WScript.Arguments
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase(objArgs(0), 1)
s_SQL = "INSERT INTO Property (Property, Value) Values( 'REINSTALLMODE', 'amus')"
set o_MSIView = o_DataBase.OpenView( s_SQL)
o_MSIView.Execute
o_DataBase.Commit
설정 후 이벤트를 설정 프로젝트에 다음과 함께 스크립트로 호출합니다.
add_reinstall_prop.vbs $(BuiltOuputPath)
이것은 구축 된 MSI에 원하는 항목을 자동으로 추가합니다. 그런 다음 ORCA로 확인하여 빌드 후 항목이 자동으로 추가되는 것을 확인할 수 있습니다.
제휴하지 않습니다 StackOverflow