2

我正在尝试使用 Python 脚本在 Azure DevOps 中运行 National Instruments TestStand序列分析器作为构建的一部分。代理作为服务运行。

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) 并将类似的条目写入事件日志。

不需要用户交互:通常对话框在分析完成时打开和关闭。我在寻找它创建的退出代码和报告文件。有没有办法让它工作?

4

1 回答 1

1

这可以通过以交互方式而不是作为服务运行代理来完成。似乎交互式运行的唯一不利因素是需要自动登录和相关的安全风险。可以在此处找到有关服务与交互的更多信息。

于 2020-01-10T14:00:26.497 回答