⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 volumecheck

📁 要求上传五份源代码, 这是重量级的, 苹果达尔文服务器源代码, RTSP, RTP/RTCP等等, 其中RTSP解析, RTP/RTCP接收发送等等高效源码
💻
字号:
#!/usr/bin/perl -w######################################################### package version = major, minor1, minor2, release# $3 destinatin volume# $0 this file pathmy $TARGET_VOLUME	= $ARGV[0];my $PACKAGE_VERSION_FILE    = "release_version";my $INSTALLED_SERVER	    = "$TARGET_VOLUME"."/usr/sbin/QuickTimeStreamingServer";my $INSTALLED_SERVER_OS_VERS = "$TARGET_VOLUME"."/System/Library/CoreServices/ServerVersion.plist";my $INSTALLED_OS_VERS		= "$TARGET_VOLUME"."/System/Library/CoreServices/SystemVersion.plist";my $REQUIRED_OS_VERS		= "10.2.8";my $THIS_FILE_PATH          = $0;my $THIS_PACKGE_VERSION     = GetThisVersion( $THIS_FILE_PATH );my $INSTALLED_VERSION       = GetInstalledVersion( $INSTALLED_SERVER );my $THIS_DIR                = $0;$THIS_DIR =~ s/[^\/]*$//;my $ERROR_STRINGS           = $THIS_DIR . "English.lproj/VolumeCheck.strings";my $RESULT                  = 96;#########################################################exit 96; stop install with default message "This software cannot be installed. reason unknown..."#exit 112; stop install with error string 16#exit 113; stop install with error string 17#exit 114; stop install with error string 18#exit 0; ok#  don't install on OS X Serverif ( -e $INSTALLED_SERVER_OS_VERS ){    if ( -e $ERROR_STRINGS )    {   #there are localized error strings so use them        $RESULT = 114;    }    exit ($RESULT);}if ( SystemVersionPlistCheck ( $INSTALLED_OS_VERS, $REQUIRED_OS_VERS, "<" ) ){    if ( -e $ERROR_STRINGS )    {   #there are localized error strings so use them        $RESULT = 113;    }    exit ($RESULT);}# make sure we don't stomp a newer versionif ( ReleaseVersCheck( $THIS_PACKGE_VERSION , "<", $INSTALLED_VERSION ) ){    if ( -e $ERROR_STRINGS )    {  #there are localized error strings so use them       $RESULT = 112;    }    exit ($RESULT);}exit 0;#####sub SystemVersionPlistCheck{     my $path            = $_[0];     my $version         = $_[1];     my $operator        = $_[2];     if (!$operator)     {         $operator = "==";     }     my $oldSeperator = $/;     $/ = \0;     open( PLIST, "$path") || do {         return 1;     };     $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;     @cfBundleVersionArray = split(/\./, $versiondata{ProductVersion});     for ($i = 0; $i < 3; $i++) {         if(!$cfBundleVersionArray[$i]) {             $cfBundleVersionArray[$i] = '0';         }     }     @versionArray = split(/\./, $version);     my $actualVersion;     for ($i = 0; $i < 3; $i++) {         if (($cfBundleVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {             $actualVersion = $cfBundleVersionArray[$i];             $version = $versionArray[$i];             last;         }     }     my $expression = '$actualVersion ' . $operator . ' $version';     if( eval ($expression) )     {         return 1;     }     else     {         return 0;     }}#### args: file path for this script sub GetThisVersion{     my $path  =     $_[0];    # strip of the file name from the path and add the version file name to it    $path =~ s/[^\/]*$//;    $path =  $path . $PACKAGE_VERSION_FILE;    # default behavior for missing release_version file is to not install over existing server    my $result = "0.0.0.0";    open( PACKAGE, "$path" ) || do {        return $result;    };    # Format for the release_version file is    #     # Major:[tab]value    # Minor1:[tab]value    # Minor2:[tab]value    # Release:[tab]value    #    foreach $line ( <PACKAGE> )    {        #remove the end of line        #strip white space from the line        #split the line into key and value using the ":" as the divider        chomp $line;        $line =~ s/\s*//g;         ( $key, $value ) = split( /:/, $line );                $installedVersiondata{ $key } = $value;    }    close( PACKAGE );    $result = $installedVersiondata{ 'Major' } . "." . $installedVersiondata{ 'Minor1' } . "." . $installedVersiondata{ 'Minor2' } . "." . $installedVersiondata{ 'Release' };            return $result;}#### args: server path sub GetInstalledVersion{   my $serverPath      = $_[0];   my $qtssOutput = "QTSS/0.0.0.0";    if ( -e $serverPath) {            $qtssOutput = `$serverPath -v`;    }    ( $InstalledNameAndVersion ) = split( /\s/, $qtssOutput );    ( $InstalledName, $InstalledVersion ) = split( /\//, $InstalledNameAndVersion );    return $InstalledVersion;}#### args: path, version number, operator: == > < >= <=sub ReleaseVersCheck{     my $newVersion      = $_[0];    my $operator        = $_[1];    my $InstalledVersion= $_[2];    my $debug = 0;    if (!$operator) {        $operator = "==";    }    @installedVersionArray = split(/\./, $InstalledVersion);    @newInstallArray = split(/\./, $newVersion);    if ($debug ) {        open (FILE, ">/Users/john/Desktop/test.txt");        print FILE "new=$newVersion old=$InstalledVersion\n";    }    my $newVersionComponent;    my $installedVersionComponent;    # check the version components i.e. (v1.9.3.1)= v[0].v[1].v[2].v[3]    for ($i = 0; $i < 4 ; $i++) {                $newVersionComponent = $newInstallArray[$i];        # force an nth component if it is missing (4.1 -> 4.1.0.0)        if (!$newVersionComponent) {             $newVersionComponent = "0";        }            $installedVersionComponent = $installedVersionArray[$i];        # force an nth component if it is missing (4.1 -> 4.1.0.0)        if (!$installedVersionComponent) {            $installedVersionComponent = "0";         }        if ($debug ) {            print FILE "test i=$i expression = $newVersionComponent $operator $installedVersionComponent\n";        }        #stop if a component doesn't match        if ($installedVersionComponent != $newVersionComponent) {              last;        }    }    my $expression = '$newVersionComponent ' . $operator . ' $installedVersionComponent';    if ($debug ) {         print FILE "stop i=$i expression = $newVersionComponent $operator $installedVersionComponent\n";        if( eval ($expression) )        {   print FILE "fail ";        }        else        {   print FILE "ok ";        }        close (FILE);    }    if( eval ($expression) )    {       	#failed        return 1;    }    else    {        return 0;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -