3

書き込み組み込み変数 WixBundleProviderKey に問題があります。この変数の値を msi パッケージに渡す必要があります。私の問題は、この変数の値が評価されず、msi が空の文字列のみを受け取ることです。他の組み込み変数でテストしましたが、期待どおりに機能します。

これが機能しない理由はありますか?回避策はありますか?

例:

<Fragment>
    <PackageGroup Id="Test" >
        <MsiPackage Id="Test" 
            DisplayName="Test 4.10.0002"
            DisplayInternalUI="no"
            Visible="no"
            SourceFile=".\Template\ProductsToInstall\Test\Test 4.10.msi"
            Name="Test\Test 4.10.msi"
            Cache="yes"
            CacheId="Test 4.10"
            Compressed="no"
            Vital="yes"
            Permanent="no">

            <MsiProperty Name="BURN_WIXBUNDLEORIGINALSOURCE" Value="[WixBundleOriginalSource]" />
            <MsiProperty Name="BURN_COMMONAPPDATAFOLDER" Value="[CommonAppDataFolder]" />
            <MsiProperty Name="BURN_WIXBUNDLEPROVIDERKEY" Value="[WixBundleProviderKey]" />
        </MsiPackage>
    </PackageGroup>
</Fragment>

前もって感謝します

4

4 に答える 4

1

これは v3.10 で修正する必要があるバグです: http://wixtoolset.org/issues/4630/

于 2015-03-27T00:34:55.580 に答える
0

質問に対する正確な答えではありませんが、役立つかもしれません。私の場合、 「CommonAppDataFolder\Package Cache\WixBundleProviderKey」ディレクトリにキャッシュされている BundeSetup.exe へのフル パスを取得するために、 WixBundleProviderKey変数の値を msi に渡す必要がありました。そのために、msi でFileSearch要素を使用してプロパティを作成し、検索ファイルのフル パスを指定しました。

<Property Id="BUNDLECACHEPATH">
  <DirectorySearch Id="BundleDirSearch" Path="[CommonAppDataFolder]Package Cache" Depth="1">
    <FileSearch Name="BundleSetup.exe" />
  </DirectorySearch>
</Property>
于 2013-11-27T13:14:01.300 に答える
0

標準ブートストラップ アプリケーションでWixBundleProviderKey値を渡す唯一の方法は、 InstallFolder変数を介して渡すことです。

<Variable Name="InstallFolder" Value="[WixBundleProviderKey]" />

もう 1 つの解決策は、 DirectorySearch要素変数を使用してバンドル セットアップ一時ファイルへのパス内に渡すことです。

<util:DirectorySearch Path="[TempFolder][WixBundleProviderKey]" Variable="KeyPath" />

<MsiProperty Name="BUNDLE_KEY" Value="[KeyPath]" />

[BUNDE_KEY] プロパティ値から msi でWixBundleProviderKeyを取得する方法は、 String.Substring ()メソッドを使用してC# カスタム アクションを実装することです。取得した値をRegistrySearch要素内で使用する場合は、AppSearchイベントの前にInstallUISequence内に配置します。

于 2014-01-09T16:05:01.733 に答える
0

このトリックを試してみてください。「BUNDLE_KEY」という名前の新しい変数を作成できます(例)

<Variable Name="BUNDLE_KEY" Type="string" Value="[WixBundleProviderKey]" />

次に、この変数を MsiProperty に適用します。

 <MsiProperty Name="YOU_PROPERTY_IN_MSI" Value="[BUNDLE_KEY]" />

お役に立てば幸いです。

于 2013-11-30T15:21:09.330 に答える