#!/usr/bin/perl

use Foundation;

if (-e "/usr/sbin/pkgutil" && $ARGV[2] eq "/") {
	while (<DATA>) {
		chomp $_;
		next if $_ eq "";

		my $filePath = $_;
		my $fileInfoPlistString = `pkgutil --file-info-plist \Q$filePath\E`;
		if ($?) {
			print "Could not read file info for ARDAgent\n";
			exit(0);
		}
	
		my $fileInfoPlist = NSString->stringWithString_($fileInfoPlistString)->propertyList();
		if (!$fileInfoPlist || !$$fileInfoPlist) {
			print "Could not parse property result from pkgutil\n";
			exit(0);
		}
	
		my $pathInfoArray = $fileInfoPlist->objectForKey_("path-info");
		my $highest = 0; my $chosen = "";
		for (my $i = 0; $i < $pathInfoArray->count(); $i++) {
			my $pkgid = $pathInfoArray->objectAtIndex_($i)->objectForKey_("pkgid")->UTF8String();	
			my $date = $pathInfoArray->objectAtIndex_($i)->objectForKey_("install-time")->longValue();
		
			if ($date > $highest) { $highest = $date; $chosen = $pkgid; }
		}
	
		system("pkgutil", "--edit-pkg", $chosen, "--learn", $filePath);
	}
}

__DATA__
System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent
System/Library/CoreServices/Menu Extras/RemoteDesktop.menu/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/AppleVNCServer.bundle/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/AppleVNCServer.bundle/Contents/Support/LockScreen.app/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/AppleVNCServer.bundle/Contents/Support/VNC Guest.app/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/AppleVNCServer.bundle/Contents/Support/VNCDragHelper.app/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/ARDForcedViewer.app/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/Remote Desktop Message.app/Contents/CodeResources
System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/CodeResources
