diff options
Diffstat (limited to 'src/main/manaplus/manaApp/windows.ts')
-rw-r--r-- | src/main/manaplus/manaApp/windows.ts | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/main/manaplus/manaApp/windows.ts b/src/main/manaplus/manaApp/windows.ts index 92acb7f..832a140 100644 --- a/src/main/manaplus/manaApp/windows.ts +++ b/src/main/manaplus/manaApp/windows.ts @@ -4,11 +4,13 @@ import * as fs from 'fs-extra'; import { Status } from '../../status'; import {download, Progress as ProgressType} from '../../util/downloader'; import * as extract from 'extract-zip'; +import { getRequest } from '../../util/webrequest'; export class ManaPlusAppWindows implements ManaPlusApp { private path:string; public readonly startCommand:string; + versionRegEx:RegExp = /.*ManaPlus ([\d.]+) Windows.*/g; constructor(){ const ManaPath = app.getPath('userData')+"\\manaplus"; fs.existsSync(ManaPath) || fs.mkdirSync(ManaPath); @@ -21,7 +23,19 @@ export class ManaPlusAppWindows implements ManaPlusApp { return this.path+"\\Mana\\"; } getVersion(): Promise<string> { - throw new Error("Not Implemented yet"); + return new Promise((res, rej) => { + let output:string; + const child = require('child_process').execFile(this.startCommand, ['-v'], function(err:Error, data:any) { + output = data.toString(); + }); + child.on('close', ()=>{ + output = output.replace(this.versionRegEx, "$1"); + res(output); + }); + child.on('error', ()=>{ + rej(new Error("Version check failed")); + }); + }); } isInstalled(): boolean { return fs.existsSync(this.path+"\\Mana\\manaplus.exe"); @@ -32,20 +46,27 @@ export class ManaPlusAppWindows implements ManaPlusApp { // Get Update URL Status.setProgress(500); Status.setActivity("Fetching Download URL"); - //// TODO: Fetch update url + let downloadURL; + try { + let versions = await getRequest("https://tmw2.org/manalauncher/versions.json?"+Date.now()); + downloadURL = versions.windows64.file; + } catch (e){ + console.log(e); + throw new Error("Download Url fetching error"); + } Status.setProgress(-1); - const downloadURL = 'https://[URL]/Mana.zip'; const updateDestination:string = `${app.getPath('userData')}\\temp\\update.zip`; try { await download(downloadURL, updateDestination, (state:ProgressType) => { Status.setProgress(Math.floor(state.percent*100)); - Status.setActivity(`Downloading ManaPlus... ${state.speed}`); + const speed = Math.floor(Math.floor(state.speed)/1024); + Status.setActivity(`Downloading ManaPlus... ${speed} KiB/s`); console.log(state); }); } catch (e){ console.log(e); - + throw new Error("Download error"); } Status.setProgress(500); // Backup old files @@ -95,7 +116,17 @@ export class ManaPlusAppWindows implements ManaPlusApp { return 0; } - updateAvailible(): Promise<{ isNewVersion: boolean; newestVersion: string; }> { - throw new Error("Method not implemented."); + async updateAvailable(): Promise<{ isNewVersion: boolean; newestVersion: string; }> { + try { + let versions = await getRequest("https://tmw2.org/manalauncher/versions.json?"+Date.now()); + let currect_version = await this.isInstalled ? await this.getVersion(): "-"; + return { + isNewVersion:currect_version.indexOf(versions.windows64.version) === -1, + newestVersion:versions.windows64.version + }; + }catch (e){ + throw e; + } + } } |