1

Windows 7 Professional で NAnt 0.90 を使用しています。

NAnt を使用して CAB ファイルを作成しようとしています。NAnt は実行タスクを使用して、CabWiz に inf ファイルを使用して CAB ファイルを構築させます。ビルドは失敗しますが、NAnt の代わりにコマンド ラインから CabWiz を使用すると、CAB ファイルをビルドできます。

私のNAntビルドファイルの関連部分は次のとおりです。

<target name="build Cab Production">
        <exec program="C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe" commandline="ACSreader2\ACSreader2Setup\Production\ACSreader2_Setup.inf  /err cab_build_errors.err"/>
</target>

CabWiz によって生成された cab_build_errors.err ファイルには、2 つの警告と非常に一般的なエラー メッセージが含まれています。

Warning: Section [RegKeys] has no data
Warning: Section [DefaultInstall] key "AddReg" - there are no section entries to process
Error: CAB file "ACSreader2\ACSreader2Setup\Production\ACSreader2_Setup.CAB" could not be created

コマンド ラインから CAB をビルドすると、同じ 2 つの警告が表示されますが、エラーは発生しません。コマンドラインからビルドするために使用するものは次のとおりです。

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe" "C:\programming\ACSreader2\ACSreader2\ACSreader2Setup\Production\ACSreader2_Setup.inf" /err cab_build_errors.err

アップデート:

次のコマンドを使用して、コマンドラインからエラーを再現できました。

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe" "ACSreader2\ACSreader2Setup\Production\ACSreader2_Setup.inf" /err cab_build_errors.err

違いは、inf ファイルへのフル パスを指定していないことです。ビルド スクリプトに明示的にフル パスを指定せずに、NAnt にフル パスを渡すために使用できる変数または何かがありますか? ビルドファイルのディレクトリだけを持つものは機能します。

4

1 に答える 1

1

NAnt 関数 directory::get-current-directory() を使用して、NAnt ビルド スクリプト内から inf ファイルへの完全なパスを指定することで、機能するようになりました。最終結果は次のとおりです。

<target name="build Cab Production">
        <exec program="C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe" commandline="${directory::get-current-directory()}\ACSreader2\ACSreader2Setup\Production\ACSreader2_Setup.inf  /err cab_build_errors.err" />
</target>
于 2011-03-19T06:03:10.930 に答える