50

自動ビルドを実行して C# プロジェクトの msi を作成するために WiX の使用を開始しましたが、「未定義のプリプロセッサ変数 '$(var.MyProject.TargetDir)'」というエラーが発生しています。

最新の WiX v3.0.5419 を使用しています。wxs ファイル内で、この Web ページ ( http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-変数.aspx )

<Component Id="MyId" Guid="MyGuid">
   <File Id="MyId" Name="MyName" KeyPath="yes" 
      Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>

MyProject の参照を .wixproj に追加しました。メモ帳で開くと参照が表示されます。

<ItemGroup>
  <ProjectReference Include="..\MyProject.csproj">
    <Name>MyProject</Name>
    <Project>{guid}</Project>
    <Private>True</Private>
  </ProjectReference>
</ItemGroup>

これは、msi の作成に使用する nant ビルド スクリプトです。.wixproj がビルドで使用されていないプロジェクト参照を知っているためでしょうか?

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
  <arg line='-out "${tools.wix.objfile}"' />
  <arg value="../MySetup.wxs" />
</exec>

誰でもこれについて教えてもらえますか?

4

1 に答える 1

55

すでに指摘したように、nant ビルド スクリプトはwixprojファイルをまったく使用していません。

ここでは、wix セットアップを構築する 2 つの異なる方法を組み合わせています。

  1. candle.exeおよびlight.exeコマンド ライン ツールを直接使用できます。これはファイルを無視し.wixprojます。これは、nant ビルド スクリプトで行っていることです。などのプリプロセッサ変数に値を渡すには、 など$(var.MyProject.TargetDir)のオプションを使用します-dMyProject.TargetDir=c:\foo

  2. votive (wix の Visual Studio アドオン) を使用して .wixproj ファイルを作成できます。すべてのビジュアル スタジオ プロジェクト ファイルと同様に、wixproj ファイルは、実際には でビルドできる msbuild ファイルですmsbuild.exe。のような変数$(var.MyProject.TargetDir)は、正しいプロジェクト参照が存在する場合、wix セットアップをビルドするために msbuild タスクによって自動的に設定されます。

<msbuild> nant taskを使用して wixproj ファイルをビルドすることをお勧めします。これにより、ビジュアル スタジオから手動でセットアップをビルドする場合と同じように nant ビルドが実行されます。

于 2010-01-14T12:21:19.903 に答える