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 });