2017-12-15 12 views
0

WPF 응용 프로그램 용 WiX 기반 설치 프로그램을 개발 중입니다. 파일의 양은 거대하고 끊임없이 변화하므로, 나는 구성 요소를 생성하기 위해 heat 유틸리티를 사용합니다.WiX : 열은 같은 이름의 파일에 대해 ICE69 경고를 발생시킵니다.

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

이름이 같지만 다른 포어에 저장되어있는 사람이 많습니다. 생성 된 파일에서 빌드 light 유틸리티 인쇄 한 다음 메시지

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를 무시하는 것이 안전하며 다른 위치에있는 참조를 사용하여 설치하지 못할 수도 있습니다 –

+0

[# AutoMapper.dll] 값은 실제로 제품을 설치할 때 런타임 값 인 dll이 설치된 위치에 따라 달라 지므로 정적 레지스트리 값을 생성 할 수 없습니다. –

답변

0

이 경우 -suid도 발생합니다. 유스 케이스에 영향을주지 않고 해당 인수를 삭제할 수 있습니까? 기대되는 값으로 어딘가에서 파일 ID를 참조해야하는 경우, 항상 작은 변환을 사용하여 도움을받을 수 있습니다.

+0

글쎄,'-suid'를 제거해도 문제가 해결되지 않습니다. 거대한 담요가 빌드 중에 인쇄됩니다. –

관련 문제