为什么快捷方式元素的图标应该具有以“.ico”或“.exe”结尾的 Id 属性?
所以这段代码
<Icon Id="ProgramIcon" SourceFile="Images\MyAppIcon.ico"/>
<Component Guid="MY_GUID" Id="MyAppComponent">
<File Source="MyApp.exe" Name="MyApp.exe" Id="MyApp.exe">
<Shortcut Id="MyApp.Shortcut" Directory="ApplicationProgramMenuDir" WorkingDirectory="INSTALLDIR" Name="MyApp" Icon="ProgramIcon" Advertise="yes" />
</File>
</Component>
产生编译错误:
error LGHT0204: ICE50: The extension of Icon 'ProgramIcon' for Shortcut 'MyApp.Shortcut' does not match the extension of the Key File for component 'MyAppComponent'. [D:\APPS\MyProject.wixproj]
但是这段代码
<Icon Id="ProgramIcon.ico" SourceFile="Images\MyAppIcon.ico"/>
<Component Guid="MY_GUID" Id="MyAppComponent">
<File Source="MyApp.exe" Name="MyApp.exe" Id="MyApp.exe">
<Shortcut Id="MyApp.Shortcut" Directory="ApplicationProgramMenuDir" WorkingDirectory="INSTALLDIR" Name="MyApp" Icon="ProgramIcon.ico" Advertise="yes" />
</File>
</Component>
编译得很好。
这是我第一次看到任何元素的 Id 属性的这种限制,它看起来很奇怪。我认为这甚至是警告都没有任何理由。所以我不了解此功能的一些基础知识。请帮助我了解所描述行为的原因。