使用cabwiz.exe的NAnt exec任务失败

时间:2011-03-18 16:10:28

标签: windows-mobile nant cabwiz

我在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通过完整路径而不显式构建脚本中的完整路径?只有构建文件目录的东西才有效。

1 个答案:

答案 0 :(得分:1)

我通过使用NAnt功能目录:: 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>