1

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

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

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

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

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

2 ответа2

1

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

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

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .