I started this project some months back called ExWrap with the goal of turning any application written in any programming language into an executable.
It works for MacOS, Windows, and Linux with support for cross-generation (i.e. you can generate a Windows executable on Linux).
I haven't worked on it for a while, but it's usable.
I'm looking for suggestions, ideas, corrections, and generally contributions. A reason to revisit the project.
It uses a pre-built launcher for the platform. During packaging, a config file is generated to tell the launcher how to launch the app based on the user's configuration.
For MacOS app bundles, the prebuilt launcher is the primary target of the bundle declared in the plist file while for Windows and Linux, the generated executable acts as a self-extracting archive that launches the app post extraction. On Windows and Linux, the extracted app can also be run directly if the extraction path is added to system path.
So basically on Linux and Windows, it also acts as an installer.
It's actually configurable and allows pre-installation and post-installation configuration that can run any command or script to do the installation of dependencies. You can also cleverly add the dependencies as part of the packaged data. This is very useful for packaging static libraries along with the executable.
If you were generating for OSX from Windows for example, all you need is to download the OSX libraries and point to it from your configuration.
I believe there's room for more improvement.
mcfriendsy•4h ago
I started this project some months back called ExWrap with the goal of turning any application written in any programming language into an executable.
It works for MacOS, Windows, and Linux with support for cross-generation (i.e. you can generate a Windows executable on Linux).
I haven't worked on it for a while, but it's usable.
I'm looking for suggestions, ideas, corrections, and generally contributions. A reason to revisit the project.
It uses a pre-built launcher for the platform. During packaging, a config file is generated to tell the launcher how to launch the app based on the user's configuration.
For MacOS app bundles, the prebuilt launcher is the primary target of the bundle declared in the plist file while for Windows and Linux, the generated executable acts as a self-extracting archive that launches the app post extraction. On Windows and Linux, the extracted app can also be run directly if the extraction path is added to system path.
So basically on Linux and Windows, it also acts as an installer.
It's actually configurable and allows pre-installation and post-installation configuration that can run any command or script to do the installation of dependencies. You can also cleverly add the dependencies as part of the packaged data. This is very useful for packaging static libraries along with the executable.
If you were generating for OSX from Windows for example, all you need is to download the OSX libraries and point to it from your configuration. I believe there's room for more improvement.
All feedbacks and suggestions are welcomed.