News:

MultiCommander v16.6 is released!

Main Menu

Script to retreive and/or update sysinternals tools

Started by Stéphane P., July 22, 2014, 21:59:30

Previous topic - Next topic

Stéphane P.

I share my script in case of it can interest other people.
The need is to update "Process Explorer" tools from Sysinternals to the last version.
It verifies the registry to see if the EULA has been accepted. If it is the case, it retreives the running path to overwrite it if a newer version exists.
If no EULA, retreives the last version in a defined path.

The only possible problems is that live.sysinternlas.com may take a long time to respond.

// 191.236.128.229 = live.sysinternals.com
// Return Only wants "num"

@var $ProcExpOnlineVersion, $ProcExpLocalVersion;
@var $ProcExpOnlinePath, $ProcExpLocalPath;

@var $ExecutableName = "procexp.exe";
@var $ExeRegName = "Process Explorer";
@var $l, $o;


function GetOnlineVersion($ExecutableName)
{
@var $Result
$ProcExpOnlinePath = '\\191.236.128.229\Tools' ^ $ExecutableName;
$ProcExpOnlineVersion = GetFileProp($ProcExpOnlinePath , "ExtendedProp.prodVersion");
$Result= StrReplace($ProcExpOnlineVersion , "." , "" );
return $Result;
}

function GetLocalVersion($ExeRegName)
{
@var $Result
@var $exists = RegKeyExists("HKCU","Software\\Sysinternals\\" + $ExeRegName );
if( $exists == 1 )
{
  $ProcExpLocalPath = RegValueGetSZ("HKCU","Software\\Sysinternals\\" + $ExeRegName, "OriginalPath");
  $ProcExpLocalVersion= GetFileProp($ProcExpLocalPath , "ExtendedProp.prodVersion");
  $Result= StrReplace($ProcExpLocalVersion, "." , "" );
  return $Result;
}
else
{
  $ProcExpLocalPath = "C:\\Temp" ^ $ExecutableName;
  return 0;
}
}

function CopySysTool()
{
CopyFile( $ProcExpLocalPath , $ProcExpOnlinePath , "NODIALOG, OVERWRITE_ALL");
}

$o = GetOnlineVersion($ExecutableName);
$l = GetLocalVersion($ExeRegName);

if( StrCompareNoCase($l , "0" ) == 0 )
{
CopySysTool();
}
else
{
if($o > $l)
{
  CopySysTool();
}
}