After hundreds of hours spent on your Haxe / Heaps project, you probably want to release it at some point.
All you want in the end is a basic Executable file that you could push on your favorite distribution platform. Let’s see how we could do that.
RedistHelper is a free tool I wrote to facilitate my RPG Map redistributables creation. It makes the whole process automated and hassle free.
Install latest stable version
From a command line, just get the latest release by running:
haxelib install redistHelper
You will need my general purpose libs too:
haxelib install deepnightLibs
Optionally, you can also you the latest GitHub version using the following command. Be careful though, as it might be unstable.
haxelib git redistHelper https://github.com/deepnight/redistHelper.git
haxelib git deepnightLibs https://github.com/deepnight/deepnightLibs.git
The most basic way to use is to open a command line inside your project root (where the HXML files are), then type:
haxelib run redistHelper
This will display the tool help, including some examples.
To package your project, just run:
haxelib run redistHelper myProject.hxml
RedistHelper will parse your HXML and create a
redist folder containing all the required files. You can simply distribute that package and it should work :)
You can package all your HXML files in one single call:
haxelib run redistHelper gameHashlink.hxml gameJs.hxml gameSwf.hxml
You can optionally add the following parameters to the RedistHelper command:
-zip: will create a ZIP archive for each package
-v: enable verbose mode (mostly useful for debugging)
Embedding extra files
You might need to add some extra files to your packages, like a README or a LICENSE. Just add their path to you RedistHelper command:
haxelib run redistHelper game.hxml docs/README docs/license/LICENSE
You can rename any extra file on the file by adding a “@” to their path:
haxelib run redistHelper game.hxml docs/README@readme.txt
The goal here is to turn your app into classic and easy to distribute Windows Executable (EXE).
When packaging HashLink (HL) projects, RedistHelper will copy all the required runtime files directly from the Haxe and HL folders from your system. This includes DLL and NDLL, the HL executable and a few other things.
project.hl file will be renamed to
hlboot.dat which is the default file loaded by
hl.exe when it’s run without parameters (see link).
hl.exe itself is renamed to something closer to your actual project name, feel free to rename as you wish.
If your HXML uses the
hldx library, the redistHelper will package a DirectX folder.
If your HXML uses the
hlsdl library, the redistHelper will package a OpenGL (SDL) folder.
You can use the
-hl32 to also package a 32 bits version of the HL runtimes, for older systems. Warning: this will use the last release HL 32 bits (1.10). All recent HL updates won’t be included!
When packaging a JS target project, RedistHelper will produce a basic HTML file to load your app properly. You can use it to create your own integration.
In your HTML
body, you basically should have something like that:
Please note that the
webgl ID is important here, as it’s the primary target for web apps build with using Haxe.
Neko is a lightweight virtual machine for Haxe which can be useful to build small command line tools for example.
RedistHelper will turn your Neko binary file (
*.n) into a Windows Executable and add all the required runtime files.
While Flash is supported, it’s not super useful here, as the SWF file is already a package in its own.
Distributing on platforms
You have 2 ways to push an app on Itch.io:
If you install it, Butler can be used right from the command line to upload your fresh new build to itch.io in a single command line:
butler push redist/directx myUserName/my-app-name:win-directx64
If you want to upload a JS app that should be played right from the user browser on the itch.io website, you just have to package your app using the
haxelib run redistHelper myJsGame.hxml -zip
This will create a ZIP archive that you can easily upload to your dashboard, or send using Butler.
RedistHelper is open source (under MIT license). You can download the source, adapt to your needs or add more packaging targets.
does heaps support ios or android as build targets? if so does redistHelper support those too?
Hi, Heaps supports iOS/Android in theory, but the documentation is lacking to say the least. You might want to get in touch with Playdigious team that ported Dead Cells to mobile for more info, or try the official Haxe discord?
Super, j'ai réussi à faire mon .exe en 2 min alors que j'ai passé 2 semaines à essayer de passer par HL/C … :(
J'ai dû fournir mon fichier res/ pour load les images ou autres par contre
C'est possible de passer le dossier res en "embed", c'est à dire compilé avec le code. C'est via hxd.Res.initEmbed il me semble de mémoire