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

1

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

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

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

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

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

Michael Lin
источник

Ответы:

1

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

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

Harry Johnston
источник
Большое спасибо за ответ. Да, я настраиваю службу как «Использовать пользователя локальной системы». Так что я не могу использовать «службу Windows» для запуска подчиненного Jenkins, верно? Жаль, потому что это очень удобно ...
Michael Lin
Для дальнейшего использования в Windows 7 и более поздних версиях служба обнаружения интерактивных служб (UI0detect) не настроена для запуска по умолчанию. Если вам это нужно, вы можете запустить службу вручную или изменить конфигурацию так, чтобы она запускалась автоматически.
Harry Johnston
1

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

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

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

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

brakertech
источник