Updated self update for Temporary mode on Windows

Bryan Roe committed Jun 3, 2021 at 18:05 UTC e58d37d76f3ed6cef72ca5a4cc9254fe5b97e3ab
1 file changed +19 -2
agents/recoverycore.js
+19 -2
@@ -434,11 +434,28 @@ function windows_execve(name, agentfilename, sessionid) {
434 if (name == null)
435 {
436 // We can continue with self update for Temp/Console Mode on Windows
437 - var db = process.execPath.split('.exe'); db.pop(); db = db.join('.exe') + '.db';
437 + var db = null;
438 var update = cwd + agentfilename + '.update.exe';
439 var updatedb = cwd + agentfilename + '.update.db';
440 var parms = windows_getCommandLine(); parms.shift();
441 - var tmp = '/C copy "' + db + '" "' + updatedb + '" & "' + update + '" ' + parms.join(' ') + ' & move "' + update + '" "' + process.execPath + '" & move "' + updatedb + '" "' + db + '"';
441 +
442 + var updatesource = parms.find(function (v) { return (v.startsWith('--updateSourcePath=')); });
443 + if (updatesource == null)
444 + {
445 + parms.push('--updateSourcePath="' + cwd + agentfilename + '"');
446 + updatesource = (cwd + agentfilename).split('.exe'); updatesource.pop(); updatesource = updatesource.join('.exe');
447 + db = updatesource + '.db';
448 + updatesource = (' & move "' + updatedb + '" "' + db + '"') + (' & erase "' + updatedb + '"');
449 + }
450 + else
451 + {
452 + updatesource = updatesource.substring(19).split('.exe');
453 + updatesource.pop(); updatesource = updatesource.join('.exe');
454 + db = updatesource + '.db';
455 + updatesource = (' & move "' + update + '" "' + updatesource + '.exe" & move "' + updatedb + '" "' + db + '" & erase "' + updatedb + '"') + (' & echo move "' + update + '" "' + updatesource + '.exe" & echo move "' + updatedb + '" "' + db + '"');
456 + }
457 +
458 + var tmp = '/C echo copy "' + db + '" "' + updatedb + '" & copy "' + db + '" "' + updatedb + '"' + ' & "' + update + '" ' + parms.join(' ') + updatesource + ' & erase "' + update + '" & echo ERASE "' + update + '"';
459 arg2 = require('_GenericMarshal').CreateVariable(tmp, { wide: true });
460 }
461