Standalone-Anwendungen mit node-webkit

node-webkit demo window

Gestern habe ich ein wenig in node-webkit reingeschnuppert. Damit sollen sich ganz einfach Desktop-Anwendungen auf Basis von HTML, JavaScript und Node.js erstellen lassen. Die erstellte Anwendung lässt sich dann relativ einfach für verschiedene Betriebs­systeme verpacken. Für nicht allzu rechen-intensive Spiele scheint mir das recht interessant. Tatsächlich verwendet auch das kürzlich erschiene A Wizard's Lizard node-webkit [1].

Für eine kleine Demo habe ich das Beispiel von three.js genommen und als Anwendung verpackt. Das HTML und JavaScript lasse ich hier mal aus. Mein package.json für ein Fenster ohne Toolbar sieht wie folgt aus:

{
	"main": "index.html",
	"name": "nw-demo",
	"window": {
		"frame": true,
		"height": 600,
		"kiosk": false,
		"toolbar": false,
		"width": 900
	}
}

Den Inhalt des Projekt-Verzeichnisses verpackt man als nächstes als ZIP-Archiv:

zip -r demo.nw *

Diese Datei lässt sich mit nw demo.nw ausführen, benötigt aber eben weiterhin node-webkit auf dem System. Im nächsten Schritt wird node-webkit daher in das Archiv integriert:

cat ~/node-webkit-v0.10.5/nw demo.nw > demo && chmod +x demo

Versucht man nun ./demo auszuführen, gibt es eine Fehlermeldung:

[13445:1019/161018:FATAL:content_main_runner.cc(751)] Check failed: base::i18n::InitializeICU().

Im selben Verzeichnis wie die Standalone-Anwendung müssen auch die Dateien nw.pak und icudtl.dat liegen. Beide Dateien finden sich im selben Verzeichnis wie nw, hier also ~/node-webkit-v0.10.5/. Einfach herüberkopieren und die Anwendung lässt sich starten.


Meine kleine Demo habe ich auf GitHub hochgeladen. Darin befindet sich auch ein Build-Skript für Linux, das sich um alles kümmert. Es muss nur der Pfad zur node-webkit-Installation angepasst werden.


[1] forum.lostdecadegames.com/topic/115/node-webkit-and-steam