home *** CD-ROM | disk | FTP | other *** search
/ Computer Music 2005 March / CMI84.ISO / pc / Software / Demo Software / Mac Demo Software / Linplug Saxlab Demo Mac / SaxLabDemo.dmg / SaxLab 1.0.2 Demo.pkg / Contents / Resources / VolumeCheck < prev   
Encoding:
Text File  |  2005-01-20  |  2.1 KB  |  115 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.8
  24.     #
  25.        if(CheckVersion( "$SYSVERS", "10.2.8", "ProductVersion", "<" ))
  26.     {
  27.         $EXIT_VALUE = (( 1 << 5 ) | 17);
  28.         last;
  29.     }
  30.    
  31.     #
  32.     # Don't install if QT version is less than 6.4
  33.     #
  34.     
  35.     if (CheckVersion("$QUICKTIME_VERS", "6.4", "CFBundleVersion", "<")) {
  36.         $EXIT_VALUE = (( 1 << 5 ) | 18);
  37.         last;
  38.     }
  39. }
  40.  
  41. exit($EXIT_VALUE);
  42.  
  43.  
  44. ##################
  45.  
  46. sub CheckVersion
  47. {
  48.     my $path            = $_[0];
  49.     my $version         = $_[1];
  50.     my $keyName         = $_[2];
  51.     my $operator        = $_[3];
  52.  
  53.     if (! -e $path) {
  54.         return 0;
  55.     }
  56.  
  57.     if (!$operator) {
  58.         $operator = "==";
  59.     }
  60.  
  61.     my $oldSeperator = $/;
  62.     $/ = \0;
  63.  
  64.     open( PLIST, "$path") || do {
  65.         return 0;
  66.     };
  67.  
  68.     $plistData = <PLIST>;
  69.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  70.  
  71.     @items = split(/<key>/, $plistData);
  72.  
  73.     shift @items;
  74.     foreach $item (@items) {
  75.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  76.         $versiondata{ $1 } = $2;
  77.     }
  78.  
  79.     close(PLIST);
  80.  
  81.     $/ = $oldSeperator;
  82.  
  83.     @theVersionArray = split(/\./, $versiondata{$keyName});
  84.     for ($i = 0; $i < 3; $i++) {
  85.         if(!$theVersionArray[$i]) {
  86.             $theVersionArray[$i] = '0';
  87.         }
  88.     }
  89.  
  90.     @versionArray = split(/\./, $version);
  91.     
  92.     my $actualVersion;
  93.  
  94.     for ($i = 0; $i < 3; $i++) {
  95.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  96.  
  97.             $actualVersion = $theVersionArray[$i];
  98.             $version = $versionArray[$i];
  99.  
  100.             last;
  101.         }
  102.     }
  103.  
  104.     my $expression = '$actualVersion ' . $operator . ' $version';
  105.     if( eval ($expression) )
  106.     {
  107.         return 1;
  108.     }
  109.     else
  110.     {
  111.         return 0;
  112.     }
  113.  
  114. }
  115.