11

Wix 3.7 を使用しています。レジストリ キーを設定したい MSI があります (キーが既に存在するかどうかを確認する必要があるため、おそらくカスタム アクションを介して)。

ブートストラップ プロジェクトのバンドルがマシンの状態を変更できないことを理解しています (レジストリの設定など)。したがって、 経由でコマンド ライン引数を渡そうとして<MsiProperty>いますが、ブートストラップのログ ファイルにコマンド ライン引数として表示されないようです。

  1. レジストリ キーをバンドルに設定することはできますか?
  2. そうでない場合、MSI に渡すコマンド ライン引数 (またはその他のカスタム データ) を追加するにはどうすればよいですか。
  3. 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>
4

2 に答える 2

12

MSI は次のようにプロパティを定義する必要があります。

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

次に、バンドルからこのプロパティを設定できます。

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

この後、次の説明に従って Bootstrapper でプロパティを設定できます: WiX Bootstrapper: コマンド ラインから書き込み変数を設定するにはどうすればよいですか?

SomeProperty は、定義する必要がある Burn 変数であることに注意してください。

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

アップデート:

MSI では、このプロパティに基づいてレジストリ検索を実行できます。

<RegistrySearch Id="GetSomeValue" Root="HKLM" Key="SOFTWARE\<Manufacturer>\[SOMEPROPERTY]" Name="<ValueName>" Type="raw" />
于 2013-08-13T12:57:56.657 に答える