Search code examples
.netwindows-servicesinteractiverelease-managementms-release-management

Microsoft Release Manager template with Interactive Process


We're currently using Release Management 2013 (Update 2) to perform our deployment.

We've encountered a problem where one of the steps requires a 3rd party GUI application to be executed on the target machine to perform configuration. We already have the ability to automate the UI however it fails to run from with Release Management because it needs to be interactive which is not possible when launched from the Microsoft Deployment Agent service that is running as our RMSERVICE domain user.

Launching the GUI application is performed indirectly through a custom .NET console application that we wrote:

Release Management --> [console application] --> [UI application]

The console application starts the UI application with typical Process.Start() however we encounter the error:

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.

After reading many postings about services and sessions I now understand the problem such as http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite However the service in question is running as System account.

However I'm still don't understand if what we want is possible, and if so, how to achieve them:

Launch a GUI application as an interactive process from a service using the same domain user (and automatically logging in if required)


Solution

  • I've tried various approaches to solve this kind of issue before and I've never hit on one that actually works.

    The bottom line is that this is not intended to run interactive processes.

    If you wanted to do something incredibly convoluted and crazy, you could install a test agent on the machine, create an automated "test" that starts your application, and then have RM kick off the automated test that runs in an interactive process. But that's Rube Goldberg-level insanity.