Shortcut 要素に関するWIXのドキュメントでは、Target 属性について次のように述べています。
The value will be defaulted to the parent File when nested under a File element.
しかし、コード
<Component Guid="MY_GUID" Id="MyAppComponent">
<File Source="SomeDll.dll" Name="SomeDll.dll" Id="SomeDll.dll" KeyPath="yes" />
<File Source="MyDll.exe" Name="MyDll.exe" Id="MyDll.exe" />
<Shortcut Id="MyApp.Shortcut" Directory="ApplicationProgramMenuDir" WorkingDirectory="INSTALLDIR" Name="MyApp" Icon="ProgramIcon.ico" Advertise="yes" />
</File>
</Component>
期待どおりに動作しません - ショートカットが dll ファイルを指しており、それを実行すると、Windwos エラー メッセージが表示され、dll 拡張子を持つファイルを起動できないというエラー メッセージが表示されます。
唯一の違いを作る必要があることを修正するには、dll の代わりに exe ファイルの KeyPath="yes" 属性を設定します。
<Component Guid="MY_GUID" Id="MyAppComponent">
<File Source="SomeDll.dll" Name="SomeDll.dll" Id="SomeDll.dll"/>
<File Source="MyDll.exe" Name="MyDll.exe" Id="MyDll.exe" KeyPath="yes" />
<Shortcut Id="MyApp.Shortcut" Directory="ApplicationProgramMenuDir" WorkingDirectory="INSTALLDIR" Name="MyApp" Icon="ProgramIcon.ico" Advertise="yes" />
</File>
</Component>
WIX のドキュメントに誤りがありますか? ターゲットは親ファイル要素ではなく、先祖のコンポーネントのキーパスに設定されていますか?
それとも私の間違いで、私のコードに何か問題がありますか?