# \[ANN\] Juliaup Preview - Julia version manager and Windows Store installer

**URL:** <https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920>\
**Category:** Community\
**Tags:** announcement, juliaup\
**Created:** [May 27, 2021, 12:50pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920 "2021-05-27T12:50:16Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 27, 2021, 6:38pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/21 "2021-05-27T18:38:50Z")

</div>

> [@rafael.guerra](#):
>
> Assume that hobby Julia users can safely remove the different installations of Julia and work from now on with Juliaup only?

Yes, that is correct, if you use the Juliaup story you’ll only have one entry in the list of installed programs and can uninstall all the other Julia versions you might have on your system. One caveat: at the moment Juliaup only supports Julia 1.5.1 and newer, so if you have older versions installed you might want to hold on to them a little bit longer. I’m working on fixing this right now, pretty confident that we’ll have support for every Julia version since probably 0.7 in Juliaup in a few days.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 27, 2021, 6:50pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/22 "2021-05-27T18:50:12Z")

</div>

I should mention one other caveat: if you uninstall Juliaup, it _won’t_ uninstall the Julia versions that you installed using `juliaup`, i.e. all of those Julia versions will stay around in `~/.julia/juliaup`! In a way this is now similar to the situation with packages and artifacts that you install using Julia: those are also not removed when you uninstall Julia from your system.

I’m not super happy about that aspect of things, but a) it is not clear to me right now how I could fix this easily and b) it seems in line with packages and artifacts, so I think at the moment the general rule just is that to really get rid of Julia on your system you need to uninstall it _and_ delete your `.julia` folder.

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [May 27, 2021, 8:13pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/23 "2021-05-27T20:13:49Z")

</div>

I’d be really happy if `juliaup` provided a command to set the package server to use (i.e. environment variable `JULIA_PKG_SERVER`).

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [May 27, 2021, 8:54pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/24 "2021-05-27T20:54:01Z")

</div>

Btw. please rate Juliaup at the Microsoft Store

---

<div class="post-metadata">

**Author:** ![Wei\_Yang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wei_yang/32/23951_2.png) [@Wei\_Yang](https://discourse.julialang.org/u/Wei_Yang)\
**Post date:** [May 27, 2021, 9:16pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/25 "2021-05-27T21:16:05Z")

</div>

Wow, this is definitely going to get more people into Julia.🏖

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 27, 2021, 9:43pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/26 "2021-05-27T21:43:40Z")

</div>

I think the issue with needing git raised by @ufechner7 is a valid one. This was the reason I included a portable git in my portable julia.

---

<div class="post-metadata">

