我在 Windows 7 Professional 上使用 NAnt 0.90。
我正在尝试使用 NAnt 构建 CAB 文件。NAnt 正在使用执行任务让 CabWiz 使用 inf 文件构建 CAB 文件。构建失败,但如果我从命令行使用 CabWiz 而不是 NAnt,我可以构建 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 传递完整路径,而无需在构建脚本中明确包含完整路径?只有构建文件目录的东西可以工作。