Exporting desktop apps with NW.js

Favourite 54 favourites
Tutorial written by AshleyOriginally published on 13th, November 2014 - 6 revisions

Construct 2 can export your project as a traditional desktop app with NW.js, which is basically a standalone version of the Google Chrome browser. In other words it's very much like having your project run in Chrome, but without the user needing to have Chrome installed on their computer, and without the browser parts showing like the address bar so it looks like a native app. This tutorial covers some tips and tricks when using this export option.

NW.js exports Linux, Mac OS X and Windows desktop apps. Both 32-bit and 64-bit variants are available for Linux and Windows. OS X only provides a 64-bit build, since all modern Mac systems are already 64-bit.

Note NW.js was formerly known as node-webkit.

Installing NW.js support

Since the NW.js files covering all platforms take up a lot of space, from Construct 2 r187 and above NW.js support must be installed separately. To install NW.js support, visit scirra.com/nwjs for the free download. If you try to preview or export with NW.js without having installed NW.js support, you will be prompted to visit that page to get it. You don't need to restart Construct 2 after installing NW.js support, it should work as soon as the NW.js installer finishes.

Note from Construct 2 r217, only NW.js 0.13+ is supported. Correspondingly, versions r216 and older only support NW.js 0.12 and older.

NW.js specific features

Desktop apps have unique privileges not normally available from web apps, such as the ability to write files directly to disk. The NW.js object allows you to use such features. Remember however if you ever want to port your project to a different platform, none of the NW.js object features will work. You may need to disable some functionality or use other features instead. It may be easier to design your project to be portable from the start; for example Local Storage and savegames work on all platforms, whereas writing files to disk will only work with NW.js.

To run NW.js exports in fullscreen mode, as with other platforms use the Browser object's Request fullscreen action. You can use this action in On start of layout in NW.js whereas in web browsers it is normally ignored unless used in a user-input trigger such as On object clicked.

You can also test NW.js features in Construct 2's preview mode by setting the Preview browser project property to NW.js. This runs the 32-bit Windows version of NW.js - to test on other platforms you will need to export.

Export options

When exporting, you can choose the following options:

Window frame: display the operating system window caption and frame around the display.
Resizable window: allow the window to be resized. Note this is only useful if Window frame is enabled.
Kiosk mode: use a "kiosk" display mode, where the app runs in fullscreen and tries to prevent the user from leaving.

Publishing on Windows

When publishing Windows apps, NW.js only supports the faster and more powerful WebGL rendering mode if the latest DirectX runtime components are installed. The exported dxwebsetup.exe file installs these if they are not already present on a user's system. You should ensure this is installed on user's systems before running your project, for example by creating an installer for your game that runs the file as one of the installation steps. You can pass the /Q parameter to the dxwebsetup.exe installer to run in "quiet" mode (where it runs automatically without prompting the user). Note if the user does not have the latest DirectX runtime components installed, the game may fall back to a software-rendered canvas2d renderer and run with poor performance. If users still experience issues after installing dxwebsetup.exe, especially crashes, poor performance or graphical glitches, encourage them to update their graphics driver since many issues can arise from out-of-date drivers.

Publishing on OS X and Linux

The most common problem with publishing to OS X and Linux is the execute permission for the executable files. File permissions work slightly differently on Windows, and it generally recognises any file ending in .exe as something that can be run. On OS X and Linux, executable files have no special file extension, instead requiring an "executable" file permission to be set. Windows is not usually aware of this, so if you copy files from Windows to an OS X or Linux system, the files may not have execute permission and therefore fail to run.

On Linux, the following command enables execute permission for the file 'mygame'. Run this from the terminal to ensure the file can be run:

chmod a+x mygame

On Mac OS X, there are actually several files inside the app package that need to be executable. The easiest way to preserve the permissions is to copy the exported project using OS X instead of Windows. If you network a Windows and OS X machine together, log in to Windows, and copy the files to the OS X system, it isn't aware of the file permissions and can lose the execute permission, causing the resulting app to fail to run on OS X. However if you log in to OS X and copy the files from the Windows system, it preserves the permissions and should produce an app that can run.

Conclusion

Using NW.js you can publish desktop apps for the leading three desktop operating systems with integrated features like disk access and fullscreen display. However remember that users should run dxwebsetup.exe on Windows, and that it is easy to lose execute permission if copying from Windows to a different OS.

Unlock your full gamedev potential

Upgrade to the Personal Edition of Construct 2, it has way more features and won't holding back from making money and using your full creativity like the free edition does. It's a one off payment and all Construct 2 editor updates are free for life!

View deals

Plus, it's got a lot of additional features that will help you save time and make more impressive games!

Congratulations on finishing this tutorial!

Did you learn a lot from it? Share it now with your friends!

Share and Copy this Tutorial

You are free to copy, distribute, transmit and adapt this work with correct attribution. Click for more info.

Comments

0
Seljumnik 202 rep

You're my hero - I love you.

Monday, April 04, 2016 at 8:36:58 PM
0
Kenthria 3,169 rep

Wow exporting to OS and Linux when you have a Windows computer is mega confusing.

Friday, April 15, 2016 at 12:20:03 PM
0
ethanpil 2,591 rep

There are 30 versions of nw.js on the official scirra nw.js download page at www.scirra.com/nwjs

Many of these are set to to work with Construct2 217 but how do I know which one is best? Why wouldn't I always want the newest one? Whats the general rule regarding when to update nw.js for my system?

Monday, August 08, 2016 at 2:48:47 PM
0
burningcake 4,573 rep

what can i do to reduce the enormous size of a windows version ? Packing with UPX etc cant be the only way

Tuesday, November 08, 2016 at 10:37:29 AM

Leave a comment

Everyone is welcome to leave their thoughts! Register a new account or login.