2017-12-15 20 views
0

WPFアプリケーション用のWiXベースのインストーラを開発しています。ファイルの量は膨大で、常に変化します。したがって、私はheatコンポーネントを生成するユーティリティを使用します。WiX:Heatにより、同じ名前のファイルのICE69警告が発生する

& "$env:WIX\bin\heat.exe" dir $sourceDir -ag -dr INSTALLDIR -srd -sfrag -suid -cg ProductComponents -out Components.wxs 

名前は同じですが、別々のフォルダーに保存されているものはたくさんあります。生成されたファイルには、ビルドlightユーティリティプリント1以下のメッセージ

warning LGHT1076 : ICE69: Mismatched component reference. Entry 'regCA7432986A287E1C45911B23DB39A11B' of the Registry table belongs to component 'AutoMapper.dll_1'. However, the formatted string in column 'Value' references file 'AutoMapper.dll' which belongs to component 'AutoMapper.dll'. Components are in the same feature. 

中にあなたは、コード[#AutoMapper.dll]代わりに[#AutoMapper.dll_1]と、この動作の最後の行を見ることができるように

<Component Id="AutoMapper.dll_1" Guid="*"> 
... 
<File Id="AutoMapper.dll_1" KeyPath="yes" Source="SourceDir\Plugins\PluginName\AutoMapper.dll" /> 
<ProgId Id="Record" /> 
<RegistryValue Root="HKCR" Key="CLSID\{00ACB8EF-737F-3327-B129-C59300C5D5ED}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" /> 
<RegistryValue Root="HKCR" Key="CLSID\{00ACB8EF-737F-3327-B129-C59300C5D5ED}\InprocServer32\6.1.1.0" Name="Class" Value="AutoMapper.Configuration.MapperConfigurationExpression" Type="string" Action="write" /> 
<RegistryValue Root="HKCR" Key="CLSID\{00ACB8EF-737F-3327-B129-C59300C5D5ED}\InprocServer32\6.1.1.0" Name="Assembly" Value="AutoMapper, Version=6.1.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005" Type="string" Action="write" /> 
<RegistryValue Root="HKCR" Key="CLSID\{00ACB8EF-737F-3327-B129-C59300C5D5ED}\InprocServer32\6.1.1.0" Name="RuntimeVersion" Value="v4.0.30319" Type="string" Action="write" /> 
<RegistryValue Root="HKCR" Key="CLSID\{00ACB8EF-737F-3327-B129-C59300C5D5ED}\InprocServer32\6.1.1.0" Name="CodeBase" Value="file:///[#AutoMapper.dll]" Type="string" Action="write" /> 
... 

などのレコードがあります同じ名前のファイルの残りのものと同じです。この動作を防ぎ、通常のレジストリレコードを生成するにはどうすればよいですか?

ところで、これは本当の問題ですか、それとも無視できますか?

+1

ファイルが両方の場所でまったく同じであれば、ICE69を無視することは安全です。ただし、異なる機能を備えていない場合は、ICE69を無視しても問題ありません。 –

+0

[#AutoMapper.dll]の値は、実際に製品をインストールしたときにランタイム値であるdllがインストールされている場所によって異なるため、静的レジストリ値を生成することはできません。 –

答えて

0

これにはもありますが、ユースケースに影響を与えずにその引数を削除できますか?予想される値のどこかでファイルIDを参照する必要がある場合は、常に小さな変換を使用して支援することができます。

+0

さて、 '-suid'を削除しても問題は解決しません。ビルド時にはまだ大量の警告メッセージが印刷されています –

関連する問題