Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

glossywhite

macrumors 65816
Original poster
Feb 28, 2008
1,120
3
Just a quick question; I just received a SL upgrade DVD for one of my Macs, in the post, and it had the disc number: "2Z691-6557-A". I was a bit surprised that the DVD just came in a simple paper sleeve, tossed into a padded envelope with 2nd class postage.

Is this the experience of others?. Also, is this particular upgrade DVD (with the same disc number as mine) capable of erase and install?. I don't like doing upgrades, I'd rather start fresh.

Also, I'm currently doing an MD5 checksum on my DVD; I shall report back with the hash value, if some of you wouldn't mind comparing it with your hash value from the same DVD and also from the full retail & box set DVD.

Thanks.

MD5 of 27691-6557-A:

Code:
e4240ff044a569765dd3db3469a881c5

PS: I don't understand why the disc number is DIFFERENT, on the inside of the spindle hole: 2Z693-7059-A :confused: (underneath - see attached macro).
 

Attachments

  • hololabel.jpg
    hololabel.jpg
    78 KB · Views: 200
  • sl.jpg
    sl.jpg
    58 KB · Views: 620
  • sl2.jpg
    sl2.jpg
    56.8 KB · Views: 194
  • sl3.jpg
    sl3.jpg
    51 KB · Views: 204
Mine came in the same package.

I did an erase and install, worked perfectly.

Really weird how at no point does it appear to check for a Leopard install.
 
Mine came in the same package.

I did an erase and install, worked perfectly.

Really weird how at no point does it appear to check for a Leopard install.


Indeed, I can verify that the UTD upgrade DVD (disc number: 2Z691-6557-A) *does* install a fresh OS on a *blank* drive or partition. I can only think that this is Apple trusting it's customers, which is unsurprising, and also helpful, as I dislike any kind of upgrade with regards to OS' in general.


Someone complained to me today, that Stuffit expander doesn't work on SL. First off, who on earth uses .SIT files these days?. ZIP, RAR & .001 are all catered for by iArchiver, unRarX, MacHacher, Split & Concat and the unarchiver, but that aside - I have Stuffit expander on Snow Leopard, and it works fine.
 
Indeed, I can verify that the UTD upgrade DVD (disc number: 2Z691-6557-A) *does* install a fresh OS on a *blank* drive or partition.

No, it will not, unless on another drive or partition you happen to have a Leopard or Snow Leopard installation.

Do this please:

Mount your Up-To-Date DVD.
In Finder, click Go - Go To Folder... and type /Volumes/Mac OS X Install DVD/System/Installation/CDIS/
Right-click on "Mac OS X Installer" and click on Show Package Contents.
In the new window go to Contents/Resources
If there's a file called "CheckForOSX" then you have the Up-To-Date installer. This executable is what checks for an existing Leopard or Snow Leopard installation before it will allow you to install or erase the drive.

If you don't have this file then Apple screwed up and pressed some retail DVDs with the Up-To-Date printing on them and you lucked out.
 
No, it will not, unless on another drive or partition you happen to have a Leopard or Snow Leopard installation.

Do this please:

Mount your Up-To-Date DVD.
In Finder, click Go - Go To Folder... and type /Volumes/Mac OS X Install DVD/System/Installation/CDIS/
Right-click on "Mac OS X Installer" and click on Show Package Contents.
In the new window go to Contents/Resources
If there's a file called "CheckForOSX" then you have the Up-To-Date installer. This executable is what checks for an existing Leopard or Snow Leopard installation before it will allow you to install or erase the drive.

If you don't have this file then Apple screwed up and pressed some retail DVDs with the Up-To-Date printing on them and you lucked out.

Yes, it has that file:

Code:
#!/usr/bin/perl

########################################################
my $TARG                = $ARGV[0];
my $SYSTEM_VERS         = $TARG . "/System/Library/CoreServices/SystemVersion.plist";
my $EXIT_VALUE          = 0;
########################################################

DO_CHECKS: {
    unless (-e $SYSTEM_VERS) {
            $EXIT_VALUE = 1;
            last;
    }
        
    if (CheckVersion("$SYSTEM_VERS", "8G1165", "ProductBuildVersion", "<")) {
            $EXIT_VALUE = 1;
            last;
    }

    unless(SystemPaths($TARG)) {
            $EXIT_VALUE = 1;
            last;
    }
}

exit($EXIT_VALUE);

########################################################

sub SystemPaths {
	my $targ = shift();

	while(<DATA>) {
		chomp();
		if($_ eq "") {
			next;
		}
		-e($targ . $_) || return(0);
	}
	return(1);
}

sub CheckVersion {
    my $path            = $_[0];
    my $version         = $_[1];
    my $keyName         = $_[2];
    my $operator        = $_[3];

    if (! -e $path) {
        return 0;
    }

    if (!$operator) {
        $operator = "==";
    }

    my $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;

    # ProductBuildVersion style keys
    $versiondata{$keyName} =~ /(\d+)([A-Z])(\d+)/ && ($versiondata{$keyName} = "$1.".ord($2).".$3");
    $version =~ /(\d+)([A-Z])(\d+)/ && ($version = "$1.".ord($2).".$3");

    @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;
    }

}

