home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 February / Chip_2004-02_cd1.bin / opsys / macos / qt / qt.dmg / QuickTime65.pkg / Contents / Resources / VolumeCheck < prev    next >
Text File  |  2003-11-18  |  3KB  |  133 lines

  1. #!/usr/bin/perl
  2.  
  3. my $SYSVERS = "$ARGV[0]"."/System/Library/CoreServices/SystemVersion.plist";
  4. my $QUICKTIME_VERS = "$ARGV[0]"."/System/Library/Frameworks/QuickTime.framework/Versions/A/Resources/version.plist";
  5. my $EXIT_VALUE = 0;
  6.  
  7.  
  8.  
  9. DO_CHECKS: 
  10. {
  11.  
  12.     #
  13.     # Target volume must contain a X system.
  14.     #
  15.     if($ARGV[0] ne "/") 
  16.     {
  17.         $EXIT_VALUE = (( 1 << 6 ) | ( 1 << 5 ) | 16);
  18.         last;
  19.     }
  20.     
  21.     
  22.     #
  23.     # Don't install if target system is less than 10.2.5
  24.     #
  25.        if(CheckVersion( "$SYSVERS", "10.2.5", "ProductVersion", "<" ))
  26.     {
  27.         $EXIT_VALUE = (( 1 << 5 ) | 17);
  28.         last;
  29.     }
  30.    
  31.     # For a single binary QT installer we will now allow installation on 10.2.5 or higher 
  32. #   if(CheckVersion( "$SYSVERS", "10.3", "ProductVersion", ">=" ))
  33. #   {
  34. #          $EXIT_VALUE = (( 1 << 5 ) | 18);
  35. #       last;
  36. #    }
  37.     
  38.     if (CheckVersion("$QUICKTIME_VERS", "6.5", "CFBundleVersion", ">")) {
  39.         $EXIT_VALUE = (( 1 << 5 ) | 19);
  40.         last;
  41.     }
  42.     #
  43.     # Run the installinfo "preinstall" tool.
  44.     #
  45.     my $packagepath = "";
  46.     
  47.     $packagepath = $ENV{'PACKAGE_PATH'};
  48.  
  49.     
  50.     if ("$packagepath" ne "") {
  51.         my $installinfotool = "$packagepath"."/Contents/Resources/installinfo";
  52.         
  53.         my $cmd = "\"$installinfotool\" -preinstall -volume \"$ARGV[0]\"";
  54.         system("$cmd");
  55.     }
  56.     
  57. }
  58.  
  59. exit($EXIT_VALUE);
  60.  
  61.  
  62. ##################
  63.  
  64. sub CheckVersion
  65. {
  66.     my $path            = $_[0];
  67.     my $version         = $_[1];
  68.     my $keyName         = $_[2];
  69.     my $operator        = $_[3];
  70.  
  71.     if (! -e $path) {
  72.         return 0;
  73.     }
  74.  
  75.     if (!$operator) {
  76.         $operator = "==";
  77.     }
  78.  
  79.     my $oldSeperator = $/;
  80.     $/ = \0;
  81.  
  82.     open( PLIST, "$path") || do {
  83.         return 0;
  84.     };
  85.  
  86.     $plistData = <PLIST>;
  87.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  88.  
  89.     @items = split(/<key>/, $plistData);
  90.  
  91.     shift @items;
  92.     foreach $item (@items) {
  93.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  94.         $versiondata{ $1 } = $2;
  95.     }
  96.  
  97.     close(PLIST);
  98.  
  99.     $/ = $oldSeperator;
  100.  
  101.     @theVersionArray = split(/\./, $versiondata{$keyName});
  102.     for ($i = 0; $i < 3; $i++) {
  103.         if(!$theVersionArray[$i]) {
  104.             $theVersionArray[$i] = '0';
  105.         }
  106.     }
  107.  
  108.     @versionArray = split(/\./, $version);
  109.     
  110.     my $actualVersion;
  111.  
  112.     for ($i = 0; $i < 3; $i++) {
  113.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  114.  
  115.             $actualVersion = $theVersionArray[$i];
  116.             $version = $versionArray[$i];
  117.  
  118.             last;
  119.         }
  120.     }
  121.  
  122.     my $expression = '$actualVersion ' . $operator . ' $version';
  123.     if( eval ($expression) )
  124.     {
  125.         return 1;
  126.     }
  127.     else
  128.     {
  129.         return 0;
  130.     }
  131.  
  132. }
  133.