Apple - How do I download macOS High Sierra for offline install?

Answering my own question:

From the App Store, grab the High Sierra installer. It will launch "Install macOS High Sierra" after the download completes. Click "Continue", accept the licensing agreement, select the install drive, then the installer will prompt for an admin password. After that, it will begin downloading to "/macOS Install Data" on the local machine.

The main data file is

/macOS Install Data/InstallESDDmg.pkg

When the download is complete, the installer will prompt for a system restart. Before doing that, inspect the download directory:

sudo find /macOS\ Install\ Data  -type f -exec ls -l {} \;
-rw-r--r-- 1 user staff 328        Dec  4 19:03 '/macOS Install Data/AppleDiagnostics.chunklist'
-rw-r--r-- 1 user staff 2613173    Dec  4 19:03 '/macOS Install Data/AppleDiagnostics.dmg'
-rw-r--r-- 1 user staff 1948       Dec  4 19:03 '/macOS Install Data/BaseSystem.chunklist'
-rw-r--r-- 1 user staff 478740408  Dec  4 19:04 '/macOS Install Data/BaseSystem.dmg'
-rw-r--r-- 1 user staff 2124       Jan  8 08:39 '/macOS Install Data/index.sproduct'
-rw-r--r-- 1 user staff 4706541399 Dec  4 19:09 '/macOS Install Data/InstallESDDmg.pkg'
-rw-r--r-- 2 user wheel 1584       Dec  4 19:09 '/macOS Install Data/InstallInfo.plist'
-rw-r--r-- 1 root wheel 893        Jan  8 07:38 '/macOS Install Data/Locked Files/.disk_label'
-rw-r--r-- 1 root wheel 15         Jan  8 07:38 '/macOS Install Data/Locked Files/.disk_label.contentDetails'
-rw-r--r-- 1 root wheel 3557       Jan  8 07:38 '/macOS Install Data/Locked Files/.disk_label_2x'
-rwxr-xr-x 1 root wheel 23520      Dec  1 12:37 '/macOS Install Data/Locked Files/cleanup_installer'
-rw-r--r-- 1 user staff 269647     May 17  2017 '/macOS Install Data/OSX_10_13_IncompatibleAppList.pkg'

Then, copy the download directory off to another machine for future use.


As @spacebiker pointed out in his answer, the best way is to create a bootable USB Stick for offline install with the tool createinstallmedia that comes with the installer. For this the full installer download is necessary (about 5.23 GB), while most of the time only a stub version (about 20 MB) is downloaded from MAS. (If you don't have High Sierra in the purchase history, follow the link in this page from Apple's KB)

Beside the manual ways to assemble the full installer from the temp. downloads during installation outlined in various other answers here, there is now a second officially supported source available if you happen to have a Mac running Catalina or above available which is also compatible to run the OS to download:

softwareupdate --fetch-full-installer --full-installer-version 10.13.6

With that the full installer is downloaded and placed in /Applications so you can directly use createinstallmedia from it:

sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB/ --applicationpath /Applications/Install\ macOS\ High\ Sierra.app

When I tried to create a bootable installer for High Sierra I came across the problem that the installer downloaded from the App Store proved to be a "stub" version. This issue was reported in several places, so for example in the current thread and also here macOS High Sierra media installer .

