2011-03-18 60 views
1

我在Windows 7 Professional上使用NAnt 0.90。NAnt exec任務與cabwiz.exe失敗

我想用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 

UPDATE:

我可以使用下面的命令再現從該命令行錯誤:

"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

我通過使用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>