import Unix from './Unix' import Path from 'path' import fs from 'fs' import daemon from './linux_start' import Cp from 'child_process' class LinuxInstall extends Unix{ generateIconAsync(conf, installConfig){ // Esta función es Asíncrona var dir=installConfig.path var task= new core.VW.Task() if(conf.shorcuts===false){ return } if(conf.icon){ if(typeof conf.icon == "string"){ conf.icon= dir + "/" + conf.icon } else{ if(conf.icon.icon){ conf.icon.icon= dir + "/" + conf.icon.icon } if(conf.icon.winicon){ conf.icon.winicon= dir + "\\" + conf.icon.winicon } } } // Crear la aplicación en el menú ... if(conf.icon) conf.icon.register= true xdgutils= require("xdg-utils") xdgutils.registerApplication(conf, function(err){ if(err){ task.exception=err return task.finish() } xdgutils.registerToDesktop(conf, function(err){ if(err){ task.exception=err //return task.finish() } task.finish() /* fs.chmod(conf.exec, '755', function(err){ if(err){ task.exception=err return task.finish() } task.finish() }); */ }); }); return task } executeChild(file, args){ var task= new core.VW.Task(), ers, data, er ers=[] data=[] var p= Cp.spawn(file, args) p.on("exit", function(){ task.result= { stdout: Buffer.concat(data).toString(), stderr: Buffer.concat(ers).toString() } task.finish() }) p.stderr.on("data", function(b){ ers.push(b) }) p.stdout.on("data", function(b){ data.push(b) }) p.on("error", function(e){ task.exception= e task.finish() }) return task } async generateAutoStart(conf, installConfig){ var content= daemon.initScript(conf) var name= "vox."+conf.id var file= Path.join("/etc/init.d/", name) if(fs.existsSync(file)) fs.unlinkSync(file) fs.writeFileSync(file, content) fs.chmodSync(file, '755') // Ahora ejecutar update-rc.d o insserv para que se ejecute al inicio del sistema ... var result,er try{ result= await this.executeChild("insserv", [name]) if(result.stderr) throw new core.System.Exception("El comando insserv falló: " +result.stderr) } catch(e){ er=e } if(er){ result= await this.executeChild("update-rc.d", [name, "defaults"]) if(result.stderr) throw new core.System.Exception((er.message || er.toString()) + " El comando update-rc.d falló: " +result.stderr) } } } export default LinuxInstall