Не удается выполнить 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>
Другие вопросы по тегам