|  |  | @@ -1113,7 +1113,28 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | , installcmd: ['MSIEXEC.exe', ['/i' | 
		
	
		
			
			|  |  |  | , path.normalize(downloadsdir + '/' + 'python-2.7.18.amd64.msi') | 
		
	
		
			
			|  |  |  | , 'ACCEPT=YES', '/passive']] | 
		
	
		
			
			|  |  |  | , preinstallsteps : function() { return Promise.resolve(true) } | 
		
	
		
			
			|  |  |  | , preinstallsteps: function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | console.log(self.shellcmd + ' preinstall steps') | 
		
	
		
			
			|  |  |  | console.log(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat' + ' ' + self.url + ' ' + downloadsdir + '/' + self.installer) | 
		
	
		
			
			|  |  |  | var steps = []; | 
		
	
		
			
			|  |  |  | steps.push( | 
		
	
		
			
			|  |  |  | function(){ | 
		
	
		
			
			|  |  |  | if (!existsSync(downloadsdir + '/' + self.installer)) { | 
		
	
		
			
			|  |  |  | console.log(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer]) | 
		
	
		
			
			|  |  |  | return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading ' + self.shellcmd  + ' please wait' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | console.log(self.installer + ' Already exits Download skipped.') | 
		
	
		
			
			|  |  |  | return Promise.resolve(true) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return any(steps) | 
		
	
		
			
			|  |  |  | // return any([any(steps), any(prompts)]) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , install : function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | var ifns = [self.installcmd] | 
		
	
	
		
			
			|  |  | @@ -1134,14 +1155,35 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | , { | 
		
	
		
			
			|  |  |  | shellcmd: 'code' | 
		
	
		
			
			|  |  |  | , optional : true | 
		
	
		
			
			|  |  |  | , url: 'https://vscode-update.azurewebsites.net/latest/win32-x64/stable' | 
		
	
		
			
			|  |  |  | , installer: 'vscode-win32-x64-latest-stable.exe' | 
		
	
		
			
			|  |  |  | , url: 'https://az764295.vo.msecnd.net/stable/c722ca6c7eed3d7987c0d5c3df5c45f6b15e77d1/VSCodeUserSetup-x64-1.65.2.exe' | 
		
	
		
			
			|  |  |  | , installer: 'VSCodeUserSetup-x64-1.65.2.exe' | 
		
	
		
			
			|  |  |  | , installcmd: ['cmd', ['/c', 'start', | 
		
	
		
			
			|  |  |  | '/WAIT', downloadsdir + '/' + 'Git-2.33.0.2-64-bit.exe' | 
		
	
		
			
			|  |  |  | '/WAIT', downloadsdir + '/' + 'VSCodeUserSetup-x64-1.65.2.exe' | 
		
	
		
			
			|  |  |  | , '/VERYSILENT' | 
		
	
		
			
			|  |  |  | // , '/MERGETASKS=!runcode' // This is required only for vscode... | 
		
	
		
			
			|  |  |  | ]] | 
		
	
		
			
			|  |  |  | , preinstallsteps : function() { return Promise.resolve(true) } | 
		
	
		
			
			|  |  |  | , preinstallsteps: function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | console.log(self.shellcmd + ' preinstall steps') | 
		
	
		
			
			|  |  |  | console.log(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat' + ' ' + self.url + ' ' + downloadsdir + '/' + self.installer) | 
		
	
		
			
			|  |  |  | var steps = []; | 
		
	
		
			
			|  |  |  | steps.push( | 
		
	
		
			
			|  |  |  | function(){ | 
		
	
		
			
			|  |  |  | if (!existsSync(downloadsdir + '/' + self.installer)) { | 
		
	
		
			
			|  |  |  | console.log(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer]) | 
		
	
		
			
			|  |  |  | return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading ' + self.shellcmd  + ' please wait' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | console.log(self.installer + ' Already exits Download skipped.') | 
		
	
		
			
			|  |  |  | return Promise.resolve(true) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return any(steps) | 
		
	
		
			
			|  |  |  | // return any([any(steps), any(prompts)]) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , install : function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | var ifns = [self.installcmd] |