[[sfx]] == Self-extracting releases Erlang.mk allows you to package xref:relx[Relx releases] as self-extracting archives. These archives contain all the files in the release and come in the form of a script that will extract and run the release automatically. This allows you to package the release as a single file that can then be executed. This feature is currently experimental. Feedback is much appreciated. === Generating the self-extracting archive To generate a self-extracting release, all you need to do is pass the `SFX=1` variable to Make when you build the release: [source,bash] $ make SFX=1 This will create a self-extracting archive in `$RELX_OUTPUT_DIR/.run`. For example if the release is named `hello_world` and `$RELX_OUTPUT_DIR` is the default, the file will be located at `_rel/hello_world.run`. === Running the release Simply execute the script to get started: [source,bash] ---- $ ./_rel/hello_world.run Exec: /tmp/tmp.3eeEq7E1ta/erts-8.1/bin/erlexec ... Root: /tmp/tmp.3eeEq7E1ta /tmp/tmp.3eeEq7E1ta Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:4:4] ... Eshell V8.1 (abort with ^G) (hello_world@localhost)1> ---- As you can see the archive is extracted to a temporary directory before the release can be started. The self-extracting script currently only supports starting the release in `console` mode.