summaryrefslogtreecommitdiff
path: root/src/main/manaplus/manaApp/windows.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/manaplus/manaApp/windows.ts')
-rw-r--r--src/main/manaplus/manaApp/windows.ts45
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;
+ }
+
}
}