自動ビルドを行ってc#プロジェクトのmsiを作成するためにWiXを使用し始めましたが、エラー "未定義のプリプロセッサ変数 '$(var.MyProject.TargetDir)'"
最新のWiX v3.0.5419を使用しています。 wxsファイル内で、このWebページにリストされているプリプロセッサ変数を使用しようとしています( http://blogs.msdn.com/jrock/archive/2008/01 /29/candle-list-of-candle-preprocessor-variables.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>
誰でもこれで私を啓発できますか?
既に述べたように、nantビルドスクリプトはwixproj
ファイルをまったく使用していません。
ここでは、2つの異なる方法を組み合わせてwixセットアップを構築しています。
_candle.exe
_および_light.exe
_コマンドラインツールを直接使用できます。これは_.wixproj
_ファイルを無視します。これは、nantビルドスクリプトで実行していることです。 $(var.MyProject.TargetDir)
などのプリプロセッサ変数の値を渡すには、_-dMyProject.TargetDir=c:\foo
_などのオプションを使用します。
Votive(wixのVisual Studioアドオン)を使用して.wixprojファイルを作成できます。すべてのVisual Studioプロジェクトファイルと同様に、wixprojファイルは実際には_msbuild.exe
_でビルドできるmsbuildファイルです。正しいプロジェクト参照が存在する場合、$(var.MyProject.TargetDir)
などの変数は、wixセットアップをビルドするためにmsbuildタスクによって自動的に設定されます。
_<msbuild>
_ nant task でwixprojファイルをビルドすることをお勧めします。これにより、nantビルドは、Visual Studioから手動でセットアップをビルドする場合と同じようになります。