ショートカット要素のアイコンに「.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属性にこのような制限があるのは初めてで、非常に奇妙に見えます。警告でさえ、これの理由はわかりません。そのため、この機能の基本を理解していません。説明されている動作の理由を理解するのを手伝ってください。