This PR adds an API enabling Electron to set itself as the default
protocol handler for a custom porotocl on both oS X and Windows.
For details, please see `docs/app.md`.
Closes#4857
Instead of abrupting the whole program immediately, we should close all
windows and release all native resources gracefully on exit. This avoids
possible crashes.
Fix#3350.
When user drags exe file into taskbar directly the pinned icon will not
has an app user model id, so if we set app user model id in the
application two icons will show in the taskbar.
For apps installed with a installer it is not a problem since the
shortcut icon will be created with app user model id, but we should also
keep the ability to make portable apps work out of box.
Fix#3303.
OS X's application termination doesn't work very well with C++ message
loops. Especially when we return NSTerminateLater for shouldTerminate,
it would be impossible for the C++ message loop to quit, because unless
we explictly let NSApp terminate the application, the message loop would
think the application is not terminated and will run forever.
The fix is to simply ignore the Cocoa's application termination request
and let the C++ message loop deal with it compeletey. But we had the
side effect that atom-shell would always cancel OS X's shutdown request,
this is also the approach chosen by Chromium.
Fixes#229.
Fixesatom/atom#1864.