-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify README #3
Comments
Hi! The recommended building environment is Linux and MacOS, which can produce bundles for all other platforms. On Windows, one is recommended to use WSL; otherwise, one is limited to the Windows platform as the destination. The package works for all three platforms to produce GUI applications. However, the Mac and Windows apps need a post-processing step on their host platform to make one file clickable by end users. I have excessively tested and worked on so that apps run with a single click install.
The installation dependencies are bundled with the app so the application can be started in a networkless environment. Also, this is done so that it is possible to run precompilation, which is important to provide a somewhat acceptable end-user experience. Future versions will likely feature an optional package builder script that allows a compilation of the bundles into apps on the respective platforms using
A GUI app bundle is 200 MB in size with a Julia bundle. A lot of work is done by compression on the respective bundle formats. I prefer to bundle Julia as it assures that if one of the platforms experiences a bug, I can reproduce the exact environment on other platforms to know if it was caused by Julia or me, the application developer.
I will have a look at it.
Older Windows versions are unsupported, as I rely on the MSIX package format, which offers some sandboxing capabilities and clean app uninstallation. I don't plan to support other Windows recipes, but if one wishes,
To get MSIX to bundle, the building product from AppBundler needs to be post-processed on Windows with
The bundles for Linux and MacOS can be double-clicked to run. On Windows, the folder hierarchy is such that it can be registered to a system with a single command so it can be run from a start menu. This is useful for debugging purposes, but in general, one would do a post-processing step of the bundles before distributing them to the end users.
I meant Windows Subsystem for Linux (WSL). I will correct that in the readme.
This is a useful information for debugging the bundle. One first
Typo indeed.
I have had thoughts about this. I guess Wine would have no issues with running these command-line applications. The problem is of a legal nature. Microsoft keeps the rights for distribution of their software; thus, it excludes putting these binaries as an artefact. An alternative route would be to use open-source alternatives. There seems to be a tool with the name In this scenario, one could probably try to run Julia through Wine to do an optional precompilation/compilation step. This is something which is defientelly worth to be explored in the future to make AppBunder easier to use.
I lost what you have meant in this one. Perhaps you can paraphrase. |
Which is a good thing, i.e. GUI apps. What I mean is that in Linux at least there's no specific executable (ELF) type for GUI and other for non-GUI. Of course you program them very differently but I think your tool, and snap, isn't restricted to GUI apps. On Windows there IS a specific type for GUI/Windows apps, and why you need editbin. I suppose it could also be used with PackageCompiler.jl and I was curious how people could actually make GUI apps for Windows (without a console window popping up). I was just thinking if non-GUI apps could also be done with your package (or restricted to "GUI"), then without running editbin. It's not something you (or I) need; to know, so not a huge priority. I suppose MSIX is just for Windowed apps anyway.
That's great, as a default, and 200 MB, while a big overhead, isn't too uncommon in the modern world...
That's understandable. Julia has reproducible environments, so with a Manifest you could be sure you have the exact dependencies. That also applies to Julia itself, or I think you can point to an exact (stable) version, though probably shouldn't be default to do. If people would use a master Julia, then in theory an exact commit too, though I'm not sure about getting access to them or exact RC. Windows 7 still has some market share (at least in China), and Windows 10 (but not 11) is still supported with 32-bit, for almost 2 years more. I'm not saying 32-bit or older versions should have any priority. Some apps could still use 32-bit and work on 64-bit too, but 64-bit apps (as the default) will not work on 32-bit. What should be a priority, is the future; for some, not you, is explore Android (and iOS) Julia apps, for world domination... [Python with e.g. Kivy has worked on iOS, and Python will support iOS officially as a 3rd tier platform for the first time with Python 3.13, according to an interesting PEP on it.] Then not APK (Google migrating from, though not all others), rather:
|
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.
The text was updated successfully, but these errors were encountered: