# How to distribute standalone Julia applications to non-programmers?

**URL:** <https://discourse.julialang.org/t/how-to-distribute-standalone-julia-applications-to-non-programmers/70151>\
**Category:** General Usage\
**Tags:** installation, environment, deployment\
**Created:** [October 21, 2021, 2:03pm UTC](https://discourse.julialang.org/t/how-to-distribute-standalone-julia-applications-to-non-programmers/70151 "2021-10-21T14:03:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![greatpet](https://avatars.discourse-cdn.com/v4/letter/g/e495f1/32.png) [@greatpet](https://discourse.julialang.org/u/greatpet)\
**Post date:** [October 21, 2021, 2:03pm UTC](https://discourse.julialang.org/t/how-to-distribute-standalone-julia-applications-to-non-programmers/70151/1 "2021-10-21T14:03:49Z")

</div>

I’d like to distribute standalone applications written in Julia to users who don’t program in Julia, and I want the installation process to be as easy as possible. The user may be using a remote cluster with an outdated version of Julia that I don’t want to use. So I’d like to provide a single script, which installs an up-to-date version of Julia in a local installation directory, configured to use a package depot confined in the local installation directory (rather than $HOME/.julia which may conflict with other usage of system-wide installed Julia), and bundles my Julia scripts (either as files or accessed from a local git repository on a cluster). Ideally I’d like the procedure to work across Linux, Windows, and MacOS.

Is there a good way to do what I described above?

---

<div class="post-metadata">

**Author:** ![SteffenPL](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/steffenpl/32/206270_2.png) [@SteffenPL](https://discourse.julialang.org/u/SteffenPL)\
**Post date:** [October 21, 2021, 2:33pm UTC](https://discourse.julialang.org/t/how-to-distribute-standalone-julia-applications-to-non-programmers/70151/2 "2021-10-21T14:33:12Z")

</div>

Are those other users also researchers or students?

I am/was in a similar situation, see [Best practices to share simulations with collaborators?](https://discourse.julialang.org/t/best-practices-to-share-simulations-with-collaborators/54954)  
In my experience, it is less error-prone to ask someone to install Julia in the traditional way compared to running a special script XY.

**I use these steps on Windows:**

- Tell the user install Julia and click on add to PATH during the installation.
- Provide simple bat scripts to execute the scripts.
- I use PackageCompiler to speed up everything, so, there is one bat script to generate an image.  
(There are also [juliaup](https://github.com/JuliaLang/juliaup) and [juliawin](https://github.com/heetbeet/juliawin) which aim at simplifying the installation on Windows.)

**On a Linux cluster** , the user might be experienced enough to install a Julia distribution in the home directory? The collision of the depot directory should usually be handled by Julia itself, you can install several Julia versions on the same computer.

I have no experience with MacOS.

---

<div class="post-metadata">

**Author:** ![Derek\_Vetsch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/derek_vetsch/32/8552_2.png) [@Derek\_Vetsch](https://discourse.julialang.org/u/Derek_Vetsch)\
**Post date:** [October 21, 2021, 2:34pm UTC](https://discourse.julialang.org/t/how-to-distribute-standalone-julia-applications-to-non-programmers/70151/3 "2021-10-21T14:34:23Z")

</div>

It sounds to me like you want to create an app using [PackageCompiler.jl](https://julialang.github.io/PackageCompiler.jl/stable/apps.html)?

---

<div class="post-metadata">

**Author:** ![devel-chm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/devel-chm/32/3572_2.png) [@devel-chm](https://discourse.julialang.org/u/devel-chm)\
**Post date:** [October 21, 2021, 2:39pm UTC](https://discourse.julialang.org/t/how-to-distribute-standalone-julia-applications-to-non-programmers/70151/4 "2021-10-21T14:39:08Z")

</div>

Another option might be to use some sort of container.  
I’m using [Singularity containers](https://singularity.hpcng.org/) to share my Julia install and programs. Other containers might work for you as well depending on your requirements.
