Sunday, November 10, 2024

bootcamp – Does Apple offer a page that lists all versions of published Boot Camp drivers?

Note: A version of this answer, which downloads and extracts the Boot Camp Support Software using a Windows machine, is given here.

There used to be an Apple webpage which provided a table containing information needed to obtain the correct Boot Camp Support Software (Windows Support Software) for each version of Windows officially supported for a given Mac (the archived copy of the page is available in archive.today and web.archive.org). The information was either a link to a webpage where the correct Boot Camp Support Software could be downloaded or the name of the DVD containing the desired software. Basically, the DVD was the Snow Leopard installation DVD. Currently, this webpage has been replaced with the Install Windows 7 on your Mac using Boot Camp webpage.

The Snow Leopard DVD contains legacy Boot Camp Support Software for XP SP2 and Vista installations. To access the Boot Camp Support Software on the Snow Leopard DVD, you need to be running Windows. I can no longer find the link where you could purchase a Snow Leopard DVD from Apple. However, a Snow Leopard ISO containing the Boot Camp Support Software can be downloaded. See this link for more information. Again, you will need to Windows to mount and access the Boot Camp Support Software.

The accepted answer to How to download Bootcamp drivers without Bootcamp assistant? explains how to download versions of the Boot Camp Support Software (Windows Support Software) for a particular Mac. However, the answer does not explain how to determine the differences between the available versions. Below is a script which automates steps 1 through 8 given in the answer.

#!/bin/bash
#
#

if [[ $0 != "$BASH_SOURCE" ]]; then
    bash "$BASH_SOURCE" "$@"
    return
fi

