jenkins/hudson: пакетные окна CMD не видны, когда ведомое устройство работает как служба Windows

Я запускаю Jenkins slave как службу Windows, которая затем запускает цепочку вызовов (например):

Slave.exe-> ant-> cmd batch-> notepad.exe

Проблема в том, что "notepad.exe" не отображается, я вижу его в диспетчере задач, но он не показывает его пользовательский интерфейс.

Платформа Windows - это Win Server 2008, и я настроил службу "Вход в систему как локальная системная учетная запись", отметив "Разрешить службе взаимодействовать с рабочим столом".

Есть идеи по этому поводу? большое спасибо

2 ответа

Я столкнулся с подобной проблемой, пытаясь запустить некоторые сценарии автоматизированного веб-тестирования сценариев (для которых требовался графический интерфейс).

Это трюк. Вам необходимо запустить подключение к удаленному рабочему столу, настроить его на запуск.exe после запуска подключения, ввести и сохранить информацию для аутентификации и сохранить подключение на диск.

Пусть Дженкинс отключит сохраненное RDP-соединение, и оно должно запустить графический интерфейс для вас.

Кроме того, если вы выполняете несколько команд Windows в jenkins, вам нужно, чтобы каждая команда была представлена ​​в виде отдельных элементов (если они возвращают код выхода.. например, если вы вызываете два файла.bat или что-то в этом роде)

Начиная с Windows Vista, все службы работают в отдельном сеансе (сеанс 0) и не могут нормально взаимодействовать напрямую с пользователем, даже если установлен параметр "Разрешить взаимодействию службы с рабочим столом". Другими словами, вы не должны этого делать. Вы не можете запустить slave.exe во время сеанса входа?

Однако в качестве меры по снижению обратной совместимости Windows должна обнаруживать, что служба представила пользовательский интерфейс, и предложить отобразить ее вам (на отдельном рабочем столе). Я не уверен, почему это не будет работать. Служба настроена для работы в качестве локальной системы?

Другие вопросы по тегам