Cómo ejecutar un archivo .exe (aplicación del sistema) con Electron Framework

Cómo ejecutar un archivo .exe (aplicación del sistema) con Electron Framework

Para ejecutar una aplicación externa desde Electron, usaremos el módulo child_process de Node.js. De child_process podrás usar la función execFile, cuya funcionalidad es similar a child_process.exec, exceptuando que no ejecuta la aplicación por medio de un shell (cmd.exe) sino directamente desde el archivo. Esto lo hace más rápido y ligero que child_process.exec.

Ejecutando un programa

Para iniciar un ejecutable, solamente necesitarás el directorio donde este se encuentra. Por ejemplo, el siguiente código debería iniciar Mozilla Firefox (el directorio podría variar de acuerdo al directorio de instalación en cada computador).

Nota que en el siguiente ejemplo, usamos el slash doble invertido (\\), lo que simplemente hace es escapar el slash invertido (\) usado en la plataforma de Windows.

var child = require('child_process').execFile;
var executablePath = "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe";

child(executablePath, function(err, data) {
    if(err){
       console.error(err);
       return;
    }
 
    console.log(data.toString());
});

Ejecutando un programa con argumentos

Si la ejecución del programa requiere parametros, usando execFile podrás enviarlos sin ningun problema. Declara un array de cadenas de texto, en este cada item es un argumento.

El siguiente ejemplo muestra como iniciar Google Chrome en módo incognito por medio del parámetro bandera --incognito:

var child = require('child_process').execFile;
var executablePath = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe";
var parameters = ["--incognito"];

child(executablePath, parameters, function(err, data) {
     console.log(err)
     console.log(data.toString());
});

Notas

  • A menos que el ejecutable que quieras abrir este localizado en el mismo directorio de tu proyecto, siempre necesitarás proveer el directorio completo.

Descubre más acerca del módulo child_process en la documentación oficial de Node.js aquí.

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable