web-dev-qa-db-ja.com

ソースファイルへのWiX相対パス

私のプロジェクトにはシンプルなソリューションがあり、それはうまく機能しています。しかし、ソースパスを相対にする方法を把握できません。誰か助けてくれますか?

  <Component Id="Bla.exe" Guid="*">
    <File Id="Bla.exe" Source="D:\Projects\Bla\Bla\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/>
  </Component>

Wixソリューションに関連するパスを作成するにはどうすればよいですか? WiXと必要なすべてのファイルは同じソリューションにあります。

31
Christian Sauer

次のように相対パスを使用できます。

    <File Id="Bla.exe" Source="..\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/>

OR

構成ファイルをプロジェクトに追加して、一般的な変数を定義できます。これを行うには、新しい「WiX Include」ファイルをプロジェクトに追加して、それを呼び出しますconfig.wxi。次に、インクルードファイルで、SourceDir変数を次のように定義できます。

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <?define SourceDir = "D:\Projects\Bla\Bla\bin\Debug" ?>
</Include>

これで、.wxsファイルの上部にある構成ファイルへの参照を追加できます(例:

<?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.Microsoft.com/wix/2006/wi">
 <?include "config.wxi"?>

次に、SourceDir変数を次のように参照します。

<File Id="Bla.exe" Source="$(var.SourceDir)\Bla.exe" KeyPath="yes" Checksum="yes"/>

また、組み込みの WiXプロジェクト変数 を使用できます。

64
BryanJ

これを行うには多くの方法がありますが、個人的に私がしたいことは、アプリケーションインストーラプロジェクトをさまざまなソリューションに入れることです。最初にアプリケーションソリューションをビルドし、ポストビルドコマンドを使用してコンテンツを展開フォルダーに発行します。

インストーラープロジェクトで、ソースパスに$(var.SourceDir)= "..\deploy"を設定し、次に$(var.SourceDir)\ foo.exeを設定します。

2