Example #1
0
						out.on('close',function() {
							appfs.Mount(outf,function(vfs) {			
								console.log("opening appfs");
								//console.log(vfs.dirs);
								socket.emit("packageProgress",{text:"adjusting file offsets"});
				
								vfs.moveOffset(stats.size,function() {
									//we now have a completed package...
									//create exe.
									console.log("creating exe package");
									socket.emit("packageProgress",{text:"merging package into exe"});
				
									console.log('copy /b "'+exeFile+'"+"'+outf+'" "'+exeFile2+'"');
									child = exec('copy /b "'+exeFile+'"+"'+outf+'" "'+exeFile2+'"',function(error,stdout,sterr) {
										if (error) {
											console.log(error);
										} else {
											console.log(stdout);
											console.log(sterr);
											//clean up
											fs.unlink(outf);
											console.log("exe created" + exeFile);
											socket.emit("packageProgress",{text:"exe created: "+exeFile});
												
										}
									});
								});
							})
						});
Example #2
0
	}).then(function() {
		if (deskShell.defaultApp) {
			//running default app, so also check for updates.
			if (deskShell.env['checkForPlatformUpdates']) {
				var request = require("request");
				request(deskShell.env.platformUpdateVersionUrl, function(error, response, body) {
					if (error) return console.log("update failed:"+error);
					var lines = body.split("\n");
					fs.readFile(__dirname+path.sep+"installer-version.txt", 'utf8', function (err, data) {
						if (err) {
							//installer version not defined, you are probably running from a git checkout.
						} else {
							var lines2 = data.split("\n");
							console.log("checking if upgrade available:",lines[0].replace(/\r/, '')+">"+lines2[0]);
							if (upgradeNeeded(lines[0],lines2[0])) {
								console.log("upgrade available, launching updater.");
								console.log(path.normalize(deskShell.platformDir + "/" +deskShell.env.updaterPath));
								require('child_process').exec(path.normalize(deskShell.platformDir + path.sep +deskShell.env.updaterPath),function(error, stdout, stderr) {
									if (error) console.log("upgrade failed.");
								});
							} else {
								console.log("no upgrade available.");
							}
						}
					});
				});
			}
		}
		//file found.
		var reading = Q.defer();
		if (deskShell.env.appHandlers && deskShell.env.appHandlers[path.extname(deskShell.appFile)]) {
			console.log("handler file");
			deskShell.appLaunchFile = deskShell.appFile;
			var appHandler = deskShell.env.appHandlers[path.extname(deskShell.appFile)];
			deskShell.appFile = deskShell.installDir+"plugins"+path.sep+appHandler.app;
			deskShell.appDir = path.dirname(deskShell.appFile)+path.sep;
			
			console.log("launching handler:",deskShell.appFile);
			//ideally handlers would actually be a package file.
			deskShell.packageFile = false;
			deskShell.appfs = fs;
			fs.readFile(deskShell.appFile, 'utf8', function (err, data) {
				if (err) {
					return reading.reject(err);
				}
				try {
					deskShell.appDef = JSON.parse(data);
					deskShell.mainFile = deskShell.appDir + deskShell.appDef.main;
				} catch(e) {
					return reading.reject(e);
				}
				return reading.resolve();
			});
		} else {
			if (path.extname(deskShell.appFile) == ".appfs" || path.extname(deskShell.appFile) == ".exe") {
				console.log("package file");
				deskShell.packageFile = true;
				appfs.Mount(deskShell.appFile,function(vfs) {			
					deskShell.appfs = vfs;
					deskShell.appfs.readFile("app.desk", 'utf8', function (err, data) {
						if (err) {
							return reading.reject(err);
						}
						try {
							deskShell.appDef = JSON.parse(data);
							deskShell.mainFile = deskShell.appDef.main;
						} catch(e) {
							return reading.reject(e);
						}
						return reading.resolve();
					});
				});
			} else {
				deskShell.packageFile = false;
				deskShell.appfs = fs;
				fs.readFile(deskShell.appFile, 'utf8', function (err, data) {
					if (err) {
						return reading.reject(err);
					}
					try {
						deskShell.appDef = JSON.parse(data);
						deskShell.mainFile = deskShell.appDir + deskShell.appDef.main;
					} catch(e) {
						return reading.reject(e);
					}
					return reading.resolve();
				});
			}
		}
		return reading.promise;
	}).then(function() {
Example #3
0
							fs.unlink(appFolder+packagef,function() {
							appfs.Mount(appFolder+packagef,function(vfs) {
								switch(appInfo['package']) {
									case 'scramble':
										vfs.pipe = "deskshell       ";
									break;
									case 'fast':
										vfs.pipe = "none            ";
									break;
									default:
										vfs.pipe = "Standard        ";
									break;
								}
								var filepos=files.length;
								var addAnotherFile = function() {
									filepos--;
									if (filepos>-1) {
										//console.log(files[filepos].name);
										var reader = fs.createReadStream(files[filepos].path);
										var packageFile = path.relative(appFolder,files[filepos].path);
										var writepackageFile = packageFile.split("\\").join("/");
										var writer = vfs.createWriteStream(writepackageFile);
										writer.on('close',function() {
											socket.emit("packageProgress",{text:"added "+writepackageFile});
											addAnotherFile();
										});
										switch(appInfo['package']) {
											case "scramble":
												var b64encode = b64Streamer.Encoder();
												reader.pipe(b64encode);
												cryptoStreamer.encryptStream(b64encode,vfs.pipe).pipe(writer);
											break;
											case "fast":
												reader.pipe(writer);
											break;
											case "standard":
											default:
												var b64encode = b64Streamer.Encoder();
												reader.pipe(b64encode).pipe(writer);
											break;
										}
										
										
									} else {
										//check there is an app.desk
										if (!vfs.dirs['app.desk']) {
											//take desk file and add it as app.desk
											var reader = fs.createReadStream(appPackage);
											var writer = vfs.createWriteStream("app.desk");
											writer.on('close',function() {
												socket.emit("packageProgress",{text:"added app.desk"});
												vfs._writeFooter(function() {
													console.log("wrote footer");
													socket.emit("packageProgress",{text:"package created: "+packagef});	
												});
												
											});
											switch(appInfo['package']) {
												case "scramble":
													cryptoStreamer.encryptStream(reader,vfs.pipe).pipe(writer);
												break;
												case "fast":
													reader.pipe(writer);
												break;
												case "standard":
												default:
													var b64encode = b64Streamer.Encoder();
													reader.pipe(b64encode).pipe(writer);
												break;
											}
										} else {
											vfs._writeFooter(function() {
												console.log("wrote footer");
												socket.emit("packageProgress",{text:"package created: "+packagef});
												
											});
										}
									}
								}
								addAnotherFile();
							});
							});