GetPkgUrl() {
    local "sucatalog=index-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog"
    local "verbose=true"
    if [[ $# -eq 0 ]]; then
        echo "usage: $0 [--clean] [--legacy] [--quiet] model_identifier"
        return "1"
    fi
    while :; do
        case ${1:-} in
        --clean) rm -f *.sucatalog *.dist;;
        --legacy) sucatalog="index-lion-snowleopard-leopard.merged-1.sucatalog";;
        --quiet) verbose=false;;
        *) break
        esac
        shift
    done
    if [[ $# -eq 0 ]]; then
        echo "$0: missing model identifier" >&2
        return "1"
    elif [[ $1 == -* ]]; then
        echo "$0: bad option: $1" >&2
        return "1"
    elif [[ $# -ne 1 ]]; then
        echo "$0: too many parameters"
        return "1"
    fi
    local 'sucatalogUrl=http://swscan.apple.com/content/catalogs/others/'"$sucatalog"
    local "language=English" "identifier=$1"
    shift
    if [[ ! -e $sucatalog ]]; then
        $verbose && echo "fetching $sucatalogUrl"
        curl -O "$sucatalogUrl" 2>/dev/null
    fi
    local "matches=$(grep -e "BootCampESD.pkg" -e ".$language.dist" "$sucatalog")"
    local "pkgUrl" "dist" "distUrl" 
    local -i "i" "count=0"
    local -a "dists=()" "pkgUrls=()"

    while read "pkgUrl"; do
        if [[ $pkgUrl == *BootCampESD.pkg* ]]; then
#           echo "$pkgUrl"
            read "distUrl"
            distUrl="${distUrl#*<string>}"
            distUrl="${distUrl%</string>*}"
#           echo "$distUrl"
            if [[ ! $distUrl == *"$language.dist"* ]]; then
                echo "Error: URL '$distUrl' did not contain the string '$language.dist'" >&2
                continue # exit "1"
            fi
            dist="${distUrl##*/}"
            dists+=("$dist")
            pkgUrl="${pkgUrl#*<string>}"
            pkgUrl="${pkgUrl%</string>*}"
            pkgUrls+=("$pkgUrl")
            if [[ ! -e "$dist" ]]; then
                $verbose && echo "fetching $distUrl"
                curl -O "$distUrl" 2>/dev/null
            else
                : # echo "have $distUrl"
            fi
            count="count + 1"
        fi
    done <<< "$matches"
#   echo "found $count .dist files"

    echo
    echo "Matching URL's are listed below."
    for ((i=0; i<${#dists[@]}; ++i)); do
        dist="${dists[i]}"
        if grep "'$identifier'" "$dist" >/dev/null; then
            echo "${pkgUrls[i]}"
        fi
    done
    echo
}

GetPkgUrl "$@"

An anonymous edit was made to this answer, where the variable sucatalog was changed from index-lion-snowleopard-leopard.merged-1.sucatalog to index-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.

Note: The --legacy option substitutes the original file name.

The identifier of my iMac (21.5-inch, Mid 2011) is iMac12,1. Assuming the script has already been saved to the file getpkgurl, the following command can be used to get a list of available downloads.

Note: The --clean option removes all previous downloaded files.

./getpkgurl --clean --legacy iMac12,1

Note: A good reference for older Mac computer to identifier translations is given here.

The output from the command is given below.

Note: The --quiet option can be used to remove all the fetching messages from the output.

fetching http://swscan.apple.com/content/catalogs/others/index-lion-snowleopard-leopard.merged-1.sucatalog
fetching http://swcdn.apple.com/content/downloads/24/46/041-91737-A_KOBGOTCIEZ/0b9gnebg3ivdfsd79simxpr60vvx9sy31k/041-91737.English.dist
fetching http://swcdn.apple.com/content/downloads/26/37/041-91736-A_6XKJ6AQL4K/9qene91xdcr1ytzik312zjmbaxyujy0p7j/041-91736.English.dist
fetching http://swcdn.apple.com/content/downloads/24/21/041-88430-A_MH044N1M88/l1tfz2ccakcy7ko79ugzcw0naadra581o3/041-88430.English.dist
fetching http://swcdn.apple.com/content/downloads/62/58/041-98143-A_HN8B941A1T/nknv1gt3xcgylggwc11kl5e0j4296tjfo1/041-98143.English.dist
fetching http://swcdn.apple.com/content/downloads/63/48/041-88436-A_A9JD5TGYOC/9qwbctjgtpqblqv40gl7uwf625j5pe796i/041-88436.English.dist
fetching http://swcdn.apple.com/content/downloads/53/33/041-88396-A_YLDCG32JBG/ehs3p0jphqr5sfk0wh15gqxkua7nndzk8u/041-88396.English.dist
fetching http://swcdn.apple.com/content/downloads/28/47/041-88734-A_Q0SKN07BL0/7knxzec1xmojr5x5t7xnu5a4u6lslmlf9v/041-88734.English.dist
fetching http://swcdn.apple.com/content/downloads/25/38/041-88737-A_IXJZSM8OLV/fq3xy3duoq3xqp9o2sa8dkjtz5wvjaojhq/041-88737.English.dist
fetching http://swcdn.apple.com/content/downloads/09/31/041-88738-A_WMEMEM44HQ/hox9b0vuev029dtitorkp40rsgjdnww4qm/041-88738.English.dist
fetching http://swcdn.apple.com/content/downloads/53/06/041-88735-A_5MC8H30E1T/uzofvyg87dqhkn2qh1ipxy4f1uxduhitsb/041-88735.English.dist
fetching http://swcdn.apple.com/content/downloads/24/61/041-88748/z2zwt4m9xtxt5sf64w9v5bz760cohxc2jc/041-88748.English.dist
fetching http://swcdn.apple.com/content/downloads/36/49/041-98163/n3zau0xy5j0a121vnvud3jac2ahplizknu/BootCampESD.dst/041-98163.English.dist
fetching http://swcdn.apple.com/content/downloads/63/06/041-88804/p3d1dt0il8vi5w3wrzepvrs3992dtmkfwb/041-88804.English.dist
fetching http://swcdn.apple.com/content/downloads/57/55/041-88815/dmx4z5azm5wktzh9qh8kiyrbz874wj9h4d/041-88815.English.dist
fetching http://swcdn.apple.com/content/downloads/47/29/041-89072-A_HZY5QI4LGV/knck1r3qmsw9nliisjjm7vll0zv1u239eu/041-89072.English.dist
fetching http://swcdn.apple.com/content/downloads/32/09/041-89042-A_XVZ2U8XKG2/06ub1qfep6wv3g8bb68smwt3ac25xyng83/041-89042.English.dist
fetching http://swcdn.apple.com/content/downloads/52/10/061-26579-A_7RJL96VW4I/z662ygc05hfe7cukb3itfbc8i1j7boxu95/061-26579.English.dist
fetching http://swcdn.apple.com/content/downloads/35/46/041-87995-A_EWCD1K4CH1/2b5jaj1p2oxqlpzgwat4bdqjpjs8n3mxip/BootCampESD.dst/041-87995.English.dist
fetching http://swcdn.apple.com/content/downloads/23/15/041-91731-A_LBI7Q8UWOG/juk1ng0hm623gxh3jv4qxt190ga1h5p0lw/041-91731.English.dist
fetching http://swcdn.apple.com/content/downloads/35/26/041-88148-A_FV1FQ1MLRG/qyueop2fculv8o6ybt2oq266qo98pqphb9/041-88148.English.dist
fetching http://swcdn.apple.com/content/downloads/41/45/061-26565-A_30YFW2NOY7/mcryv1yqxl8bmiok36kl4tiycf3g72uda5/061-26565.English.dist
fetching http://swcdn.apple.com/content/downloads/04/44/041-84708/yq9w47gthzu8e8fqmad6hx0vs15fuk4540/041-84708.English.dist
fetching http://swcdn.apple.com/content/downloads/45/20/041-85204-A_24VIQ2D28M/3ln1dqstqacwzknssu2fyu3rqhf3y3b94n/BootCampESD.dst/041-85204.English.dist
fetching http://swcdn.apple.com/content/downloads/05/20/041-85201-A_6JI09ZIRDD/sma4jd483vqdug5bqoemfohvvahjd4rewx/BootCampESD.dst/041-85201.English.dist
fetching http://swcdn.apple.com/content/downloads/26/08/041-84821-A_AMCFPC3QDK/4fffs8qgdflw7pn1finqqd40gifh41mvs6/041-84821.English.dist
fetching http://swcdn.apple.com/content/downloads/57/55/041-84868-A_402D0DFI39/6uz8hhgtd4b87t00mrq0uihiop5ivumsbk/BootCampESD.dst/041-84868.English.dist
fetching http://swcdn.apple.com/content/downloads/29/62/041-84859-A_GGUOSJMIGN/sb1apxcjpp358ze2df6bzhwd49m2cqyzy5/BootCampESD.dst/041-84859.English.dist
fetching http://swcdn.apple.com/content/downloads/50/29/041-84869-A_EJ35WAWA75/obofx71e3kcf8aqzukdrzg7hqpv1p06hca/BootCampESD.dst/041-84869.English.dist
fetching http://swcdn.apple.com/content/downloads/25/34/041-93123-A_M7QYPDZ8WH/dhg7w8ixxzaoay8anu1922grngi1sckdbn/041-93123.English.dist

Matching URL's are listed below.
http://swcdn.apple.com/content/downloads/04/44/041-84708/yq9w47gthzu8e8fqmad6hx0vs15fuk4540/BootCampESD.pkg
http://swcdn.apple.com/content/downloads/45/20/041-85204-A_24VIQ2D28M/3ln1dqstqacwzknssu2fyu3rqhf3y3b94n/BootCampESD.pkg
http://swcdn.apple.com/content/downloads/26/08/041-84821-A_AMCFPC3QDK/4fffs8qgdflw7pn1finqqd40gifh41mvs6/BootCampESD.pkg
http://swcdn.apple.com/content/downloads/57/55/041-84868-A_402D0DFI39/6uz8hhgtd4b87t00mrq0uihiop5ivumsbk/BootCampESD.pkg

The results show there are 4 possible URL’s. Entering each URL in Safari will cause a version of the Boot Camp Support Software to download. The correct download would have to be determined by inspection.

Note: By default, the .pkg installer places a .dmg file in the "/Library/Application Support/BootCamp" folder. The .dmg file contains the Windows Support Software.

This script was tested using GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17). The version of macOS was High Sierra 10.13.6.

Hint: You can paste the function GetPkgUrl into a Terminal application window running BASH instead of creating a script file.

Related Articles

Latest Articles