You may have used one of my HandyScripts to install High Sierra. The problem with these scripts was that I had to update them for every new Developer Preview. And that was a burden. Taking too much time, and that is why I converted the bash scripts to a much smarter python variant. I started to work on it back in July, but it is still ugly, and I had never used it. Not until today.
Update: installSeed.py v1.7 includes bug fixes so you better use the latest version!
Updates: installSeed.py v1.8 is now available. This update downloads the correct i18n dictionary.
installSeed.py v1.9 is now available. This update includes minor cleanups and a version number error fix.
installSeed.py v2.0 is now available. This update exits gracefully, with instructions to install pip/request module.
Anyway. We first have to make some preparations. Open a terminal window and enter:
sudo easy_install pip sudo pip install requests
That should get you ready for installSeed.py. The output of installSeed.py is pretty much similar to that of the previous bash scripts:
Available target volumes: [ 0 ] MackintoshHD [ 1 ] High Sierra Select a target volume for the boot file: 1 Seed Program Enrollment: DeveloperSeed File: BaseSystem.chunklist already there, skipping this download. File: InstallESDDmg.pkg already there, skipping this download. File: InstallAssistantAuto.pkg already there, skipping this download. File: AppleDiagnostics.chunklist already there, skipping this download. File: InstallESDDmg.chunklist already there, skipping this download. File: OSInstall.mpkg already there, skipping this download. File: InstallInfo.plist already there, skipping this download. File: RecoveryHDMetaDmg.pkg already there, skipping this download. File: BaseSystem.dmg already there, skipping this download. File: AppleDiagnostics.dmg already there, skipping this download. Creating installer.pkg ... productbuild: Wrote product to /Volumes/High Sierra/tmp/091-30125/installer.pkg Running installer ... Password: installer: Package name is Install macOS High Sierra Beta installer: Installing at base path /Volumes/High Sierra installer: The install was successful. Copying: InstallESDDmg.pkg to the target location ... Copying: AppleDiagnostics.dmg to the target location ... Copying: AppleDiagnostics.chunklist to the target location ... Copying: BaseSystem.dmg to the target location ... Copying: BaseSystem.chunklist to the target location ..
The good thing (for me) is that with the introduction of installSeed.py I no longer need to update the file for every new Developer Preview.
Oh. One last note. The file /Users/Shared/.SeedEnrollment.plist should be this:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>SeedProgram</key> <string>DeveloperSeed</string> </dict> </plist>
If you have a backslash in the first line, then please remove it before running installSeed.py
Have fun!
Hi piker,
Looks like it’s not working with non English setups :
Available target volumes:
[ 0 ] Archive
[ 1 ] BOOTCAMP
[ 2 ] EFI
[ 3 ] Install
[ 4 ] OSX
[ 5 ] Time Machine
Select a target volume for the boot file: 3
Seed Program Enrollment: DeveloperSeed
Downloading: RecoveryHDMetaDmg.pkg …
Downloading: BaseSystem.dmg …
Downloading: InstallESDDmg.pkg …
Downloading: InstallAssistantAuto.pkg …
Downloading: OSInstall.mpkg …
Downloading: InstallInfo.plist …
Downloading: AppleDiagnostics.dmg …
Downloading: AppleDiagnostics.chunklist …
Downloading: InstallESDDmg.chunklist …
Downloading: BaseSystem.chunklist …
Traceback (most recent call last):
File “/Users/krazubu/Downloads/HandyScripts-master/installSeed.py”, line 189, in
os.remove(distributionFile)
OSError: [Errno 2] No such file or directory: ‘/Volumes/Install/tmp/091-30125/091-30125.English.dist’
We should have a check there. Not try to remove the file when it isn’t even there.
Check added. Committed as v1.5 Please try again. Thanks!
Problem fixed 🙂
Great. Thank you.
Hi, it’s me again, I talked too quickly. This time the script reaches the end, however, when I launch the install app, it tells me it’s damaged and cannot be used.
Thanks. Can you please try something. The problem is most likely that the created installer.pkg is copied to SharedResources as installESD.dmg (5.15GB) instead of installESDDmg.pkg I fixed this but I cannot commit anything right now.
1.) remove SharedResources/installESD.dmg
2.) rename SharedResources/installESDDmg.pkg to installESD.dmg
3.) Try again.
Edit: This errors should now be fixed (again) in v1.6
I had already tried that, though there was indeed a problem there, that’s not enough, the installer still doesn’t start. What I find weird is that if I launch OSInstall.mpkg in the raw download folder, it complains about signature being invalid. Is this normal ? I tried to remove it and let it redownload.
No! What is the md5 of that file?
Edit: Yes it is. No problem here!
Note: Relaunch the script and let it check the file sizes, so that it can replace broken files!
MD5 (OSInstall.mpkg) = 7ed673fa49ab9ab70a9666e24611b207
I redownloaded it several times already, the script doesn’t complain if I let it there.
I have the same md5 and the install process works here. I just ran the beta.app and everything is fine. Please check the install.log
See also: OSInstall.mpkg appears to be missing or damaged
I just did it again from scratch, it’s now working, even though OSInstall is still “damaged”
Thank You Pike!! for your effort providing the script. Just for the record I report back that script v1.6 is working OK on this side. As result a folder is created at indicated destination, included therein ‘Install macOS High Sierra Beta.app’ (checksum passes at startup).
MD5 OSInstall.mpkg = 7ed673fa49ab9ab70a9666e24611b207
I’m getting this with the v3.3.
urllib2.URLError:
The previous version lacked support for later macOS versions, but that should be fixed in v3.4 so please give it a try.
Edit: There are three calls to urllib2.urlopen() and none of them checks for errors, so it is really hard to tell where it fails. I’ll put that on my TODO list.
Thank you for reporting this here!
Update: Checks added to urllib2.urlopen() in version 3.5
Good!!! All done.
Piker the legend 🙂