У меня проблемы с вызовом утилиты Microsoft Cabinet Maker (makecab) из пакетного скрипта на сервере Windows Server 2003. Пакетный сценарий выполняется Hudson (службой непрерывной интеграции), установленной на компьютере в качестве службы Windows.
Процесс hudson.exe
(64-битный) порождает процесс java.exe
(32-битный), который порождает процесс cmd.exe
(32-бит), который порождает процесс makecab.exe
(32-бит) , Затем Makecab выдает ошибку:
D:\Hudson\jobs\Testing\workspace>C:\WINDOWS\system32\makecab.exe /F "D:\Build\2.3.278.40859.cab.df"
Microsoft (R) Cabinet Maker - Version 5.2.3790.0
Copyright (c) Microsoft Corporation. All rights reserved..
Parsing directives
Parsing directives (D:\Build\2.3.278.40859.cab.df: 1 lines)
D:\Build\2.3.278.40859.cab.df(12): ERROR:
Тем не менее, если я открою подключение к серверу с удаленного рабочего стола, открою окно командной строки и запустлю makecab, все будет работать отлично. Но я заметил, что запуск cmd.exe из Пуск> Выполнить порождает 64-битный процесс, который затем запускает 64-битный процесс makecab.
Может кто-нибудь объяснить, почему 32-битный makecab может выдавать ошибку? Исполняемый файл существует как в C:\WINDOWS\system32
, так и в C:\WINDOWS\SysWOW64
.
Существует ли какой-либо способ, из 32-битного cmd.exe
пакетного сценария, который java.exe
порождает и запускается, для запуска 64-битной версии makecab.exe
(кроме копирования физического исполняемого файла из C:\WINDOWS\system32
в C:\WINDOWS\SysWOW64
)
Спасибо