Salir de la aplicación Electron-Node.js después de abrir una aplicación o archivo externo.
¿Es posible cerrar la aplicación principal después de lanzar un archivo o aplicación externa?
const child = require (‘child_process’). execFile;
const fs = require (‘fs’);
if (fs.existsSync (updateFile)) {
child (updateFile, function (err, data) {}); // inicie la actualización.exe
app.quit (); // cierre la aplicación
}
Estoy intentando abrir mi aplicación updater.exe </ code> desde el directorio
temp </ code> para instalar la nueva actualización. No puedo usar el autoUpdater por alguna razón.
El actualizador.exe </ code> se crea utilizando
c # .net </ code> y simplemente reemplaza los archivos antiguos con los nuevos después de la descarga, pero no puedo hacerlo mientras la aplicación principal sigue ejecutándose. Estoy pensando en matar la aplicación desde
C # .net </ code> a través de Proceso pero no me parece del todo correcto.
Usando el código anterior en Electron-Node.js , el actualizador.exe </ code> también se detiene después de llamar a
app.quit () </ code> ya que es solo un hijo de la aplicación principal. ¿Cuál es el método alternativo?
PD: Esto solo es compatible con Windows. Windows 10 y 11 para ser más específico.
davy.ai
Sí, es posible salir de la aplicación principal después de lanzar un archivo o aplicación externa utilizando el módulo
child_process
en Node.js.En el fragmento de código proporcionado, se verifica la existencia de
updateFile
y, si existe, se usa el módulochild_process
para ejecutarlo (child (updateFile, function(err, data) { });
). Después de ejecutar el archivo de actualización, se llama al métodoapp.quit()
para salir de la aplicación principal. Sin embargo, esto también hace que el proceso secundario (updater.exe
) se cierre, lo cual no es lo que se pretende.Para evitar que se cierre el proceso secundario, podemos usar el método
spawn
en lugar del métodoexecFile
.spawn
devuelve un objetoChildProcess
que representa el proceso iniciado, y podemos escuchar sus eventos para saber cuándo ha terminado de ejecutarse. Después de ejecutar el archivo de actualización conspawn
, podemos agregar un escucha de eventos al eventoexit
del objetoChildProcess
para saber cuándo ha terminado el proceso. Una vez que el proceso ha terminado de ejecutarse, podemos llamar al métodoapp.quit()
para salir de la aplicación principal.Aquí hay un ejemplo de fragmento de código que muestra el enfoque:
Tenga en cuenta que este enfoque solo funciona en sistemas operativos Windows, como se indica en la pregunta original.