2016-07-05 4 views
0

MSIを生成するためにwix 3.9.1208.0を使用しています。以下のコードは、Upperfiltersレジストリキーの前に値を付加します。観測され、値が「UpperFilters」レジストリキーに付加しませおよびMSIログにエラーが見つかりませんインストールした後MSIレジストリのプリペンド値が更新されない

<RegistryKey Id="UpperFilters" Root="HKLM" Key="xxxxxxxxx" Action="create"> <RegistryValue Name="UpperFilters" Type="multiString" Action="prepend" Value="xxxxx"/> </RegistryKey>

。この問題は一度だけ起こりました。

MSIログ:

MSI(S)(0C:28)[10:38:08:835]:実行OP:ComponentRegister(COMPONENTID = XXXX、キーパス= 02:XXXXX、状態= 3 (0C:28)[10:38:24:455]:実行中:RegOpenKey(Root = -2147483646、Key = xxxxx ,, BinaryType) = 0 ,,) MSI(S)(0C:28)[10:456 38:24]:OPを実行する:RegAddValue(NAME = UpperFilters、値= XXXXX [〜])

はMSIありレジストリを更新できないときに失敗を返しますか?

すべてのレジストリエラーはMSIログに記録されますか?

私のシナリオでは何が問題なのですか?

ありがとうございました。

答えて

0

ログから詳細を表示すると役立つことがあります。それらのログ断片から何が起こっているのかを知るのは難しいです。 ComponentRegisterは通常RegOpenKeyの隣にはありません。レジストリ内のキーパスの単なるレジスタであり、実際の問題には関係ありません。

間違っている可能性がいくつかあります。

なぜコンポーネントIDのxxxxはありますか?ログ情報を投稿したときに実際のGUIDを隠していたのですか、それとも実際に使用したものなのでしょうか?法的なIDではありません。

これは64ビットシステムであり、32ビットレジストリを更新しようとしました。システムのビット数とMSIのアーキテクチャを知らなくても、必要なキーを更新したかどうかはわかりません。

既存のデータに何もない場合、Prependingは実際に何もしないので、前のデータと後のデータを見ることなく、正しく機能するかどうか(前に何もないため)それは実際にあなたのデータを既存のデータの前に置かなかった)。

+0

転記前にコンポーネントIDを非表示にします。これは64ビットマシンで、 'HKLM \ System \ CurrentControlSet \ Control \ Class \ {4d36e967-e325-11ce-bfc1-08002be10318}'レジストリハイブの下に 'UpperFilters'レジストリキーが付加されています。 'UpperFilters'レジストリキーの前に 'PartMgr'の値があります。 – Ninja

+0

システムとは無関係です。問題は、インストールのアーキテクチャとレジストリを含むコンポーネントのアーキテクチャです。キーがWoW6432にある場合、32ビットMSIはネイティブ64ビットレジストリを更新しません。 – PhilDW

関連する問題