**Author:** ![bilderbuchi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bilderbuchi/32/13562_2.png) [@bilderbuchi](https://discourse.julialang.org/u/bilderbuchi)\
**Post date:** [May 28, 2021, 7:27am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/27 "2021-05-28T07:27:31Z")

</div>

This looks like an interesting initiative!

> [@davidanthoff](#):
>
> I should mention one other caveat: if you uninstall Juliaup, it _won’t_ uninstall the Julia versions that you installed using `juliaup` , i.e. all of those Julia versions will stay around in `~/.julia/juliaup` !

I typically get pretty annoyed when a windows program’s uninstall routine leaves files behind, which seems like a quality smell for me.  
What’s the reason behind the workaround with the hardlinks to .julia? Why don’t you put everything into AppData/Local/ and /Roaming as appropriate, which seems the canonical/proper way to do this on windows? (E.g. my python installation with all environments, except one or two config files, lives in AppData/Local/ mambaforge, VSCode afaict similarly)

---

<div class="post-metadata">

**Author:** ![bilderbuchi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bilderbuchi/32/13562_2.png) [@bilderbuchi](https://discourse.julialang.org/u/bilderbuchi)\
**Post date:** [May 28, 2021, 7:30am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/28 "2021-05-28T07:30:42Z")

</div>

Fwiw, I agree with **not** bundling git. When i need git, I want to separately install it myself, however I prefer. Or did I misunderstand and git is a dependency needed for juliaup to function?

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 28, 2021, 7:47am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/29 "2021-05-28T07:47:49Z")

</div>

> [@PetrKryslUCSD](#):
>
> I think the issue with needing git raised by @ufechner7 is a valid one. This was the reason I included a portable git in my portable julia.

I should say that I completely agree that it would be great to have an easy way to get a system into a state where lots of useful tools are installed, I just don’t think that the core/base installer for something like Julia (which I hope Juliaup will become) is the right tool for that.

I think at least for Windows this would ideally be solved at the `winget` level. If `winget` had support for packages with package dependencies we could publish a package `SuperJulia` that had a dependency on say Julia, git, VS Code and maybe other stuff. `winget install SuperJulia` would then install all those individual pieces in one go, as if someone had installed them individually. My understanding is that package dependencies are planned for winget 1.1, see [here](https://github.com/microsoft/winget-cli/issues/163).

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 28, 2021, 8:07am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/30 "2021-05-28T08:07:10Z")

</div>

> [@bilderbuchi](#):
>
> I typically get pretty annoyed when a windows program’s uninstall routine leaves files behind, which seems like a quality smell for me.  
> What’s the reason behind the workaround with the hardlinks to .julia? Why don’t you put everything into AppData/Local/ and /Roaming as appropriate, which seems the canonical/proper way to do this on windows? (E.g. my python installation with all environments, except one or two config files, lives in AppData/Local/ mambaforge, VSCode afaict similarly)

This is a bit of a longer story 😉 I completely agree with your sentiment, that was where I started as well, but there are some constraints that make this tricky.

The core setup tech that the Windows Store uses is MSIX, so everything we can do is dictated by the capabilities of that. A MSIX in its simplest form can have a payload of files that get installed onto a user system. Those “normal” files end up in a filesystem location that is completely managed by MSIX, mostly inaccessible from normal user accounts etc. In particular, these files are _not_ installed into `APPDATA` locations, instead they are actually installed into a shared system location so that if two user accounts install the same app, the installed stuff is automatically shared between user accounts. One can declare various “entry” points in an MSIX installer that then surface these files to users, for example startmenu shortcuts, and `execution aliases`, which essentially put things onto the `PATH` via the symlink approach that @oheil described and some other options. The stuff that gets deployed in this way is completely read-only. For `juliaup`, I essentially distribute three things via this standard MSIX approach: 1) a small julia.exe wrapper that ends up on the `PATH` and then launches the “real” `julia.exe`, 2) `juliaup.exe` and one full default Julia distribution. At uninstall, everything that was included in this way in the MSIX installer is removed, of course.

By default all MSIX installed software runs in a lightweight container that completely virtualizes the registry and _everything_ in `APPDATA`. That whole system is powerful, but ultimately not helpful for Julia. In essence, if a MSIX software writes some files into a `APPDATA` location, those file will _only_ be visible to that specific app, no other app can even see these files. Same with registry keys. The benefits are then that at uninstall the MSIX installer can very cleanly uninstall everything that the app might have ever created in any `APPDATA` folder. So in theory `juliaup` could install Julia into `APPDATA` locations, and then at uninstall that would all be removed. The problem is that we _really_ need the ability to write files into `APPDATA` locations that are visible to software that runs outside of the Julia container: the main culprit is Jupyter. We need the ability to write kernel spec files for Julia that Jupyter can see, otherwise the entire Jupyter integration for Julia would be broken. The only way around this that I could find was to completely disable the `APPDATA` file virtualization/container story for the Juliaup MSIX installer, and that is what we are shipping now. So the Julia MSIX is _not_ using the virtualization for `APPDATA` or the registry. The upside is that modifications from Julia code in `APPDATA` or the registry are visible to other software, the downside is that those changes are no longer removed at uninstall.

So now that we are in a world where nothing in `APPDATA` is removed at uninstall, I felt it would be better to install the Julia versions into `.julia/juliaup` rather than somewhere in `APPDATA` where they would really be easily forgotten. The story now with Julia is essentially that when you uninstall `Julia` via the uninstaller, it will leave lots of stuff behind in `~./julia`: packages, artifacts, and now a little bit more in the form of Julia installs. If you want to get rid of all of that, you can just delete the `.julia` folder. While I don’t think this is ideal, I also feel it doesn’t really make the currently existing situation worse 🙂.

What we would really need is the following: an ability to configure our MSIX installer such that it cleans up _one_ known folder in `APPDATA` at uninstall. But as far as I can tell that isn’t possible at the moment.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 28, 2021, 8:27am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/31 "2021-05-28T08:27:47Z")

</div>

Alright, did a bit more digging whether we could somehow remove more stuff at uninstall, I’m tracking those ideas [here](https://github.com/JuliaLang/juliaup/issues/47).

---

<div class="post-metadata">

**Author:** ![dawbarton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dawbarton/32/215461_2.png) [@dawbarton](https://discourse.julialang.org/u/dawbarton)\
**Post date:** [May 28, 2021, 9:44am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/32 "2021-05-28T09:44:20Z")

</div>

Is it possible to add the appbundle to the GitHub release page like winget does? (Or just point me to a direct download link?)

I’d be keen to try it but for some reason I can’t install it from the store directly, though I can install downloaded appbundles and get updates for them (I’m pretty sure it’s something broken on my laptop since I can’t install anything else via the store either).

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 28, 2021, 9:50am UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/33 "2021-05-28T09:50:33Z")

</div>

> [@dawbarton](#):
>
> Is it possible to add the appbundle to the GitHub release page like winget does?

Yeah, I’m trying to get the CI story up and running, and agreed, it would make sense that it just publishes the .appxbundle files as part of the release tag on GitHub for every tag.

We will have to sign those .appxbundles, but I think that shouldn’t be too complicated either. And I’m not super positive how easy it would be to install them directly: we are requesting lots of restricted permissions for our MSIX installer. We got those permissions when the thing is installed via the store, but it is a bit unclear to me whether that works equally well if one installs the appxbundle directly. Might just work, or not 🙂

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 28, 2021, 1:55pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/34 "2021-05-28T13:55:43Z")

</div>

One more quick update: I now listed the store submission, so you no longer need the direct link to find Julia in the Windows Store. Instead, you can just search for `Julia` in the Windows Store and find the app that way.

---

<div class="post-metadata">

**Author:** ![bilderbuchi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bilderbuchi/32/13562_2.png) [@bilderbuchi](https://discourse.julialang.org/u/bilderbuchi)\
**Post date:** [May 28, 2021, 2:08pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/35 "2021-05-28T14:08:45Z")

</div>

> [@davidanthoff](#):
>
> …a bit of a longer story…

Oh my, what a messy situation, I don’t envy you! 😛 Thanks for the detailed reply!

Out of interest, does this all work without admin rights (e.g. on locked-down machines)?

> [@davidanthoff](#):
>
> the main culprit is Jupyter.

I guess not the only one, don’t any IDEs that e.g. have to detect the presence/location of Julia need to be able to see those folders? Or does that work by just probing for the `julia` executable?

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 28, 2021, 2:13pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/36 "2021-05-28T14:13:32Z")

</div>

The Julia installer may not be the right tool for the job, agreed.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 28, 2021, 7:44pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/37 "2021-05-28T19:44:43Z")

</div>

> [@bilderbuchi](#):
>
> Out of interest, does this all work without admin rights (e.g. on locked-down machines)?

Yes, everything should work without admin rights.

> [@bilderbuchi](#):
>
> I guess not the only one, don’t any IDEs that e.g. have to detect the presence/location of Julia need to be able to see those folders? Or does that work by just probing for the `julia` executable?

I know the VS Code extension best, and for that the exposed `julia` execution alias is enough, so for that the container would not have been a problem. But for Jupyter the package IJulia.jl actually writes into a shared location that the Jupyter binary then reads from, and that won’t work with the container. But I think even beyond that, a container is just not a good abstraction for a programming language: after all `julia.exe` is primarily used to run _user_ code, and that just shouldn’t run inside a Julia specific container.

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [June 3, 2021, 1:05pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/38 "2021-06-03T13:05:06Z")

</div>

A report. I usually install Julia using the Chocolatey package manager. I uninstalled Julia 1.6.1  
I had an older version 1.5.3 on my system - which does not uninstall using the Windows Control Panel.  
I used the Microsoft Store to install Julia…  
First time it starts up Julia 1.5.3 with this warning:  
The latest version of Julia in the 1 channel is Julia 1.6.1. You currently have Julia 1.5.3 installed. Run:

juliaup update

to install Julia 1.6.1 and update your current channel to that version.

NOTE: please tell the user how to run juliaup It might be obvious that this should be run in Powershell but maybe ‘Open Powershell and run juliaup update’

The Start Menu now offers me Julia (app) which starts version 1.161  
and Julia 1.5.3  
I guess I will have to nuke my .julia directory to get rid of 1.5.3 - I really would not expect the juliaup installer to manage this.

Also as an aside the blue background on the Julia three balls logo which Juliaup installs is really not good for me. I am colourblind and the three balls disappear. Please use a clear background?

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [June 3, 2021, 4:51pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/39 "2021-06-03T16:51:16Z")

</div>

> [@johnh](#):
>
> NOTE: please tell the user how to run juliaup It might be obvious that this should be run in Powershell but maybe ‘Open Powershell and run juliaup update’

Yes, agreed, see [here](https://github.com/JuliaLang/juliaup/issues/43).

> [@johnh](#):
>
> I guess I will have to nuke my .julia directory to get rid of 1.5.3 - I really would not expect the juliaup installer to manage this.

You can use `juliaup remove 1.5.3` to uninstall it. But in general we could probably do a lot more to have some automation about removing unnecessary Julia versions, see [here](https://github.com/JuliaLang/juliaup/issues/53).

> [@johnh](#):
>
> Also as an aside the blue background on the Julia three balls logo which Juliaup installs is really not good for me. I am colourblind and the three balls disappear. Please use a clear background?

Yeah, the whole artwork is a mess right now 🙂 I added your concern to the issue that is tracking that [here](https://github.com/JuliaLang/juliaup/issues/30).

Thanks for the feedback, very useful!

---

<div class="post-metadata">

**Author:** ![TheLateKronos](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thelatekronos/32/12824_2.png) [@TheLateKronos](https://discourse.julialang.org/u/TheLateKronos)\
**Post date:** [June 4, 2021, 1:41pm UTC](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920/43 "2021-06-04T13:41:09Z")

</div>

Sorry, I got carried away and simply burted out input as comments. I then realized that they are better off as github-issues, and so I gave my input as github issues instead.

Thanks a lot for the great work in making julia more accessable to less technical users. Not even MatLab can boast an installation this simple! 5 stars given in the microsoft store \<3

[Previous page](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920.md?page=1)

[Next page](https://discourse.julialang.org/t/ann-juliaup-preview-julia-version-manager-and-windows-store-installer/61920.md?page=3)
