npm.io
1.2.1 • Published 2 months agoCLI

which-electron

Licence
MIT
Version
1.2.1
Deps
10
Size
29 kB
Vulns
0
Weekly
0
Stars
1

which-electron npm Libraries.io dependency status for latest release NPM

Find out which Electron version is bundled inside an application.

Usage

$ npm install which-electron

$ which-electron Google.Play.Music.Desktop.Player.OSX.zip
Version Constraint (Unsupported): <v7.0.0
Fingerprint: v3.1.7-v3.1.8
v3.1.8 is currently not supported

$ which-electron HashTag-win32-x64.zip
Found Version file: v7.1.10
v7.1.10 is currently not supported
Fingerprint: v7.1.10
v7.1.10 is currently not supported

$ which-electron Appium-linux-1.21.0.AppImage
Fingerprint: v7.2.4-v7.3.3
v7.3.3 is currently not supported

$ which-electron https://github.com/stoplightio/studio/releases/download/v2.3.0-stable.5931.git-67616e9/stoplight-studio-mac.dmg
Downloaded https://github.com/stoplightio/studio/releases/download/v2.3.0-stable.5931.git-67616e9/stoplight-studio-mac.dmg
/tmp/which-electronaN3QGg/stoplight-studio-mac.dmg
Fingerprint: v11.0.5-v11.1.1
v11.1.1 is currently not supported

How does it work?

We attempt multiple pathways:

  1. We use 7z+vscode's ripgrep build to do a binary grep for a electron version regex.
  2. The presence of a electron.asar file denotes an electron version <v7.0.0, since later releases dropped that file and embedded it in the binary instead.
  3. A version text file is sometimes included in the final binary.
  4. The node_modules/electron/package.json file is sometimes present.
  5. A lookup table of hashes from various electron releases is used to guess the version. In case of multiple matches, it returns a range of versions.

Note that this can be run against untrusted binaries as it does not try to run the application. It has been tested against various file formats: zip/dmg/exe/AppImage/tar.gz etc. It extracts limited files using 7-zip to a temporary directory at runtime if needed.

Known Issues

It is known to not work against:

  1. Windows setup files (ones with -setup in their name)
  2. On systems without 7-zip installed, it falls back to an older version of 7zip via the 7z-bin package on NPM. Unfortunately, the older version can't extract AppImage files correctly.

License

Licensed under the MIT License. See LICENSE file for details.