2011-01-27 15 views
2

私はこのようなWiXのセットアップに互換性アシスタントのためのレジストリキーを追加してみました:WiXのマルチストリングレジストリキー

<File Id="File1.exe" Name="File1.exe" LongName="File1.exe" Source="..\Binaries\File1.exe" DiskId="1" /> 
<File Id="File2.exe" Name="File2.exe" LongName="File2.exe" Source="..\Binaries\File2.exe" DiskId="1" /> 
<File Id="File3.exe" Name="File3.exe" LongName="File3.exe" Source="..\Binaries\File3.exe" DiskId="1" /> 
<Registry Root="HKLM" 
      Key="Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant" 
      Name="ExecutablesToExclude" 
      Type="multiString" 
      Action="append"> 
    <RegistryValue Action="append" Value="[File1.exe]" /> 
    <RegistryValue Action="append" Value="[File2.exe]" /> 
    <RegistryValue Action="append" Value="[File3.exe]" /> 
</Registry> 

しかし、何もキーをインストールしていないときに生成されます。私は何かを逃したり、何か間違っていますか? this questionとwixのドキュメントから、私がやっていることの詳細が得られました。

更新: 構文は少し異なりますが、私が指摘した質問は異なるバージョンのWiXを使用しているためです。私が使った構文は、WiX 2が受け入れる唯一のものです。このwixファイルはうまく構築されます。新しいレジストリエントリは生成されません。


更新:私は問題を誤診していました。 wix scrpitは正常に機能しましたが、含まれているコンポーネントにはWin64="yes"という属性がないため、レジストリのWow6432bitノードに値を入力してください。

+0

:私はこのようなあなたのレジストリ要素を書き換えしようと、とにかく

...あなたのサンプルがエラーなしでコンパイルされるか、疑問に思います。違うやり方をしている理由はありますか? – wimh

+0

@ウィムメル:それはWiXの別のバージョンだからだと思います。私はそれに言及する質問を更新しました。 – configurator

+0

すばらしく解決しました! –

答えて

1

WiX2のRegistryValue要素には属性がありません。あなたが が `使用されている`、を指している問題の

<Registry Root="HKLM" 
      Key="Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant" 
      Name="ExecutablesToExclude" 
      Type="multiString" 
      Action="append"> 
    <RegistryValue>[File1.exe]</RegistryValue> 
    <RegistryValue>[File2.exe]</RegistryValue> 
    <RegistryValue>[File3.exe]</RegistryValue> 
</Registry> 
+0

私はちょうどそれを試みました、そして私はまったく同じ効果を得ます - 私はあなたが提供した最初の情報に基づいてこれを推測しませんでした。セットアップではマルチストリングキーも作成されません。 – configurator