1

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 のドキュメントに誤りがありますか? ターゲットは親ファイル要素ではなく、先祖のコンポーネントのキーパスに設定されていますか?

それとも私の間違いで、私のコードに何か問題がありますか?

4

1 に答える 1

0

<RegistryValue>次のようなタグを追加してみてください。

<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>
    <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]\setup" Name="Shortcut" Type="integer" Value="1" KeyPath="yes" />
</Component>

の場合InstallScopeperUserHKCU

の場合InstallScopeperMachineHKLM

于 2012-11-30T22:16:55.720 に答える