|  |  | @@ -99,7 +99,7 @@ var isRunningElevated = ()=>{ | 
		
	
		
			
			|  |  |  | return nodeShellExec( "fsutil", ["dirty", "query", "C:"], { | 
		
	
		
			
			|  |  |  | inherit : true | 
		
	
		
			
			|  |  |  | // , shell: true | 
		
	
		
			
			|  |  |  | // , stdio: 'ignore' | 
		
	
		
			
			|  |  |  | , stdio: 'ignore' | 
		
	
		
			
			|  |  |  | , env: process.env | 
		
	
		
			
			|  |  |  | , title : `check privileged execution mode using "fsutil dirty query C:"` | 
		
	
		
			
			|  |  |  | }).then((exitcode)=>{ | 
		
	
	
		
			
			|  |  | @@ -274,7 +274,7 @@ var __runcmd = function(label){ | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | .catch(()=>{ | 
		
	
		
			
			|  |  |  | console.log('Not Elevated Requesting Elevated Privileges'); | 
		
	
		
			
			|  |  |  | console.log('Requesting Elevated Privileges'); | 
		
	
		
			
			|  |  |  | // Wait for the runas to complete before we read it. | 
		
	
		
			
			|  |  |  | try { | 
		
	
		
			
			|  |  |  | fs.unlinkSync('run.done') | 
		
	
	
		
			
			|  |  | @@ -300,7 +300,7 @@ var __runcmd = function(label){ | 
		
	
		
			
			|  |  |  | // runas returned. | 
		
	
		
			
			|  |  |  | var runaslog = JSON.parse('[ { "success" : true, "result" : "runas Log" }' + fs.readFileSync('run.log', { flags : 'a+'}) + ']'); | 
		
	
		
			
			|  |  |  | runaslog.forEach((logEntry)=>{ | 
		
	
		
			
			|  |  |  | logEntry.succes ? (console.log(['success :' + logEntry.result]), console.log((logEntry.messages || []).join(' '))) : console.error(['error :' + logEntry.result]), console.error((logEntry.messages || []).join(' ')) | 
		
	
		
			
			|  |  |  | logEntry.success ? (console.log(['success :' + logEntry.result]), console.log((logEntry.messages || []).join(' '))) : console.error(['error :' + logEntry.result]), console.error((logEntry.messages || []).join(' ')) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | .catch(err => console.error('Elevation failed : ' + err)); | 
		
	
	
		
			
			|  |  | @@ -687,24 +687,28 @@ function nodeShellExec() { | 
		
	
		
			
			|  |  |  | var p = new Promise(function(resolve, reject){ | 
		
	
		
			
			|  |  |  | if(!opts.detached) { | 
		
	
		
			
			|  |  |  | var messages = []; // PB : TODO -- Explore stream for Task level  aggregation to prevent interleaved messages from multiple tasks... | 
		
	
		
			
			|  |  |  | var succes = true; | 
		
	
		
			
			|  |  |  | // use child.stdout.setEncoding('utf8'); if you want text chunks | 
		
	
		
			
			|  |  |  | child.stdout.setEncoding('utf8'); | 
		
	
		
			
			|  |  |  | child.stderr.setEncoding('utf8'); | 
		
	
		
			
			|  |  |  | child.stdout.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | 
		
	
		
			
			|  |  |  | child.on('error', (chunk) => { succes = false; messages.push(chunk); /*console.error(chunk)*/ }); | 
		
	
		
			
			|  |  |  | child.stderr.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | 
		
	
		
			
			|  |  |  | // child.stderr.pipe(process.stderr); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | var success = true; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if(opts.stdio !== 'ignore') { | 
		
	
		
			
			|  |  |  | child.stdout.setEncoding('utf8'); | 
		
	
		
			
			|  |  |  | child.stderr.setEncoding('utf8'); | 
		
	
		
			
			|  |  |  | child.stdout.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | 
		
	
		
			
			|  |  |  | child.on('error', (chunk) => { success = false; messages.push(chunk); /*console.error(chunk)*/ }); | 
		
	
		
			
			|  |  |  | child.stderr.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | child.on('close', (code) => { | 
		
	
		
			
			|  |  |  | if(code !== 0) succes = false; | 
		
	
		
			
			|  |  |  | if(opts.runas){ | 
		
	
		
			
			|  |  |  | fs.writeFileSync('run.log', ', ' + JSON.stringify({ result: ` ${opts.title} exited with code ${code}`, messages : messages }), {'flag':'a+'} ) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | succes ? console.log(['success : ' + ` ${opts.title} exited with code ${code}`]) : console.error([`error : ${opts.title} exited with code ${code}`]) | 
		
	
		
			
			|  |  |  | // console.log( messages.join('') ) | 
		
	
		
			
			|  |  |  | process.stdout.write( messages.join('') ) | 
		
	
		
			
			|  |  |  | if(+code !== 0) success = false; | 
		
	
		
			
			|  |  |  | if(opts.stdio !== 'ignore') { | 
		
	
		
			
			|  |  |  | if(opts.runas){ | 
		
	
		
			
			|  |  |  | var logEntry = { result: `${opts.title} exited with code ${code}`, messages : messages } | 
		
	
		
			
			|  |  |  | success ? logEntry.success = true : null; | 
		
	
		
			
			|  |  |  | fs.writeFileSync('run.log', ', ' + JSON.stringify(logEntry), {'flag':'a+'} ) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | success ? console.log(['success : ' + ` ${opts.title} exited with code ${code}`]) : console.error([`error : ${opts.title} exited with code ${code}`]) | 
		
	
		
			
			|  |  |  | // console.log( messages.join('') ) | 
		
	
		
			
			|  |  |  | process.stdout.write( messages.join('') ) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if(code !== 0) return reject(code) | 
		
	
		
			
			|  |  |  | resolve(true) |