# Helper app to manage slicer installations

**URL:** https://discourse.slicer.org/t/helper-app-to-manage-slicer-installations/35007
**Category:** Feature requests
**Created:** [March 21, 2024, 3:00pm UTC](https://discourse.slicer.org/t/helper-app-to-manage-slicer-installations/35007 "2024-03-21T15:00:52Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)
#### Post date: [March 21, 2024, 3:00pm UTC](https://discourse.slicer.org/t/helper-app-to-manage-slicer-installations/35007/1 "2024-03-21T15:00:52Z")

</div>

Here’s an idea people may want to comment on:

> <https://github.com/Slicer/Slicer/issues/7652>
>
> \## Is your feature request related to a problem? Please describe.
> 
> As discusse…d in a recent dev meeting, a utility to manage downloads could be useful. The current methods to install Slicer binaries require multiple user-actions and vary across platforms. There is a lot of repetitive effort required, for example, to compare the behavior of an extension in, say, the stable and preview versions of Slicer on multiple platforms.
> 
> Here's a common current workflow on a fresh VM:
> \* install a browser
> \* go to download.slicer.org and click the correct button for your os / version choice
> \* open downloaded archive, (windows: run installer)
> \* launch slicer, go to extensions manager, seach and install each extension
> \* restart slicer
> \* repeat for each platform you want to test
> 
> \## Describe the solution you'd like
> 
> A simple command that would download and install Slicer consistently across platforms.
> 
> Inspired by \[this package that installs platform-specific executables via PyPi\](https://pypi.org/project/s5cmd/), we could leverage pypi to distribute a program that performs the installation and manages executable paths.
> 
> Here's are some sample uses for bash (the exact command name is open for discussion).
> 
> \### Install Slicerizer
> \`\`\`
> pip install slicerizer
> \`\`\`
> 
> \### install and run the latest stable
> \`\`\`
> slicerizer install
> Slicer
> \`\`\`
> \### install and run the latest preview
> \`\`\`
> preview=$(slicerizer install --preview)
> ${preview}
> \`\`\`
> \### install and run the latest preview
> \`\`\`
> preview=$(slicerizer install --preview)
> ${preview}
> \`\`\`
> \### install and run a specific version with extensions installed
> \`\`\`
> slicer561=$(slicerizer install --version 5.6.1 --extensions SlicerDMRI,SlicerRT)
> ${slicer561}
> \`\`\`
> \### query the installed Slicer versions and their extensions 
> \`\`\`
> slicerizer query --format json
> \[
> {"Version": "5.6.1",
> "InstallData": "2024-03-21",
> "Extensions": \["SlicerMorph", "MONAILabel"\],
> "ExecPath": "/Users/pieper/app/Slicer-5.6.1.app/Contents/MacOS/Slicer"
> }
> \]
> \`\`\`
> 
> \## Describe alternatives you've considered
> 
> We don't need to use pypi, but it seems convenient. Instead we could provide a shell script for linux/mac and a .bat or powershell script for windows, but maintaining multiple versions would be a hassle.
> 
> Also this feature could be included in Slicer itself, so that once you've installed one version it helps you manage your isntallations of other versions. But that wouldn't for installing a Slicer version on fresh VMs.
> 
> Depending on user feedback, we might also consider adding a GUI to select which Slicer to launch.
> 
> There are also lots of potentially useful command line options to consider adding:
> \* a command to update the preview or release if one is available
> \* an option to auto-launch when download and installation are complete'
> \* an option for windows to automate running the installer
> \* options to specify the installation directory
> \* options to save or not save the installer archive
> \* options to delete older versions
> \* options to query and list versions available for installation, and what extensions are available for them
> 
> Other name ideas:
> \* SlicerBuddy
> \* SlicerConfigurationManager
> \* slicer-apputil
> \* slicertool
> \* slicervalet
> 
> \## Additional context
> 
> Use cases:
> \* Easy cross-platform cut-and-paste command to install a specific version of slicer
> \* for recreating a debugging scenario
> \* for quickly testing a feature of a preview build on multiple machines
> \* for getting access to an older version where an extension is known to work
> \* for using a specific version as part of an ongoing experiment
> \* A graphical interface to pick among installed versions
> \* An easy way to get the latest preview with bookmarked extensions auto-installed
> \* A way for batch processing scripts to specify the required slicer and extensions without user interaction
