home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2002 July / APC0702D1.iso / ntload / mac / files / iphoto.bin / iPhoto1.1.1.dmg / iPhoto.pkg / Contents / Resources / InstallationCheck < prev    next >
Encoding:
Text File  |  2002-04-19  |  1.9 KB  |  94 lines

  1. #!/usr/bin/perl
  2.  
  3. my $INSTALLER_VERS = "/System/Library/PrivateFrameworks/Installation.framework/Versions/A/Resources/Info.plist";
  4. my $SYSTEM_VERS = "/System/Library/CoreServices/SystemVersion.plist";
  5. my $EXIT_VALUE = 0;
  6.  
  7. DO_CHECKS: {
  8.     # 10.1 or higher system must be active
  9.     if(CheckVersion("$SYSTEM_VERS", "10.1", "ProductVersion", "<")) {
  10.         $EXIT_VALUE = 1;
  11.         last;
  12.     }
  13.     
  14.     # Installer Update is required
  15.         if(CheckVersion("$INSTALLER_VERS", "1.1.2", "CFBundleShortVersionString", "<")) {
  16.             $EXIT_VALUE = ((1 << 6) | ( 1 << 5 ) | 16 );
  17.             last;
  18.         }
  19. }
  20. exit($EXIT_VALUE);
  21.  
  22. ###
  23.  
  24. sub CheckVersion
  25. {
  26.     my $path            = $_[0];
  27.     my $version         = $_[1];
  28.     my $keyName         = $_[2];
  29.     my $operator        = $_[3];
  30.  
  31.     if (! -e $path) {
  32.         return 0;
  33.     }
  34.  
  35.     if (!$operator) {
  36.         $operator = "==";
  37.     }
  38.  
  39.     my $oldSeperator = $/;
  40.     $/ = \0;
  41.  
  42.     open( PLIST, "$path") || do {
  43.         return 0;
  44.     };
  45.  
  46.     $plistData = <PLIST>;
  47.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  48.  
  49.     @items = split(/<key>/, $plistData);
  50.  
  51.     shift @items;
  52.     foreach $item (@items) {
  53.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  54.         $versiondata{ $1 } = $2;
  55.     }
  56.  
  57.     close(PLIST);
  58.  
  59.     $/ = $oldSeperator;
  60.  
  61.     @theVersionArray = split(/\./, $versiondata{$keyName});
  62.     for ($i = 0; $i < 3; $i++) {
  63.         if(!$theVersionArray[$i]) {
  64.             $theVersionArray[$i] = '0';
  65.         }
  66.     }
  67.  
  68.     @versionArray = split(/\./, $version);
  69.     
  70.     my $actualVersion;
  71.  
  72.     for ($i = 0; $i < 3; $i++) {
  73.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  74.  
  75.             $actualVersion = $theVersionArray[$i];
  76.             $version = $versionArray[$i];
  77.  
  78.             last;
  79.         }
  80.     }
  81.  
  82.     my $expression = '$actualVersion ' . $operator . ' $version';
  83.     if( eval ($expression) )
  84.     {
  85.         return 1;
  86.     }
  87.     else
  88.     {
  89.         return 0;
  90.     }
  91.  
  92. }
  93.  
  94.