# extract-installer

> **Tool `scripts/extract-installer.sh`** (script, Scripts). Get a game's files out of the installer or package it came in, without running it.

Run it as `scripts/extract-installer.sh`. [Source on GitHub](https://github.com/tanepiper/game-frame/blob/main/scripts/extract-installer.sh).

## Its own help

This is the help text in the tool itself, as `./gameframe tool extract-installer` prints it.

```text
Get a game's files out of the installer or package it came in, without running it.

  scripts/extract-installer.sh INSTALLER OUT_DIR    detect the kind, then extract into OUT_DIR
  scripts/extract-installer.sh --detect INSTALLER   only say what kind it is and which tool reads it

Kinds and the tool used (install the tool with scripts/setup.sh --install):
  Inno Setup .exe (GOG and many others; GOG's extra .bin parts next to it are read too)  innoextract
  NSIS .exe (Nullsoft)                    7z
  InstallShield cabinets (data1.cab ...)  unshield, else 7z
  Windows Installer .msi                  7z
  .zip .7z .rar .cab, self-extracting archives          7z (or unzip for .zip)
  GOG Linux .sh (MojoSetup: a zip appended to a script)  unzip
  macOS .dmg                              hdiutil (mounted read-only, copied, detached)
  macOS .pkg                              pkgutil --expand-full
  CD images: .cue with .bin, .iso, raw .bin  tools/disc/discinfo.py --extract (and --audio
                                          for CD audio tracks; it also lists the tracks)
  macOS .app                              copied as it is; a tiny app is often only a web
                                          installer (GOG Galaxy's), with no game inside
It never runs the installer. Extract into an ignored folder (target/), never into git.
```

## Named by

Skills: [re-inventory](/skills/re-inventory).
