timsutton / brigadier

Fetch and install Boot Camp ESDs with ease.
MIT License
2.09k stars 198 forks source link

Overlapping ESDs #5

Closed SKUDSIEH closed 11 years ago

SKUDSIEH commented 11 years ago

I see that an update was made to handle the overlapping ESDs by searching for the bootcampautoupdate tag, however in doing this brigadier will download the older package. The sucatalog file does have a date field. Instead Would it be a good idea to use the date field to compare which package is the newest and download that one?

timsutton commented 11 years ago

Yes, it probably would. I pushed a quick fix for #4 to keep brigadier from being completely broken, and haven't yet made time to revisit it. I should get to it this week, but patches also are always accepted. :smile:

timsutton commented 11 years ago

Now realizing you said 'sucatalog' and not 'dist', I'm not convinced relying on PostDate is the best approach, since old updates can be re-posted. It's more correct that what's currently being done, which is nothing, but I'd rather try to determine what Boot Camp Assistant would do as of 10.8.3.

(WWBCAD?)

timsutton commented 11 years ago

The dist for the most recent 5.0.x update:

./repoutil --dist=041-7018

function InstallationCheck(prefix) {
    var models = ['MacBookAir4,1','MacBookAir4,2','MacBookAir5,1','MacBookAir5,2','MacBookPro6,1','MacBookPro6,2','MacBookPro8,1','MacBookPro8,2','MacBookPro8,3','MacBookPro9,1','MacBookPro9,2','MacBookPro10,1','MacBookPro10,2','MacPro4,1','MacPro5,1','Macmini5,1','Macmini5,2','Macmini5,3','Macmini6,1','Macmini6,2','iMac11,3','iMac12,1','iMac12,2','iMac13,1','iMac13,2',];

The last 4.x update that applies to basically everything 2011 and earlier:

./repoutil --dist=041-2011

function InstallationCheck(prefix) {
    var models = ['MacBook2,1','MacBook3,1','MacBook4,1','MacBook5,1','MacBook5,2','MacBook5,3','MacBook6,1','MacBook7,1','MacBookAir1,1','MacBookAir2,1','MacBookAir3,1','MacBookAir3,2','MacBookPro2,1','MacBookPro2,2','MacBookPro3,1','MacBookPro4,1','MacBookPro5,1','MacBookPro5,2','MacBookPro5,3','MacBookPro5,4','MacBookPro5,5','MacBookPro6,1','MacBookPro6,2','MacBookPro7,1','MacBookPro8,1','MacBookPro8,2','MacBookPro8,3','MacPro1,1','MacPro2,1','MacPro3,1','MacPro4,1','MacPro5,1','Macmini2,1','Macmini3,1','Macmini4,1','iMac5,1','iMac6,1','iMac7,1','iMac8,1','iMac9,1','iMac10,1','iMac11,1','iMac11,2','iMac11,3','iMac12,1','iMac12,2',];

There are a few overlapping models - I'll try to see what BCA does with the overlapping iMac models.

Also, from BCA's Info.plist file in its .app bundle:

<key>32BitSupportedModels</key>
<array>
    <string>MacBook7,1</string>
    <string>MacBookAir5,2</string>
    <string>MacBookPro10,1</string>
    <string>MacPro5,1</string>
    <string>Macmini5,3</string>
    <string>iMac12,2</string>
</array>
<key>PreUSBBootSupportedModels</key>
<array>
    <string>MacBook7,1</string>
    <string>MacBookAir3,2</string>
    <string>MacBookPro8,3</string>
    <string>MacPro5,1</string>
    <string>Macmini4,1</string>
    <string>iMac12,2</string>
</array>
<key>Win7OnlyModels</key>
<array>
    <string>MacBook7,1</string>
    <string>MacBookAir3,2</string>
    <string>MacBookPro5,5</string>
    <string>MacPro2,1</string>
    <string>Macmini4,1</string>
    <string>iMac10,1</string>
</array>

These seem to be "upper limit" model numbers. For example, an iMac13,1 is 64-bit only and also USB-boot-supported, ie. no optical drive.

timsutton commented 11 years ago

An iMac12,1 also pulls the 5.0-series driver with BCA rather than the 4.x-series driver. Despite mangling these model plist arrays to try to trick it into downloading the older one, it always seemed to prefer the 5.0-series driver.

So, two reasonable options (for now) for the few cases where one model exists in multiple ESDs:

  1. Pick the most recent one.
  2. Pick the one with the BootCampAutoUnattend tag.
SKUDSIEH commented 11 years ago

It would be ideal to be able to pick the most recent as perhaps it may be possible in the future that 2 ESD's exist with overlapping models and both dist's with the autoupdate tag. However i did not see any other date field or any field for that matter that could indicate a more recent version in sucatalog or dist, and you mentioned the post date can be updated.

timsutton commented 11 years ago

Part of the purpose of the unattend here seems to be for providing bluetooth and Intel HD drivers for the install process. I recall years ago they had to make manual instructions for putting AutoUnattend.xml on a USB stick for 27" iMacs in order for the graphics driver to show anything during the installation.

Hard to say whether this will be the norm going forward. Either way, I'm thinking that the PostDate may just be the simplest option for now, and if not, having an option to override which product gets pulled, or pull them both, or something.