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 thefetching
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.