Hi,
Reading through the README, I think the package works on all three platforms to make (GUI) apps already, but I want to know does it for sure make one file (for each) that you can download and install by double-clicking by end-users, in one step and it installs and runs? At least on Windows (and also for Linux)?
AppBundler expects an application folder which contains main.jl, Project.toml and Manifest.toml. The application entry point is the main.jl, which allows starting the application with julia --project=. main.jl from the project directory. A Project.toml contains many adjustable template variables under a [bundle] section.
That's all you need at a minimum, and I think at installation the dependencies will be downloaded for you? Or bundled with? I've seen suggested that Julia itself could NOT be bundled rather referred to. I'm ok with whatever that works for now, but cool if the bundled could be really small. In all cases source code is distributed (compressed) and you end up with it decompressed, not compiled, but that's a possible add-on with PackageCompiler.jl? And it doesn't make your work redundant, more like they are complementary and could work together.
The configuration of the bundle sits in a meta folder from where files take precedence over the AppBunlder recepies folder.
2 typos: AppBunlder recepies -> AppBundler recipes
bundle_app(MacOS(:x86_64), "MyApp", "build/MyApp-x64.app")
That implies 64-bit, x86. I don't care too much about 32-bit, on Windows, I suppose it could be done and ARM build etc. for Macs. x86_64 may be safer for now, also to work for older macs. Can you make a "fat binary" i.e. the first step is x86 since good enough, and it dynamically chooses ARM Julia or x86 Julia?
For Linux, the extension .snap and Windows .zip for destination determines whether the output is compressed, which can be overridden by compress=false in the keyword arguments.
This is a bit unclear, .snap is compressed. And .zip is too (on all platforms) but you get a MSIX bundle on Windows?! I suppose it is compressed and .snap and all you distribute, so when do you want uncompressed?
The resulting bundles can be easily tested on the resulting platforms. The testing phase works without any postprocessing as follows:
You can just double-click to test (with or) without postprocessing on at least MacOS (so then since it works, why does it need any postprocessing?). I understand the rest as you must do post-processing on the platform, as a developer, not end-user. But hypothetically it would not be needed, could be done on e.g. Linux for a Windows bundle.
Note that you will face difficulties when using AppBundler from Windows for Linux, macOS and other UNIX operating systems, as Windows does not have a concept of execution bit. By hand, you could set chmod +x to every executable on the resulting platform. Technically, this can be resolved by directly bundling files into a tar archive and processing the incoming archives without extraction, but this will not happen. Thus, it is better to use WSL when bundling for other platforms on Windows.
I suggest something like "AppBundler apps made with Windows for other platforms: Linux macOS and other UNIX operating systems. Since Windows".. At first I read as from "Windows for Linux" as if that were a thing, you confusing with WSL. or wine. You mean you can "cross-compile" except no compilation done, but can you also make one bundle that works on app platforms?
For snap, it is also worth mentioning the snap try myapp command, which allows one to install an application without squashing.
Rather without unsquashing (use unsquashfs)? Or did that refer to mksquashfs?
For Windows, one has to install makappx, signtool, and editbin installed with WindowsSDK.
typo for MakeAppx?!
You need those tools, i.e. "cross-compiling" from Linux is maybe not possible, or would work with wine?
Installation of Windows SDK fails.
[I'm unclear why, or only on non-Windows/Parallels, but I think you're saying not a problem.]
Set julia.exe to be Windows application editbin /SUBSYSTEM:WINDOWS myapp\julia\bin\julia.exe
That part is to make it a GUI Windows app (to not get a console window). Since the GUI vs console distinction isn't there on other platforms, can it be stated this works for non-GUI programs too? On non-Windows at least. And on Windows if you skip that step.
Hi,
Reading through the README, I think the package works on all three platforms to make (GUI) apps already, but I want to know does it for sure make one file (for each) that you can download and install by double-clicking by end-users, in one step and it installs and runs? At least on Windows (and also for Linux)?
That's all you need at a minimum, and I think at installation the dependencies will be downloaded for you? Or bundled with? I've seen suggested that Julia itself could NOT be bundled rather referred to. I'm ok with whatever that works for now, but cool if the bundled could be really small. In all cases source code is distributed (compressed) and you end up with it decompressed, not compiled, but that's a possible add-on with PackageCompiler.jl? And it doesn't make your work redundant, more like they are complementary and could work together.
2 typos: AppBunlder recepies -> AppBundler recipes
That implies 64-bit, x86. I don't care too much about 32-bit, on Windows, I suppose it could be done and ARM build etc. for Macs. x86_64 may be safer for now, also to work for older macs. Can you make a "fat binary" i.e. the first step is x86 since good enough, and it dynamically chooses ARM Julia or x86 Julia?
This is a bit unclear, .snap is compressed. And .zip is too (on all platforms) but you get a MSIX bundle on Windows?! I suppose it is compressed and .snap and all you distribute, so when do you want uncompressed?
You can just double-click to test (with or) without postprocessing on at least MacOS (so then since it works, why does it need any postprocessing?). I understand the rest as you must do post-processing on the platform, as a developer, not end-user. But hypothetically it would not be needed, could be done on e.g. Linux for a Windows bundle.
I suggest something like "AppBundler apps made with Windows for other platforms: Linux macOS and other UNIX operating systems. Since Windows".. At first I read as from "Windows for Linux" as if that were a thing, you confusing with WSL. or wine. You mean you can "cross-compile" except no compilation done, but can you also make one bundle that works on app platforms?
Rather without unsquashing (use unsquashfs)? Or did that refer to mksquashfs?
typo for MakeAppx?!
You need those tools, i.e. "cross-compiling" from Linux is maybe not possible, or would work with wine?
[I'm unclear why, or only on non-Windows/Parallels, but I think you're saying not a problem.]
That part is to make it a GUI Windows app (to not get a console window). Since the GUI vs console distinction isn't there on other platforms, can it be stated this works for non-GUI programs too? On non-Windows at least. And on Windows if you skip that step.