2009-12-22 3 views
6

VisualStudio2005와 vdproj를 사용하여 간단한 MSI 파일을 만듭니다. 내가 시작할 때 REINSTALLMODE 속성을 전달해야합니다. REINSTALLMODE를 MSI 파일에 전달

내가이과 같이, 명령 줄을 통해 수행 할 수 있습니다 알고 : 사용자가 직접 MSI를 클릭하여 선택하는 경우 msiexec.exe /i foo.msi REINSTALLMODE=amus

그러나, (마법사를 실행),이 건물은 전달되지 않습니다. VS 및 vdproj를 통해이 작업을 수행 할 수 있습니까?

일부 옵션 I 조사했습니다

  • 내가 VS 통해 MSI를 빌드 할 때, 그것은 또한 setup.exe를 생산하고 있습니다. 거기에 REINSTALLMODE 속성을 전달하는 방법이 있습니까?
  • MSI의 속성 테이블을 보거나 편집 할 수있는 Orca가 설치되었습니다. 이 방법으로 추가 할 수 있지만 MSI 빌드를 수행 할 때마다 추가해야합니다.

어떤 조언을 주셔서 감사합니다.

답변

4

슬프게도 VStudio에서 다른 MSI 속성을 설정하는 방법을 찾을 수 없습니다.

그럼에도 불구하고, 작업을해야하는 한 가지 방법은 이것이다 :

  1. 사용 오카는 만 속성 REINSTALLMODE을 변경 (MST)을 변환 만들 수 있습니다. 즉, & 속성을 새 변환으로 저장 한 다음 "변환 생성"명령을 사용하여 MST를 만듭니다.
  2. 이 변환은 MSITRAN.EXE 명령을 사용하여 MSI에 직접 적용 할 수 있습니다 Orca를 발견 한 Windows Installer SDK).
  3. (a) MSI 빌드 직후에 Visual Studio에서 MSITRAN 명령을 항상 실행하거나 (b) 빌드 후 MSITRAN을 수동으로 (배치 파일 등에서) 실행하면됩니다. 테스트하기 전에.
+0

자세한 응답을 보내 주셔서 감사합니다. 이 시도해 보겠습니다 ... – Ken

+1

(아마도이 ​​msi가 더 이상 복잡해지면 WiX를 사용해야합니다) – Ken

+0

사실 WiX는 Windows Installer의 모든 복잡성에 대한 액세스를 제공합니다. 그러나 그것은 약간의 학습 곡선입니다. 행운을 빕니다! – ewall

7

나는 이것을 더 자동화 된 방법으로 발견했다.

folowing로 add_reinstall_prop.vbs (예)라는 이름의 스크립트를 작성 :

add_reinstall_prop.vbs $(BuiltOuputPath) 
:

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 

는 다음으로 스크립트를 호출하여 설치 프로젝트에 빌드 후 이벤트 추가

그러면 원하는 MSI 항목이 자동으로 추가됩니다. 그런 다음 Orca를 사용하여이 항목을 확인하여 빌드 후 자동으로 항목이 추가되는지 확인할 수 있습니다.

+0

감사합니다 사람은 매력처럼 작동합니다. 큰 따옴표를 사용해야합니다. add_reinstall_prop.vbs "$ (BuiltOuputPath)" –