7

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

4

2 に答える 2

6

これが原因のようです: http://msdn.microsoft.com/en-us/library/aa369210.aspx (備考欄を参照)。

Icon="ProgramIcon"ショートカットの拡張子と一致しないため、検証に失敗していると思います。

http://wix.sourceforge.net/manual-wix2/wix_xsd_shortcut.htm言う

Icon 要素への識別子参照。アイコン識別子は、それが指すファイルと同じ拡張子を持つ必要があります。たとえば、実行可能ファイル (例: "my.exe") へのショートカットは、"MyIcon.exe" のような識別子を持つアイコンを参照する必要があります。

于 2012-11-30T12:19:30.263 に答える