home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2003 December
/
Chip_2003-12_cd1.bin
/
opsys
/
macos
/
ical
/
iCal.dmg
/
iCal.pkg
/
Contents
/
Resources
/
postflight
< prev
next >
Wrap
Text File
|
2003-08-25
|
6KB
|
218 lines
#!/usr/bin/perl
use File::Path;
use File::Spec;
########################################################
my $PLISTBUDDY = $ARGV[0] . "/Contents/Resources/PlistBuddy";
my $TOKENSPLIST = $ARGV[2] . "/Library/Receipts/iCal.pkg/Contents/tokens.plist";
########################################################
my $ICALPATH = File::Spec->canonpath($ARGV[2] . "/Applications/iCal.app/");
my @ICALPATHARRAY = File::Spec->splitdir($ICALPATH);
pop @ICALPATHARRAY;
my $ICALPARENTDIR = File::Spec->catdir(@ICALPATHARRAY);
#
$command = "\"" . $PLISTBUDDY . "\" -c \"Print :isync\" " . $TOKENSPLIST . "|";
open(PSOUT, $command);
chomp(my $ISYNC = <PSOUT>);
close(PSOUT);
my $ISYNCPATH = File::Spec->canonpath($ARGV[2] . $ISYNC);
my @ISYNCPATHARRAY = File::Spec->splitdir($ISYNCPATH);
pop @ISYNCPATHARRAY;
my $ISYNCPARENTDIR = File::Spec->catdir(@ISYNCPATHARRAY);
########################################################
my $SYNCSERVER = $ARGV[2] . "/System/Library/CoreServices/SyncServer.app/";
if (-d $SYNCSERVER)
{
if (CheckVersion($SYNCSERVER . "Contents/version.plist", "1.1", "CFBundleShortVersionString", "<="))
{
system( "/usr/bin/ditto",
$ICALPATH . "/Contents/Resources/FakeSyncServer.app/Contents",
$SYNCSERVER . "/Contents/");
system( "/bin/mv",
$SYNCSERVER . "/Contents/MacOS/" . "FakeSyncServer",
$SYNCSERVER . "/Contents/MacOS/" . "SyncServer");
system( $PLISTBUDDY,
"-c",
"Set :CFBundleShortVersionString 1.1.1",
$SYNCSERVER . "/Contents/version.plist");
system( $PLISTBUDDY,
"-c",
"Set :CFBundleShortVersionString 1.1.1",
$SYNCSERVER . "/Contents/Info.plist");
if (-d $ISYNCPATH)
{
if (CheckVersion($ISYNCPATH . "/Contents/version.plist", "1.1", "CFBundleShortVersionString", "<="))
{
system( "/bin/cp", "-f",
$ICALPATH . "/Contents/Resources/FakeSyncServer.app/Contents/MacOS/FakeSyncServer",
$ISYNCPATH . "/Contents/MacOS/iSync");
system ($PLISTBUDDY,
"-c",
"Set :CFBundleShortVersionString 1.1.1",
$ISYNCPATH . "/Contents/version.plist");
system ($PLISTBUDDY,
"-c",
"Set :CFBundleShortVersionString 1.1.1",
$ISYNCPATH . "/Contents/Info.plist");
system( $PLISTBUDDY,
"-c",
"Set :CFBundleGetInfoString iSync 1.1.1, © 2003 Apple Computer, Inc. All rights reserved.",
$ISYNCPATH . "/Contents/Info.plist");
system("/usr/bin/touch", "-c", $ISYNCPATH);
system("/usr/bin/touch", "-c", $ISYNCPARENTDIR);
}
}
}
}
system( "/bin/rm", "-rf", $ICALPATH . "/Contents/Resources/FakeSyncServer.app");
####################################################################################################
system("/usr/bin/touch", "-c", $ICALPATH);
system("/usr/bin/touch", "-c", $ICALPARENTDIR);
exit(0);
########################################################
########################################################
sub CheckVersion
{
my $path = $_[0];
my $version = $_[1];
my $keyName = $_[2];
my $operator = $_[3];
my $oldSeperator;
my $plistData;
my @items;
my $item;
my $versiondata;
my $i;
my @theVersionArray;
my %versiondata;
my @versionArray;
if (! -e $path) {
return 0;
}
if (!$operator) {
$operator = "==";
}
$oldSeperator = $/;
$/ = \0;
open( PLIST, "$path") || do {
return 0;
};
$plistData = <PLIST>;
$plistData =~ /<dict>(.*?)<\/dict>/gis;
@items = split(/<key>/, $plistData);
shift @items;
foreach $item (@items) {
$item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
$versiondata{ $1 } = $2;
}
close(PLIST);
$/ = $oldSeperator;
@theVersionArray = split(/\./, $versiondata{$keyName});
for ($i = 0; $i < 3; $i++) {
if(!$theVersionArray[$i]) {
$theVersionArray[$i] = '0';
}
}
@versionArray = split(/\./, $version);
my $actualVersion;
for ($i = 0; $i < 3; $i++) {
if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
$actualVersion = $theVersionArray[$i];
$version = $versionArray[$i];
last;
}
}
my $expression = '$actualVersion ' . $operator . ' $version';
if( eval ($expression) )
{
return 1;
}
else
{
return 0;
}
}
########################################################
sub GetVersion
{
my $path = $_[0];
my $keyName = $_[1];
my $oldSeperator;
my $plistData;
my @items;
my $item;
my $versiondata;
my $i;
my @theVersionArray;
my %versiondata;
my @versionArray;
if (! -e $path) {
return 0;
}
$oldSeperator = $/;
$/ = \0;
open( PLIST, "$path");
$plistData = <PLIST>;
$plistData =~ /<dict>(.*?)<\/dict>/gis;
@items = split(/<key>/, $plistData);
shift @items;
foreach $item (@items) {
$item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
$versiondata{ $1 } = $2;
}
close(PLIST);
$/ = $oldSeperator;
return($versiondata{$keyName});
}