Fixed installer issues

- Moved app.asar extraction before BetterDiscord directory mv
- Fixed issue with errors being thrown by installer when emote files did
  not exist in library preferences directory
This commit is contained in:
jzanutto 2016-02-13 19:46:18 -05:00
parent 4cab5e6067
commit 6f3026fff5
1 changed files with 120 additions and 104 deletions

202
NodeInstaller/index.js Normal file → Executable file
View File

@ -38,14 +38,14 @@ function install() {
if (typeof _discordPath == 'undefined') { if (typeof _discordPath == 'undefined') {
var _os = process.platform; var _os = process.platform;
if (_os == "win32") { if (_os == "win32") {
_importSplice = 89; _importSplice = 89;
_functionCallSplice = 497; _functionCallSplice = 497;
_functionSplice = 601; _functionSplice = 601;
_discordPath = process.env.LOCALAPPDATA + "/Discord/app-"+dver+"/resources"; _discordPath = process.env.LOCALAPPDATA + "/Discord/app-"+dver+"/resources";
} else if (_os == "darwin") { } else if (_os == "darwin") {
_importSplice = 67; _importSplice = 67;
_functionCallSplice = 446; _functionCallSplice = 446;
_functionSplice = 547; _functionSplice = 547;
_discordPath = "/Applications/Discord.app/Contents/Resources" // Defaults to Applications directory _discordPath = "/Applications/Discord.app/Contents/Resources" // Defaults to Applications directory
} }
} }
@ -68,12 +68,6 @@ function install() {
console.log("Deleted " + _discordPath + "/node_modules/BetterDiscord" + " folder."); console.log("Deleted " + _discordPath + "/node_modules/BetterDiscord" + " folder.");
} }
console.log("Copying BetterDiscord");
fs.mkdirSync(_discordPath + "/node_modules/BetterDiscord");
wrench.copyDirSyncRecursive(__dirname + "/BetterDiscord/", _discordPath + "/node_modules/BetterDiscord/", {forceDelete: true});
console.log("Looking for app archive"); console.log("Looking for app archive");
if(fs.existsSync(_discordPath + _appArchive)) { if(fs.existsSync(_discordPath + _appArchive)) {
console.log("App archive found at: " + _discordPath + _appArchive); console.log("App archive found at: " + _discordPath + _appArchive);
@ -83,10 +77,14 @@ function install() {
} }
console.log("Extracting app archive"); console.log("Extracting app archive");
asar.extractAll(_discordPath + _appArchive, _discordPath + _appFolder); asar.extractAll(_discordPath + _appArchive, _discordPath + _appFolder);
console.log("Copying BetterDiscord");
fs.mkdirSync(_discordPath + "/node_modules/BetterDiscord");
wrench.copyDirSyncRecursive(__dirname + "/BetterDiscord/", _discordPath + _appFolder + "/node_modules/BetterDiscord/", {forceDelete: true});
if(!fs.existsSync("splice")) { if(!fs.existsSync("splice")) {
console.log("Missing splice file"); console.log("Missing splice file");
process.exit(); process.exit();
@ -95,98 +93,116 @@ function install() {
var splice = fs.readFileSync("splice"); var splice = fs.readFileSync("splice");
fs.exists(_discordPath + _appFolder, function(exists) { fs.exists(_discordPath + _appFolder, function(exists) {
if(exists) { if(exists) {
console.log("Extracted to: " + _discordPath + _appFolder); console.log("Extracted to: " + _discordPath + _appFolder);
console.log("Injecting index.js"); console.log("Injecting index.js");
var data = fs.readFileSync(_discordPath + _index).toString().split("\n"); var data = fs.readFileSync(_discordPath + _index).toString().split("\n");
data.splice(_importSplice, 0, 'var _betterDiscord = require(\'betterdiscord\');\n'); data.splice(_importSplice, 0, 'var _betterDiscord = require(\'betterdiscord\');\n');
data.splice(_functionCallSplice, 0, splice); data.splice(_functionCallSplice, 0, splice);
fs.writeFile(_discordPath + _index, data.join("\n"), function(err) { fs.writeFile(_discordPath + _index, data.join("\n"), function(err) {
if(err) return console.log(err); if(err) return console.log(err);
console.log("Injected index.js"); console.log("Injected index.js");
console.log("Deleting old cache files"); console.log("Deleting old cache files");
var counter = 0; var counter = 0;
var _prefsPath = '/Library/Preferences/BetterDiscord/';
fs.exists(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_twitch_global.json', (exists) => { var emotes_twitch_global = 'emotes_twitch_global.json';
console.log("Deleting emotes_twitch_global.json") fs.exists(process.env.HOME + _prefsPath + emotes_twitch_global, (exists) => {
fs.unlink(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_twitch_global.json', (err) => { if (exists) {
if(err) throw err; console.log("Deleting " + emotes_twitch_global);
console.log("Deleted emotes_twitch_global.json"); fs.unlinkSync(process.env.HOME + _prefsPath + emotes_twitch_global, (err) => {
counter++; if(err) throw err;
finished(); });
}); console.log("Deleted " + emotes_twitch_global);
}); }
counter++;
finished();
fs.exists(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_twitch_subscriber.json', (exists) => { });
console.log("Deleting emotes_twitch_subscriber.json")
fs.unlink(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_twitch_subscriber.json', (err) => {
if(err) throw err;
console.log("Deleted emotes_twitch_subscriber.json");
counter++;
finished();
});
});
fs.exists(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_bttv.json', (exists) => { var emotes_twitch_subscriber = 'emotes_twitch_subscriber.json';
console.log("Deleting emotes_bttv.json") fs.exists(process.env.HOME + _prefsPath + emotes_twitch_subscriber, (exists) => {
fs.unlink(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_bttv.json', (err) => { if (exists) {
if(err) throw err; console.log("Deleting " + emotes_twitch_subscriber);
console.log("Deleted emotes_bttv.json"); fs.unlinkSync(process.env.HOME + _prefsPath + emotes_twitch_subscriber, (err) => {
counter++; if(err) throw err;
finished(); });
}); console.log("Deleted " + emotes_twitch_subscriber);
}); }
counter++;
finished();
});
fs.exists(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_bttv_2.json', (exists) => { var emotes_bttv = 'emotes_bttv.json';
console.log("Deleting emotes_bttv_2.json") fs.exists(process.env.HOME + _prefsPath + emotes_bttv, (exists) => {
fs.unlink(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_bttv_2.json', (err) => { if (exists) {
if(err) throw err; console.log("Deleting " + emotes_bttv);
console.log("Deleted emotes_bttv_2.json"); fs.unlinkSync(process.env.HOME + _prefsPath + emotes_bttv, (err) => {
counter++; if(err) throw err;
finished(); });
}); console.log("Deleted " + emotes_bttv);
}); }
counter++;
finished();
});
fs.exists(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_ffz.json', (exists) => { var emotes_bttv_2 = "emotes_bttv_2.json";
console.log("Deleting emotes_ffz.json") fs.exists(process.env.HOME + _prefsPath + emotes_bttv_2, (exists) => {
fs.unlink(process.env.HOME + '/Library/Preferences/BetterDiscord/emotes_ffz.json', (err) => { if (exists) {
if(err) throw err; console.log("Deleting " + emotes_bttv_2);
console.log("Deleted emotes_ffz.json"); fs.unlinkSync(process.env.HOME + _prefsPath + emotes_bttv_2, (err) => {
counter++; if(err) throw err;
finished(); });
}); console.log("Deleted " + emotes_bttv_2);
}); }
counter++;
finished();
});
fs.exists(process.env.HOME + '/Library/Preferences/BetterDiscord/user.json', (exists) => { var emotes_ffz = "emotes_ffz.json";
console.log("Deleting user.json") fs.exists(process.env.HOME + _prefsPath + emotes_ffz, (exists) => {
fs.unlink(process.env.HOME + '/Library/Preferences/BetterDiscord/user.json', (err) => { if (exists) {
if(err) throw err; console.log("Deleting " + emotes_ffz);
console.log("Deleted user.json"); fs.unlinkSync(process.env.HOME + _prefsPath + emotes_ffz, (err) => {
counter++; if(err) throw err;
finished(); });
}); console.log("Deleted " + emotes_ffz);
}); }
counter++;
finished();
function finished() { });
if(counter => 6) { var user_pref = "user.json";
console.log("Looks like we're done here"); fs.exists(process.env.HOME + _prefsPath + user_pref, (exists) => {
process.exit(); if (exists) {
} console.log("Deleting " + user_pref);
} fs.unlinkSync(process.env.HOME + _prefsPath + user_pref, (err) => {
if(err) throw err;
});
console.log("Deleted " + user_pref);
}
counter++;
finished();
});
function finished() {
if(counter => 6) {
console.log("Looks like we're done here");
process.exit();
}
}
});
}); } else {
console.log("Something went wrong. Please try again.");
} else { process.exit();
console.log("Something went wrong, rerun."); }
process.exit(); });
}
});
} else { } else {
console.log("Discord resources not found at: " + _discordPath); console.log("Discord resources not found at: " + _discordPath);