Не удается выполнить exec задачу с cabwiz.exe
Я использую NAnt 0.90 на Windows 7 Professional.
Я пытаюсь создать CAB-файл с помощью NAnt. NAnt использует задачу выполнения, чтобы CabWiz собрал CAB-файл с помощью файла inf. Сборка не удалась, но если я использую 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>
Файл cab_build_errors.err, сгенерированный CabWiz, содержит 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 из командной строки, я получаю те же два предупреждения, но без ошибок. Вот что я использую, чтобы собрать его из командной строки:
"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 ответ
Я заставил его работать, указав полный путь к файлу inf из сценария сборки NAnt с использованием директории функции NAnt::get-current-directory(). Окончательный результат:
<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>