我们目前正在使用 Release Management 2013(更新 2)来执行我们的部署。
我们遇到了一个问题,其中一个步骤需要在目标机器上执行第 3 方 GUI 应用程序才能执行配置。我们已经有能力自动化 UI,但是它无法从 Release Management 运行,因为它需要是交互式的,当从作为我们的 RMSERVICE 域用户运行的 Microsoft 部署代理服务启动时这是不可能的。
启动 GUI 应用程序是通过我们编写的自定义 .NET 控制台应用程序间接执行的:
发布管理 --> [控制台应用程序] --> [UI 应用程序]
控制台应用程序使用典型的 Process.Start() 启动 UI 应用程序,但是我们遇到了错误:
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.
在阅读了许多关于服务和会话的帖子后,我现在理解了这个问题,例如 http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite 但是有问题的服务是作为系统帐户运行。
但是我仍然不明白我们想要的是否可能,如果是的话,如何实现它们:
使用同一域用户从服务启动 GUI 应用程序作为交互式进程(并在需要时自动登录)