Evaluator SysInfo Function - Build Date Property

Request adding version build date property (i.e. VerDate) to SysInfo property

What would you use that for?

OCD. I track how long it's been since the last DOpus update.

The modified timestamp on dopus.exe will give you that.

Great! Is that accessible via Evaluator?

AFAIK the Evaluator doesn't have that ability, but scripting does.

OK, trying to get via JScript with my limited skillset. Here's what I have found and tried:

function OnInit(initData)
{
	initData.name = "DOpusRelease";
	initData.version = "1.0";
	initData.copyright = "(c) 2024 Chuck";
//	initData.url = "https://resource.dopus.com/c/buttons-scripts/16";
	initData.desc = "";
	initData.default_enable = true;
	initData.min_version = "13.0";


}


var file = document.getElementById('C:\Program Files\GPSoftware\Directory Opus\dopus.exe')[0];
var timeStamp = file.modified;
var lastModifiedDate = new Date(timeStamp);

function OnOpenLister(OpenListerData)
{
	DOpus.Output("Last Modified " + lastModifiedDate)
}

I get a "document" is undefined error. Not sure what I'm missing. Appreciate any assistance.

document.getElementById will work in a browser.

This will work in Opus:

var fsu = DOpus.FSUtil();
DOpus.Output('Last Modified: ' + fsu.GetItem(fsu.Resolve('/home\\dopus.exe')).modify);

Thanks for this!

How do I get the difference between the modified date and now?

Like this:

var fsu = DOpus.FSUtil();
var mod = fsu.GetItem(fsu.Resolve('/home\\dopus.exe')).modify;
var now = DOpus.Create().Date();
DOpus.Output(mod);
DOpus.Output(now);

DOpus.Output('Diff in milliseconds: ' + (now - mod));

Thanks for this! I previously used Date() instead of DOpus.Create().Date() and received a NaN output.

Now to figure out how to put the output on a label...

On a button label? Store it in a global variable and call it via Val("$glob:...").

Thanks. Here's the script thus far:

// Called by Directory Opus to initialize the script
function OnInit(initData)
{
	initData.name = "DOpusRelease";
	initData.version = "1.0";
	initData.copyright = "(c) 2024 Chuck";
//	initData.url = "https://resource.dopus.com/c/buttons-scripts/16";
	initData.desc = "";
	initData.default_enable = true;
	initData.min_version = "13.0";
}

var fsu = DOpus.FSUtil();
var mod = fsu.GetItem(fsu.Resolve('/home\\dopus.exe')).modify;
var now = DOpus.Create().Date();
var versionAge = Math.round((now - mod) / 1000 / 60 / 60 / 24);
var versionDays = "";

function OnOpenLister(OpenListerData)
{
	DOpus.Vars.Set("versionDays","versionAge");
	DOpus.Vars("versionDays").persist = true;
	
	DOpus.Output(mod);
	DOpus.Output(now);

	DOpus.Output('Diff in milliseconds: ' + (now - mod));
	DOpus.Output('Version Age: ' + versionAge);
}

The global variable shows as versionAge, not the number.

The button label does not work

@label:=Val("$glob:versionAge")

I am just not connecting dots today.

You are storing a string in the global variable instead of the variable. Remove the quotes and you should be fine.

Perfect! Thanks for the help.

For anyone interested:

// DOpusRelease
// (c) 2024 Chuck

// This is a script for Directory Opus.
// See https://www.gpsoft.com.au/endpoints/redirect.php?page=scripts for development information.



// Called by Directory Opus to initialize the script
function OnInit(initData)
{
	initData.name = "DOpusRelease";
	initData.version = "1.0";
	initData.copyright = "(c) 2024 Chuck";
//	initData.url = "https://resource.dopus.com/c/buttons-scripts/16";
	initData.desc = "";
	initData.default_enable = true;
	initData.min_version = "13.0";
}

var fsu = DOpus.FSUtil();
var mod = fsu.GetItem(fsu.Resolve('/home\\dopus.exe')).modify;
var releaseDate = mod.Format("d","n");
var now = DOpus.Create().Date();
var versionAge = Math.round((now - mod) / 1000 / 60 / 60 / 24);
var versionDays = "";

function OnOpenLister(OpenListerData)
{
	DOpus.Vars.Set("releaseDate", "Released " + releaseDate);
	
	if(versionAge == 1)
	{
		DOpus.Vars.Set("versionDays", "     " + versionAge + " day old");
		DOpus.Vars("versionDays").persist = true;
	} else {
		DOpus.Vars.Set("versionDays", "     " + versionAge + " days old");
		DOpus.Vars("versionDays").persist = true;
	}
	
	DOpus.Output(mod);
	DOpus.Output(now);

	DOpus.Output('Diff in milliseconds: ' + (now - mod));
	DOpus.Output('Version Age: ' + versionAge);
	DOpus.Output('releaseDate: ' + releaseDate);
}