<ul dir="auto">
<li>Electron version: 0.30+</li>
<li>Operating system: Windows, Mac &amp; Linux</li>
</ul>
<p dir="auto">There are plenty of small &amp; large desktop applications <a href="https://github.com/sindresorhus/awesome-electron">made in Electron</a>, and while core application logic may be under a few megabytes, the installer (having its own Electron bundled) itself adds over 60 MB of weight. Once I have couple of Electron based apps installed, I have multiple Electron binaries installed dedicated for each single app.</p>
<p dir="auto">Now, I'm aware that each such app <strong>may be using a different version of Electron itself (relying on features &amp; bugs of a particular version to get the job done)</strong>, but that's the point here, to make sure that run-time serves the platform and apps carry just its own dependencies (NPM modules unrelated of Electron), thus making resulting installers way less in size. Look at JVM or Adobe AIR, for example.</p>
<p dir="auto">Obviously there can be special scenarios where Electron is patched for a particular app (<a href="https://github.com/brave/browser-laptop">Brave</a> browser for instance, has process sandboxing enabled, a feature not natively supported in Electron itself), in such case installer can carry runtime along, but trivial applications don't need it.</p>
<p dir="auto"><a href="https://github.com/brrd/Abricotine/releases">Abricotine</a> is one such example, where it is plain Markdown editor (and source is measly <strong>2 MB</strong>), but 64bit Windows installer is <strong>75 MB!</strong>.</p>
<p dir="auto">This problem of redundant installations is only going to add bloat as adoption of technologies like Electron &amp; NW.js increases to create Desktop applications (being dead simple to get apps running instead of going a native route).</p>
<p dir="auto">Thanks.</p>
<p dir="auto">Currently developers using atom-shell have to ship the whole atom-shell binaries when distributing their apps, but since now we have <a href="https://github.com/atom/asar">asar</a> as atom-shell's app format, we may add runtime mode to atom-shell like <a href="http://www.adobe.com/products/air.html" rel="nofollow">Adobe Air</a> or <a href="https://developers.google.com/chrome/apps/docs/developers_guide" rel="nofollow">Chrome Hosted Apps</a> that developers only need to distribute packaged app in <code class="notranslate">asar</code> format as long as end users have the runtime mode of atom-shell installed.</p>
<p dir="auto">The runtime mode can just be another app based on atom-shell (let's call it <code class="notranslate">atom-runtime</code> for now), and has deep platform integrations:</p>
<ul dir="auto">
<li>On Windows, we can provide installer and auto updater for atom-runtime, and register the <code class="notranslate">.asar</code> file type to be opened with it.</li>
<li>On Linux, we provide official software sources of atom-runtime for some popular distributions, and also register atom-runtime as handler of <code class="notranslate">.asar</code> files.</li>
<li>On Mac, we need to provide a tool to help users package their apps into Mac bundles. We can reference how Steam created bundles for downloaded games, or how Parallel created bundles for applications in hosted OS.</li>
</ul>
<p dir="auto">We can even provide a tool or service to help generating installers for developers' apps which can automatically download atom-runtime if it is not installed on user's machine, just like many .NET applications.</p>