Fixed server update on windows.

Ylian Saint-Hilaire committed Jul 17, 2019 at 13:07 UTC 7fec856c9d62fe6ec250741ed19b91f38e23a922
2 files changed +38 -3
meshcentral.js
+37 -2
@@ -136,7 +136,23 @@ function CreateMeshCentralServer(config, args) {
136 var svc = new obj.service({ name: 'MeshCentral', description: 'MeshCentral Remote Management Server', script: obj.path.join(__dirname, 'winservice.js'), env: env, wait: 2, grow: 0.5 });
137 svc.on('install', function () { console.log('MeshCentral service installed.'); svc.start(); });
138 svc.on('uninstall', function () { console.log('MeshCentral service uninstalled.'); process.exit(); });
139 - svc.on('start', function () { console.log('MeshCentral service started.'); process.exit(); });
139 + svc.on('start', function () {
140 + console.log('MeshCentral service started.');
141 + // Attempt to copy the demon folder to "meshcentral-data\win-deamon".
142 + try {
143 + var sourceDaemonFolder = obj.path.join(__dirname, 'daemon');
144 + var targetDaemonFolder = obj.path.join(obj.datapath, 'win-deamon');
145 + if (!obj.fs.existsSync(targetDaemonFolder)) { obj.fs.mkdirSync(targetDaemonFolder); }
146 + var files = obj.fs.readdirSync(sourceDaemonFolder);
147 + for (var i in files) {
148 + if (files[i].endsWith('.log') == false) {
149 + var bin = obj.fs.readFileSync(obj.path.join(sourceDaemonFolder, files[i]), 'binary');
150 + obj.fs.writeFileSync(obj.path.join(targetDaemonFolder, files[i]), bin, 'binary');
151 + }
152 + }
153 + } catch (e) { console.error(e); }
154 + process.exit();
155 + });
156 svc.on('stop', function () { console.log('MeshCentral service stopped.'); if (obj.args.stop) { process.exit(); } if (obj.args.restart) { console.log('Holding 5 seconds...'); setTimeout(function () { svc.start(); }, 5000); } });
157 svc.on('alreadyinstalled', function () { console.log('MeshCentral service already installed.'); process.exit(); });
158 svc.on('invalidinstallation', function () { console.log('Invalid MeshCentral service installation.'); process.exit(); });
@@ -184,7 +200,26 @@ function CreateMeshCentralServer(config, args) {
200 xxprocess.data = '';
201 xxprocess.stdout.on('data', function (data) { xxprocess.data += data; });
202 xxprocess.stderr.on('data', function (data) { xxprocess.data += data; });
187 - xxprocess.on('close', function (code) { console.log('Update completed...'); setTimeout(function () { obj.launchChildServer(startLine); }, 1000); });
203 + xxprocess.on('close', function (code) {
204 + console.log('Update completed...');
205 + if (require('os').platform() == 'win32') {
206 + // On Windows, attempt to copy "meshcentral-data\win-deamon" folder back into "deamon".
207 + // This folder will have been removed after update and needs to be added back.
208 + try {
209 + var sourceDaemonFolder = obj.path.join(obj.datapath, 'win-deamon');
210 + var targetDaemonFolder = obj.path.join(__dirname, 'daemon');
211 + if (!obj.fs.existsSync(targetDaemonFolder)) { obj.fs.mkdirSync(targetDaemonFolder); }
212 + var files = obj.fs.readdirSync(sourceDaemonFolder);
213 + for (var i in files) {
214 + if (files[i].endsWith('.log') == false) {
215 + var bin = obj.fs.readFileSync(obj.path.join(sourceDaemonFolder, files[i]), 'binary');
216 + obj.fs.writeFileSync(obj.path.join(targetDaemonFolder, files[i]), bin, 'binary');
217 + }
218 + }
219 + } catch (e) { console.error(e); }
220 + }
221 + setTimeout(function () { obj.launchChildServer(startLine); }, 1000);
222 + });
223 } else {
224 if (error != null) {
225 // This is an un-expected restart
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.3.7-w",
3 + "version": "0.3.7-x",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",