To be honest, I was tired of trying out one workaround after the other that bright people worked out in order to overcome this issue and that, for better or for worse, fixed my issue . So I decided to trust Greg Neagle's approach and to apply his script to solve the problem. That's how it worked for me:

  1. Fetch installinstallmacos.py script from
    https://github.com/munki/macadmin-scripts/blob/master/installinstallmacos.py
  2. Run

    sudo python /path_to/installinstallmacos.py  --catalogurl https://swscan.apple.com/content/catalogs/others/index-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog --raw
    

    The running script now offers a list of installer products for selection:

    #    ProductID    Version    Build   Post Date  Title
    1    041-91741    10.13.6  17G2208  2019-10-13  macOS High Sierra
    2    061-96006    10.15.4   19E287  2020-04-08  macOS Catalina
    3    041-91758    10.13.6    17G66  2019-10-19  macOS High Sierra
    4    061-86291    10.15.3  19D2064  2020-03-23  macOS Catalina
    5    061-26589    10.14.6   18G103  2019-10-14  macOS Mojave
    6 061-96006::1    10.15.4   19E287  2020-04-08  macOS Catalina
    7    041-88800    10.14.4  18E2034  2019-10-23  macOS Mojave
    8    041-90855    10.13.5   17F66a  2019-10-23  Install macOS High Sierra Beta
    9    061-26578    10.14.5  18F2059  2019-10-14  macOS Mojave
    

    In our case we choose option 3 .

    The script terminates successfully. Data created:

    /path-to-working-dir/Install_macOS_10.13.6-17G66.sparseimage
    and a directory
    /path-to-working-dir/content

  3. We now open the sparseimage by DiskImageMounter (via Finder) and drag the installer .app file into /Applications which, in our case, is Install macOS High Sierra.app

  4. Now we can create the bootable installer on an appropriate volume:

    sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/volume_to_contain_high_sierra_installer  --applicationpath /Applications/"Install macOS High Sierra.app"
    
  5. For test: Boot into the newly created installer residing on an external HD and upgrade a clone of the Macintosh HD with OS X 10.11.6 El Capitan to macOS High Sierra 10.13.6 where this clone resides on another external HD; both HDs connected to the machine via a USB 3 hub. The installation process ran without any problems and took somewhat less that an hour.

Hardware-Software-Environment
MacBook Pro Early 2015 running OS X 10.11.6 El Capitan. There is no encryption enabled.

Some comments on the installinstallmacos.py script

  1. It is an open source tool of about 600 lines written in Python. This tool scans Apple´s regular Software Update catalogs and is able to create a wide range of macOS installers. From my point of view, the code is the opposite of being opaque; with some basic Python knowledge you can read through the code and get the ideas behind. A brilliant piece of software!

  2. Processing steps; citation from reference #2 below:

    1. Parse a specified Software Update feed.
    2. Identify the listed products which appear to be macOS installers.
    3. Display a menu of the available choices.
       Once you’ve selected from the available options, the script does the following:
    4. Creates a disk image and names it with the appropriate information for the specified macOS installer.
    5. Mounts the disk image.
    6. Downloads all the relevant packages from the Software Update feed for the specified macOS installer.
    7. Installs the packages onto the disk image.
    8. Unmounts the disk image.
    9. Stores the disk image in the current working directory (this is likely going to be the logged-in user’s home folder.)
    
  3. installinstallmacos.py help text:

    usage: installinstallmacos.py [-h] [--seedprogram SEEDPROGRAM]
                              [--catalogurl CATALOGURL]
                              [--workdir path_to_working_dir] [--compress]
                              [--raw] [--ignore-cache]
    optional arguments:
    -h, --help            show this help message and exit
    --seedprogram SEEDPROGRAM
                        Which Seed Program catalog to use. Valid values are
                        PublicSeed, CustomerSeed, DeveloperSeed.
    --catalogurl CATALOGURL
                        Software Update catalog URL. This option overrides any
                        seedprogram option.
    --workdir path_to_working_dir
                        Path to working directory on a volume with over 10G of
                        available space. Defaults to current working
                        directory.
    --compress            Output a read-only compressed disk image with the
                        Install macOS app at the root. This is now the
                        default. Use --raw to get a read-write sparse image
                        with the app in the Applications directory.
    --raw                 Output a read-write sparse image with the app in the
                        Applications directory. Requires less available disk
                        space and is faster.
    --ignore-cache        Ignore any previously cached files.
    

References

  1. Greg Neagle about functionality and usage of his installinstallmacos.pyscript:
    A script to download the components for a macOS installer from Apple's softwareupdate servers and then install those components as a working "Install macOS High Sierra.app" onto a disk image.
    https://github.com/munki/macadmin-scripts/blob/master/docs/installinstallmacos.md

  2. Documents installinstallmacos.py a use-case creating macOS High Sierra installers.
    https://derflounder.wordpress.com/2018/02/27/using-installinstallmacos-py-to-download-macos-high-sierra-installers/