21

VS2010とWiX3.6を使用してMSIパッケージを作成し、それらをBootstrapperセットアップにバンドルしています。これが私のBoostrapperコードです。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="" Version="" Manufacturer="" UpgradeCode="">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

        <Chain>
              <MsiPackage SourceFile="Package1.msi">
                <MsiProperty Name="PARAM1" Value="[PARAM1]" />
                <MsiProperty Name="PARAM2" Value="[PARAM2]" />
              </MsiPackage>
              <MsiPackage SourceFile="Package2.msi">
                <MsiProperty Name="PARAM1" Value="[PARAM1]" />
                <MsiProperty Name="PARAM2" Value="[PARAM2]" />
              </MsiPackage>
        </Chain>
    </Bundle>
</Wix>

MSIパッケージを実行するには、パラメーターを指定する必要があります。通常、私はと呼びます"Packag21.msi PARAM1=1 PARAM2=2"。プロジェクトをビルドした後、同じ方法でBootstrapper.exeにパラメーターを渡そうとしますBootstrapper.exe PARAM1=1 PARAM2=2が、MSIに渡されないようです。パラメータが欠落している状態でインストールがハングします。

exeからmsiにパラメータを渡す方法はありますか?

4

2 に答える 2

36

これは現在実装されており、5月21日のWix3.6RCリリースの時点で利用可能です。

これがどのように機能するかの一般的な考え方です:

<Wix>
<Bundle>
    <Variable Name="CommandLineArg" bal:Overridable="yes"/>
    <Chain>
      <MsiPackage>
        <MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/>
      </MsiPackage>
    </Chain>
</Bundle>
</Wix>

コマンドラインでオーバーライド可能なバンドル変数を作成してから、その変数をmsiに渡す必要があります。

于 2012-07-09T23:17:27.507 に答える
5

これは現在、標準のブートストラッパーでは使用できません。WixStdBaはコマンドラインプロパティを使用可能にしません-ID:3489809

独自のブートストラッパーアプリケーションを作成する場合は、このような機能を実装できます。

編集:コマンドラインからブートストラッパーにパラメーターを渡すことはできませんが、ブートストラッパーでさまざまな方法で情報を収集できます。

例:変数の設定

<Variable Name="PARAM1" Value="SomeValue" Persisted="yes" Type="string" />

例:レジストリの検索

<util:RegistrySearch Root="HKLM" Key="Software\SomeProduct" Value="SomeKey" Variable="PARAM1" Result="value"/>
于 2012-05-08T18:33:52.813 に答える