2013-07-18 2 views
7

나는 Wix 3.7에 있습니다. 레지스트리 키를 설정하고자하는 MSI가 있습니다 (아마도 키가 이미 있는지 확인해야하므로 사용자 지정 동작을 통해).WiX 번들에서 MSI에 명령 줄 args 전달

부트 스트 래퍼 프로젝트의 번들은 레지스트리 설정과 같은 컴퓨터 상태를 변경할 수 없다는 것을 알고 있습니다. 따라서 <MsiProperty>을 통해 명령 줄 인수를 전달하려고 시도하지만 부트 스트 래퍼의 로그 파일에 명령 줄 인수로 나타나지 않습니다.

  1. 번들에서 레지스트리 키를 설정할 수 있습니까?
  2. 그렇지 않은 경우 명령 줄 인수 또는 다른 사용자 지정 데이터 일부를 추가하여 MSI에 전달할 수있는 방법은 입니다.
  3. MSI는 명령 줄 arg 또는 something else가 될 수 있는지 여부를 어떻게 전달합니까?

번들 : 귀하의 MSI가 필요

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Bundle 
      Name="MyInstallerBootstrapperLocalDb" 
      Version="1.0.0.0" 
      Manufacturer="some company" 
      UpgradeCode="PUT-GUID-HERE"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 
    <Chain> 
     <MsiPackage Id="MyInstallerInstaller" 
        SourceFile="$(var.MyInstallerInstaller.TargetPath)" 
        Compressed="no"> 
     <!-- TODO - if this is being set correctly, the MSI needs to 
        interpret it and set up the key--> 
     <MsiProperty Name="SetLocalDb" Value="yes"/> 
     </MsiPackage> 
    </Chain> 
    </Bundle> 
</Wix> 
+1

MSI 명령 줄의 속성은 PUBLIC 속성이어야합니다. 그리고 공공 재산은 모두 대문자입니다. 따라서 SetLocalDb가 아닌 SETLOCALDB 여야합니다. MSI에서 모든 자본으로 선언해야합니다. – RobG

답변

9

그래서 같은 속성을 정의하기 :

<MsiPackage SourceFile="<package>.msi" Id="SomeId"> 
    <MsiProperty Name="SOMEPROPERTY" Value="[SomeProperty]" /> 
</MsiPackage> 

후 :

<Property Id="SOMEPROPERTY" Value="Default"/> 

당신은 다음 번들에서이 속성을 설정할 수 있습니다 여기에 설명 된대로 부트 스트 래퍼에서 속성을 설정할 수 있습니다. SomeProperty 당신이 정의 할 필요가 화상 변수가 WiX Bootstrapper: How do I set burn variables from the command line?

주의 사항 :

<Variable Name="SomeProperty" Type="string" Value="DefaultValue" /> 

업데이트 : MSI에서

당신이 다음이 속성을 기준으로 레지스트리 검색을 수행 할 수 있습니다 :

<RegistrySearch Id="GetSomeValue" Root="HKLM" Key="SOFTWARE\<Manufacturer>\[SOMEPROPERTY]" Name="<ValueName>" Type="raw" /> 
+0

이것은 작동합니다. 주된 문제는 내 번들 프로젝트가 실제로 GenericBootstrapper를 사용하여 실제로 non-wix setup.exe로 만들고 내 번들에서 정의한 것을 무시한다는 것입니다. –

관련 문제