문제

간단한 MSI 파일을 만들기 위해 VisualStudio2005와 VDProj를 사용하고 있습니다. 발사 할 때 ReinstallMode 속성을 통과해야합니다.

나는 이것이 그렇게 명령 줄을 통해 수행 할 수 있다는 것을 알고 있습니다.msiexec.exe /i foo.msi REINSTALLMODE=amus

그러나 사용자가 MSI를 직접 클릭하기로 선택한 경우 (마법사 시작) 속성이 전달되지 않습니다. VS와 VDPROJ를 통해이 작업을 수행 할 수 있습니까?

내가 조사한 몇 가지 옵션 :

  • VS를 통해 MSI를 빌드하면 setup.exe도 생성됩니다. 이를 통해 ReinstallMode 속성을 통과시키는 방법이 있습니까?
  • ORCA를 설치하여 MSI의 속성 테이블을보고/편집 할 수 있습니다. 이 방법을 추가 할 수는 있지만 MSI 빌드를 할 때마다 추가해야합니다.

조언에 감사드립니다.

도움이 되었습니까?

해결책

안타깝게도 Vstudio에서 다른 MSI 속성을 바로 설정하는 방법을 찾을 수 없습니다.

그럼에도 불구하고 작동 해야하는 한 가지 방법은 다음과 같습니다.

  1. ORCA를 사용하여 속성 리 슈타 모드 만 변경하는 변환 (MST)을 만듭니다. (요컨대, 속성을 편집하고 새 변환으로 저장 한 다음, "Transform gentate"명령을 사용하여 MST를 생성합니다.)
  2. 이 변환은 msitran.exe 명령 (ORCA를 찾은 동일한 Windows 설치 프로그램 SDK에서 사용 가능).
  3. (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로 확인하여 빌드 후 항목이 자동으로 추가되는 것을 확인할 수 있습니다.

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