report version/size correctly to control panel #6860
Signed-off-by: si458 <simonsmith5521@gmail.com>
si458 committed
Mar 7, 2025 at 16:31 UTC
d49afdd7bf44735429acd39d21e3d40b0344039d
1 file changed
+17
-5
agents/meshcore.js
+17
-5
@@ -295,8 +295,9 @@ if (process.platform == 'win32' && require('user-sessions').isRoot()) {
295
// Check the Agent Uninstall MetaData for correctness, as the installer may have written an incorrect value
296
try {
297
var writtenSize = 0, actualSize = Math.floor(require('fs').statSync(process.execPath).size / 1024);
298
- try { writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize'); } catch (ex) { }
299
- if (writtenSize != actualSize) { try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize', actualSize); } catch (ex) { } }
298
+ var serviceName = (_MSH().serviceName ? _MSH().serviceName : (require('_agentNodeId').serviceName() ? require('_agentNodeId').serviceName() : 'Mesh Agent'));
299
+ try { writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + serviceName, 'EstimatedSize'); } catch (ex) { }
300
+ if (writtenSize != actualSize) { try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + serviceName, 'EstimatedSize', actualSize); } catch (ex) { } }
301
} catch (ex) { }
302
303
// Check to see if we are the Installed Mesh Agent Service, if we are, make sure we can run in Safe Mode
@@ -310,6 +311,16 @@ if (process.platform == 'win32' && require('user-sessions').isRoot()) {
311
try { meshCheck = require('service-manager').manager.getService(svcname).isMe(); } catch (ex) { }
312
if (meshCheck && require('win-bcd').isSafeModeService && !require('win-bcd').isSafeModeService(svcname)) { require('win-bcd').enableSafeModeService(svcname); }
313
} catch (ex) { }
314
+
315
+ // Check the Agent Uninstall MetaData for DisplayVersion and update if not the same and only on windows
316
+ if (process.platform == 'win32') {
317
+ try {
318
+ var writtenDisplayVersion = 0, actualDisplayVersion = process.versions.commitDate.toString();
319
+ var serviceName = (_MSH().serviceName ? _MSH().serviceName : (require('_agentNodeId').serviceName() ? require('_agentNodeId').serviceName() : 'Mesh Agent'));
320
+ try { writtenDisplayVersion = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + serviceName, 'DisplayVersion'); } catch (ex) { }
321
+ if (writtenDisplayVersion != actualDisplayVersion) { try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + serviceName, 'DisplayVersion', actualDisplayVersion); } catch (ex) { } }
322
+ } catch (ex) { }
323
+ }
324
}
325
326
if (process.platform != 'win32') {
@@ -4573,10 +4584,11 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
4584
if (process.platform == 'win32') {
4585
// Check the Agent Uninstall MetaData for correctness, as the installer may have written an incorrect value
4586
var writtenSize = 0;
4576
- try { writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize'); } catch (ex) { response = ex; }
4587
+ var serviceName = (_MSH().serviceName ? _MSH().serviceName : (require('_agentNodeId').serviceName() ? require('_agentNodeId').serviceName() : 'Mesh Agent'));
4588
+ try { writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + serviceName, 'EstimatedSize'); } catch (ex) { response = ex; }
4589
if (writtenSize != actualSize) {
4590
response = "Size updated from: " + writtenSize + " to: " + actualSize;
4579
- try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize', actualSize); } catch (ex) { response = ex; }
4591
+ try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\' + serviceName, 'EstimatedSize', actualSize); } catch (ex) { response = ex; }
4592
} else
4593
{ response = "Agent Size: " + actualSize + " kb"; }
4594
} else
@@ -5656,7 +5668,7 @@ function windows_execve(name, agentfilename, sessionid) {
5668
sendAgentMessage('Self Update failed because msvcrt.dll is missing', 3);
5669
return;
5670
}
5659
-
5671
+
5672
var cmd = require('_GenericMarshal').CreateVariable(process.env['windir'] + '\\system32\\cmd.exe', { wide: true });
5673
var args = require('_GenericMarshal').CreateVariable(3 * require('_GenericMarshal').PointerSize);
5674
var arg1 = require('_GenericMarshal').CreateVariable('cmd.exe', { wide: true });