[ANN] AppBundler.jl - Bundle Your Julia GUI Application

AppBundler v0.3.0

A new version of AppBundler has been released with integrated MSIX bundling functionality. As with DMG creation, it eliminates any reliance on host system dependencies by distributing everything as binary JLL components.

The MSIX bundling functionality works on all Julia supported platforms, including Windows, which was a significant challenge to make makemsix compile with the MinGW compiler.

The MSIX bundling can be tried on QMLApp through the following commands:

using AppBundler
using Pkg.BinaryPlatforms: Windows

qmlapp = joinpath(dirname(dirname(pathof(AppBundler))), "examples/qmlapp")
destination = joinpath(homedir(), "Desktop/qmlapp.msix")

AppBundler.build_app(Windows(:x86_64), qmlapp, destination)

By default, AppBundler precompiles your application and checks compatibility with the target system. You can set precompile=false to build MSIX on non-Windows systems where the precompilation would then be deferred to first application launch instead.

For application signing, you can provide your own certificate in meta/windows/certificate.pfx protected by a password set in the WINDOWS_PFX_PASSWORD environment variable. Without a custom certificate, AppBundler generates a self-signing certificate automatically, making the process more accessible for testing, just like with DMG creation.

For advanced uses like building non-Julia applications or requiring custom layouts, use AppBundler.MSIXPack.pack2msix. A higher-level function AppBundler.build_msix is also available that sets up MSIX directory structure and allows users to customize the application staging area. A similar function will be added for DMG in the next release.

The next step of development will focus on refactoring the missing pieces: using the julia/etc/julia/startup.jl also for Snap packaging, implementing AppBundler.build_snap and AppBundler.build_dmg in a similar way, cleaning up some tests, fixing documentation, and slashing unneeded dependencies.

The current state now also allows setting up CI integration pipelines that automatically compile applications for each platform and bundle them as native installers upon GitHub release tagging. This will make cross-platform desktop application deployment a much more pleasant experience.

More details are available in the recent pull request: Implementing MSIX packaging via makemsix and osslsigncode by JanisErdmanis · Pull Request #17 · PeaceFounder/AppBundler.jl · GitHub