Software to package built Xojo Apps in a single executable?

I know this has been discussed in the past, but things do change and I wanted to see if anyone has tried the following to package built Windows Apps and possibly Linux Apps. This isn’t really needed for MacOS apps as they are already packaged. My main interest here is, has anyone tried these and have feedback to offer?

ExeBundle - Packages any Windows application including its DLLs, Resources, etc. into a single self-contained EXE

wrappe - Packs an entire directory (EXE + DLLs + assets) into one compressed executable. Supports Windows, MacOS and Linux

I think these would be quite useful for some of the projects I’m working on. I’d appreciate any feedback based on actual testing and/or use of either of these two. And if you know of other such tools that would fit the bill, I’d love to hear about them.

Thanks!

if the intention is for a test run.
i am happy with zip and unzip build folder at any place and start exe from there direct or create a link.

see me as user for permanent app i want a setup (install over) or download/update from shop.

I ran some tests a few years ago with Enigma Virtual Box ( Software Protection, Software Licensing, Software Virtualization ) and was pleased with the results - Xojo apps seemed to pack nicely and many features tested to work normally.

I was really only concerned with the “single file EXE” feature - I didn’t care for or use any of the other features such as copy protection, licensing, etc.

So this discussion deserve to be in the Windows Channel, not general.

I went here because I knew this was not for gee-neral and wanted to know why it is here (and so a good number of people willd o the same).

Regards

Well, I’m interested in the Linux side of things too.

Thanks for this info…Looks interesting. But due to the cost, I’m going to pass on it for now.

They have 2 products, and one is free though I’m not sure of the exact license terms…

Thanks. I think for now, I’m going to explore the two I mentioned. The descriptions I found look good, we’ll see how well they hold up in testing if I get to that point.

I’d agree for most use cases, but there is a subset of users who wish to keep things portable. So the app is fully installed on a USB stick that can move computer to computer without needing to install anything or lose data. It means storing data next to the exe instead of app data. The main tripping point is going to be file type associations, but that doesn’t always matter.

i agree moving a single file is better than a folder.
but i can run my xojo app from a copied build folder from usb stick too.

This is what I’m focusing on.

Oh I know. Portable apps do not need to be single file. A zip file is fine in most cases. That’s why I’ve never pursued a single file exe. But you said for something permanent you’d want an installer, and portable apps don’t typically use an installer.

For Windows installers, I use CreateInstall Assistant Freeware. Been using it for years and it works great. I currently have 15 corporate webapps that I update constantly. CreateInstall makes a single setup file that I can easily copy and paste to the production VM’s then run the setup executable. There is a CreateInstall full and CreateInstall Assistant. I use the Assistant because it does everything that I need it to do. CreateInstall - freeware and trial installer software for Windows

My advice would be to prepare both an installer and a zip file. The installer is there for the average user and the zip file for those who don’t want to install anything. Yes, it won’t produce a single file, but Microsoft tells us not to do that anyway. It’s a very practical middle ground.

I have delivered apps packed in various packager/virtualization tools for years, everything from BoxedApp to Enigma (which is free if I’m not mistaken) to Turbo Studio. There are a few open source projects that are similar, Appacker and ExeBundle come to mind.

The issue I’ve had with all of them is false positives from various antimalware tools.

Yes, the main reason to not use it. It can be a nightmare for your customer.

This makes sense and I hadn’t thought about that. I’ll continue with compressed files and an installer as appropriate. I do want to make it good for my users.

Xojo built apps are portable per se, i.e. they do not need any configuration of the host system and have view dependencies that are not provided by the host system by default.

They usually cease being portable when you select system default locations to store documents, resources and configuration. All you need is a flag somewhere to distinguish between the two cases. The easiest form of such a flag is a file or folder alongside the executable. If your app uses externals, you may add these libraries to the “ Libs” folder to keep the app self contained.

Both, Windows and Linux have some external dependencies to certain libraries. At least on Windows, these external dependencies should always be met, as these are system components, that are installed and kept up to date on all versions that are supported by current versions of Xojo (I did not verify this, but that is my understanding).

So, on Windows, just copy the files, and run your app.

Typical way to doing this is

  • an installer
  • an installer with an option to create a portable installation
  • a zip file and instructions for the user where he should extract it to, and how to start the app after extraction

You should never attempt to run an .exe directly from within a -zip. Resources stored within that .zip will not be available (unless you create your app to expect this, but I do not know of any way to locate the .zip file the exe has been run from, other than asking the user. (the .exe will get extracted to the system’s TEMP folder and be run from there.

If I wanted to create a self contained .exe for distribution, I’d probably look into creating it as a 7-Zip self-extracting archive with one of the installer type SFX modules first. I’d expect less trouble with virus alarms and system protection issues with this approach, and the user always can extract the .exe to a folder and run from there.

On Linux, external dependencies are a problem, because you cannot reasonably expect anything. So, here you will need a properly packaged app, either in some traditional package manager format such as .deb or .rpm, or one (or more) of the newer sandboxed package formats such as Flatpack, Snap, or AppImage. Or just provide the folder tree as a compressed tar archive and tell the user what additional dependencies might be needed. Linux users are used to inconveniences like this ;-).

Summary:

If a packaged executable makes sense for your use case, Xojo is probably not the right development environment. If you still want to use Xojo and a single executable, any packager will do, provided that it extracts all files first, or provides a file system virtualization with access to all packaged files. Furthermore the app should not require, or even offer, any persisted data that should roam with the executable.

Remark:

I used to use Altiris SVS (Software Virtualization Solution) and later Symantec Workspace Virtualization (SWV) (part of Symantec Endpoint Virtualization Suite) to package the Xojo IDE, which worked fine.

Why not just follow the recommended installs for the given platforms?
This has come up so many times during the years. Support a platform follow the standard rules and why spend hours of support trying to reinvent ?

Adding to this, a big focus of what I’m doing is focusing on packaging for use on a USB stick that has Windows, MacOS and Linux on it. Instead of using a zip file for download and distribution, I plan to use a TAR file. My reasoning there is that Zip files can strip the attributes on the MacOS application causing issues for my signed and notarized apps. From what I’ve seen so far, TAR does not have that issue. It also looks like Windows 10 and 11, as well as Linux support extracting from a TAR file. I’m working on a Mac, so it looks like I can setup my folder structure on a Mac the way I want it, compress it to a TAR file and then distribute via download or copy from whatever media I distribute on, put the TAR file on a USB stick and extract there. I’m still working on putting this together and testing, but I think it will work well for what I’m trying to do.