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 扩展名的文件。
为了解决这个问题,我们需要做出唯一的改变:为 exe 文件而不是 dll 设置 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 文档包含错误吗?Target 不是设置为父 File 元素,而是设置为祖先的 Component 的 KeyPath?
还是我的错误和我的代码有问题?