Отображение пользовательского интерфейса из TFS Team Build - PullRequest
2 голосов
/ 03 августа 2011

В моей Team Build мне нужно запустить приложение, отображающее пользовательский интерфейс. Это приложение настроено на работу без ввода данных пользователем, если мы запустим его с соответствующим параметром командной строки.

Когда я пытаюсь запустить его локально, он запускается без ошибок, но если я запускаю его из Team Build, пользовательский интерфейс никогда не отображается, а процесс просто зависает. Я могу только представить, что это происходит, потому что служба TFSBuildServiceHost работает от имени конкретного пользователя. Проведя небольшое исследование, я обнаружил, что службы, не работающие в качестве локальной учетной записи службы, не могут отображать пользовательский интерфейс.

Имея это в виду, я изменил свой рабочий процесс, добавив в него действие InvokeProcess, вызвав PsExec и запустив мое приложение с параметрами -i и -s. Идея заключалась в том, что, добавив параметр -s, он сможет отображать пользовательский интерфейс. К сожалению, это не сработало. Если я добавлю параметр -h (Запускает исполняемый файл с его повышенным токеном), я получаю странное всплывающее окно из Interactive Service Detection, спрашивающее, хочу ли я показать сообщение, которое пытается быть отправленным.

Есть ли способ всегда принимать отправляемое сообщение? Кто-нибудь знает, как запустить приложение, отображающее пользовательский интерфейс из Team Build?

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Вам необходимо настроить службу сборки для работы в интерактивном режиме.Откройте консоль администрирования TFS, выберите «Настройка сборки», нажмите «Свойства» на BuildService и выберите «Запустить службу сборки как: Интерактивный процесс»Конечно, вам нужно оставаться на этой машине в течение всего времени.

0 голосов
/ 04 августа 2011

Посмотрите на эту тему: Как служба Windows может выполнить приложение с графическим интерфейсом? Короче говоря, вам нужно перечислить активные сеансы, используя WTSEnumerateSessions , найти сеанс консоли и создать процесс под этим пользователем .

...