__DATA__
/System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
/System/Library/CoreServices/Automator Launcher.app/Contents/MacOS/Automator Launcher
/System/Library/CoreServices/Certificate Assistant.app/Contents/MacOS/Certificate Assistant
/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow
/System/Library/CoreServices/Network Setup Assistant.app/Contents/MacOS/Network Setup Assistant
/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent
/System/Library/CoreServices/SecurityAgent.app/Contents/MacOS/SecurityAgent
/System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer
/System/Library/PrivateFrameworks/ProKit.framework
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
/System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/Resources/ExtraPatches.plugin/Contents/MacOS/ExtraPatches
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/Resources/SpeechSynthesisServer.app/Contents/MacOS/SpeechSynthesisServer

So what you're saying, is that it checks for an existing Leopard system on ANY partition I have??. I don't care too much, as all I shall do is clone the UTD DVD to a partition, and then delete the CheckForOSX file from the installer package. I'm doing nothing morally wrong, seeing as I own the Mac which qualifies for the update, AND I own a Leopard licence which came with it.

There are a million ways around this; I could install Leopard, fresh onto my Mac form the supplied restore DVDs, and then clone it across to an external drive, then wipe my Mac mini drive, and install Snow Leopard onto it, because the EXTERNAL with the clone of LEOPARD, would qualify my system!. Failing that, I'd just rip out the CheckForOSX file, after having cloned the DVD to external. This discussion is futile, however, as I am a LEGAL and entitled SL licence holder, so I shall go about the install however I wish. :)


I love PLIST files :D
 

Attachments

  • Screen shot 2009-09-03 at 20.50.45.png
    Screen shot 2009-09-03 at 20.50.45.png
    32.8 KB · Views: 196
Yes, it has that file:

Code:
#!/usr/bin/perl

########################################################
my $TARG                = $ARGV[0];
my $SYSTEM_VERS         = $TARG . "/System/Library/CoreServices/SystemVersion.plist";
my $EXIT_VALUE          = 0;
########################################################

DO_CHECKS: {
    unless (-e $SYSTEM_VERS) {
            $EXIT_VALUE = 1;
            last;
    }
        
    if (CheckVersion("$SYSTEM_VERS", "8G1165", "ProductBuildVersion", "<")) {
            $EXIT_VALUE = 1;
            last;
    }

    unless(SystemPaths($TARG)) {
            $EXIT_VALUE = 1;
            last;
    }
}

exit($EXIT_VALUE);

########################################################

sub SystemPaths {
	my $targ = shift();

	while(<DATA>) {
		chomp();
		if($_ eq "") {
			next;
		}
		-e($targ . $_) || return(0);
	}
	return(1);
}

sub CheckVersion {
    my $path            = $_[0];
    my $version         = $_[1];
    my $keyName         = $_[2];
    my $operator        = $_[3];

    if (! -e $path) {
        return 0;
    }

    if (!$operator) {
        $operator = "==";
    }

    my $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;

    # ProductBuildVersion style keys
    $versiondata{$keyName} =~ /(\d+)([A-Z])(\d+)/ && ($versiondata{$keyName} = "$1.".ord($2).".$3");
    $version =~ /(\d+)([A-Z])(\d+)/ && ($version = "$1.".ord($2).".$3");

    @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;
    }

}

__DATA__
/System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
/System/Library/CoreServices/Automator Launcher.app/Contents/MacOS/Automator Launcher
/System/Library/CoreServices/Certificate Assistant.app/Contents/MacOS/Certificate Assistant
/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow
/System/Library/CoreServices/Network Setup Assistant.app/Contents/MacOS/Network Setup Assistant
/System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent
/System/Library/CoreServices/SecurityAgent.app/Contents/MacOS/SecurityAgent
/System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer
/System/Library/PrivateFrameworks/ProKit.framework
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
/System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/Resources/ExtraPatches.plugin/Contents/MacOS/ExtraPatches
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/Resources/SpeechSynthesisServer.app/Contents/MacOS/SpeechSynthesisServer

So what you're saying, is that it checks for an existing Leopard system on ANY partition I have??. I don't care too much, as all I shall do is clone the UTD DVD to a partition, and then delete the CheckForOSX file from the installer package. I'm doing nothing morally wrong, seeing as I own the Mac which qualifies for the update, AND I own a Leopard licence which came with it.

There are a million ways around this; I could install Leopard, fresh onto my Mac form the supplied restore DVDs, and then clone it across to an external drive, then wipe my Mac mini drive, and install Snow Leopard onto it, because the EXTERNAL with the clone of LEOPARD, would qualify my system!. Failing that, I'd just rip out the CheckForOSX file, after having cloned the DVD to external. This discussion is futile, however, as I am a LEGAL and entitled SL licence holder, so I shall go about the install however I wish. :)


I love PLIST files :D

Bingo.

Apple have been pulling this CheckForOSX stuff since the free 10.1 "upgrade" back in 2001. Peeps found out if you deleted that file it turned it into a full install disc.
 
Wait...
Mac OS X 11.6???

Yep, 11.6:

FIND: /System/Library/CoreServices/SystemVersion.plist

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ProductBuildVersion</key>
	<string>11A654</string>
	<key>ProductCopyright</key>
	<string>1983-2009 Apple Inc.</string>
	<key>ProductName</key>
	<string>Mac OS X</string>
	<key>ProductUserVisibleVersion</key>
	<string>11.6</string>
	<key>ProductVersion</key>
	<string>11.6</string>
</dict>
</plist>
 
So why does it show 11.6 and not 10.6?

You can see from the source code that I quoted, that I edited the .plist to FAKE the 11.6 on "About this Mac". That file tells the system what to display :)
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.