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