Any friendly installer tool?

Any friendly tool for Linux to create installer of apps? Maybe something like Inno Setup at the minimum.

ChatGTP answer

There are a few options you can consider for creating an installer for your Xojo applications on Linux:

  1. Flatpak: Flatpak is a cross-distribution packaging system for Linux that allows you to create self-contained, sandboxed packages that can be installed on any Linux distribution. Flatpak is a good choice if you want to distribute your application to a wide range of Linux distributions.
  2. Snap: Snap is another cross-distribution packaging system for Linux that allows you to package your application and its dependencies in a self-contained container that can be easily installed on any Linux distribution that supports Snap.
  3. AppImage: AppImage is a packaging format for Linux applications that allows you to distribute your application as a single executable file that can be run on any Linux distribution. AppImage is a good choice if you want to create a standalone installer that does not require any additional dependencies to be installed.
  4. Deb/RPM packages: If you want to create an installer that is specific to a particular Linux distribution (such as Ubuntu or Fedora), you can create a Deb or RPM package. These packages are created using the native packaging tools of the distribution and are intended to be used with that specific distribution.

Ultimately, the choice of installer will depend on your specific requirements and the distribution you are targeting. It’s always a good idea to consider the popularity and support for the different installer formats on the target Linux distributions.

1 Like

Another ChatGPT wrong answer. Those are package formats, not packaging tools.

1 Like

Do you mean easy for you as the developer, or easy to install for the user? For you as a developer, there’s nothing that I’ve found in all of my years as a Linux hacker (since 1993) that holds up across multiple platforms.

I use a combination of a script and a tarball. The script handles checking that the user has the proper authorizations and then extracts the tarball content into their proper location. There are dozens of variations out there if you search, and this could be enhanced into a GUI using zenity or xdialog.

#!/bin/bash

id | grep uid=0
if [ $? -ne 0 ]
then
  echo "Must be root or use sudo to execute this installer."
  exit 1
fi

installer="$(pwd)/$(basename $BASH_SOURCE)"

echo "Installing OWC ArGest Backup ..."

ARCHIVE=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' $0`

tail -n+$ARCHIVE $0 | tar xzP

# notice the upper case P in that extract command
# This allows tar to retain the parent path elements instead
# of stripping them off.

# run post installation steps
## place any commands that should be executed after the
## tarball is extracted here.

echo "Installation complete!"
exit 0

__ARCHIVE_BELOW__:

Now, create your tarball using the same -P (upper case P), and then concat the two files into a .run file, and set the execute bit:

cp  installer_template.sh MyApp.Installer.run
cat MyApp.tgz >> MyApp_Installer.run
sudo chmod +x MyApp_Installer.run
zip -f MyApp_Installer.zip MyApp_Document.pdf MyApp_Installer.run

Share the MyApp_Installer.zip file with your users.

This works with any platform type redardless of the package manager. You’ll finde a lot of commercial apps use this type of installer.

Do you have an example of how an installer look like? Where do you setup the destination of a xojo app.
I’m seeking a friendly GUI solution like Inno Setup

That is a great answer, those are the most common used tools, the Flatpak packaging tool is gaining popularity, but you can can find a comparison for this 4 options here:

https://youtu.be/9HuExVD56Bo?t=76

As I mentioned, in my going on 30 years of hacking Linux, I’ve never found a UI-based installer that worked properly. InstallAnywhere is a commercial solution, but requires java knowledge and you pretty much end up writing a separate app to perform the installation.

So , the questions you need to ask yourself -

  1. Am I familiar with the Linux filesystem hierarchy?
  2. Am I familiar with the Linux terminal and command line tools?
  3. Am I Familiar with Java and UI design?

Even with InstallAnywhere, you’ll need to answer yes to those three questions as a minimum.