Azure DevOps агент запускает приложение с диалоговым окном - PullRequest
2 голосов
/ 10 января 2020

Я пытаюсь запустить National Instruments TestStand Sequence Analyzer как часть сборки в Azure DevOps с использованием сценария Python. Агент работает как служба.

import subprocess
command = '"%teststand%\Bin\AnalyzerApp.exe" MyAnalyzerProject.tsaproj /analyze /report /save /quit'
exit_code = subprocess.call(command, shell=True)
print(exit_code) # returns the exit status

Он работает, когда я запускаю его вручную, но не удается, когда агент пытается запустить его:

Unhandled Exception: System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.
   at System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean showHelp)
   at AnalyzerApp.e.a(String A_0, String A_1)
   at NationalInstruments.TestStand.Utility.LaunchTestStandApplicationInNewDomain.HandleLaunchProtectedException(Exception e, String applicationName, DisplayErrorMessageDelegate displayErrorMessage)
   at NationalInstruments.TestStand.Utility.LaunchTestStandApplicationInNewDomain.LaunchProtectedReturnCode(MainEntryPointDelegateWithArgsReturnCode entryPoint, String[] args, String applicationName, DisplayErrorMessageDelegate displayErrorMessage, Boolean parseArgs)
   at AnalyzerApp.e.b(String[] A_0)

Сначала я попытался запустить его с помощью cmd, но в зависимости от пользователя службы агента он либо застревает, либо выдает ошибку -532462766 (0xE0434352) и записывает аналогичную запись в журнал событий.

Взаимодействие с пользователем не требуется: обычно диалоговое окно открывается и закрывается при анализе сделанный. Я после кода выхода и файла отчета, который он создает. Есть ли способ заставить это работать?

1 Ответ

1 голос
/ 10 января 2020

Это можно сделать, запустив агент в интерактивном режиме, а не в качестве службы. Кажется, что единственным недостатком интерактивной работы является необходимость автоматического входа в систему и связанная с этим угроза безопасности. Подробнее об услуге и интерактиве можно узнать здесь .

...