Не удается выполнить задачу exec с cabwiz.exe - PullRequest
1 голос
/ 18 марта 2011

Я использую 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 из командной строки, я получаю те же 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 Ответ

1 голос
/ 19 марта 2011

Я заставил его работать, указав полный путь к файлу 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>
...