KBEC-00338 How to start an application in a step and keep it running after the step completes?

Article ID:360033190331
1 minute readKnowledge base

Problem:

You want to start an application in a step and keep it running after the step completes. However when you call the application directly (for example, notepad.exe), the step does not complete until the application exits.

Solution:

Use the following code to start the application and set the step shell to "ec-perl".

use ElectricCommander;
use Win32;
use Win32::Process;
$ApplicationName = 'C:\\Windows\\System32\\notepad.exe';
$CommandLine = 'notepad';

$CreateOptions = NORMAL_PRIORITY_CLASS | DETACHED_PROCESS;
Win32::Process::Create($ProcessObj,$ApplicationName,$CommandLine,
    0, # Don't inherit.
    $CreateOptions,
    ".") # current dir.
    or die print_error();

print "$ApplicationName is still running.\n";

sub print_error {
    print Win32::FormatMessage( Win32::GetLastError() );
}

This example starts notepad.exe and it continues running while the step completes.

NOTE:

You may need to start the agent in interactive mode if you want to start an application with GUI. Please refer to this article for more details.

Applies To:

All ElectricCommander and CloudBees CD (CloudBees Flow) agents in Windows platform.