HISE made Plugin Installer
-
Has anyone created an HISE-made installer that installs VST3, AU, and AAX files into system folders?
How do you handle the permissions when doing this on macOS?
-
@resonant Rhapsody used to include an installer for plugins, but you had to install Rhapsody first using a conventional installer. Not sure how you would avoid it.
-
@resonant I wouldn't use HISE to build a simple installer for VST3/AU/AXX.
Package Builder by Araelium and Packages by WhiteBox can both do this very easily with native macOS windows and controls.
-
-
@resonant I'll also add, if you want to build a plugin manager like Arturia Software Centre or UVI Portal, that would be an interesting HISE project.
But for a straight up single-product VST3/AU/AAX installer, I'd go with Package Builder or Packages.
-
@resonant said in HISE made Plugin Installer:
I think I’ve seen a few users (maybe @Lindon @ustk @orange) try this before; I’d really like to know what the risks are or what needs to be done.
Okay heres what I've done over the last few years, first the problem:
HISE products(especially those using samples) require a number of "additional" steps to any set up e.g. the Link file, putting the samples in a user-defined location, putting presets in the AppData folder as well as images, IR's, wavetable; files and any meta data, json or js files you want to ship with your product (the list goes on, and on, and on and - well you get the picture).
PackageBuilder, Packages etc and inno etc on windows dont really understand these locations, or any interaction required with the user whilst the install is underway - its possible but its fiddly and in my experience very time consuming.
So first I built a separate stand alone installer in HISE, it required the user to download one(or more) zip file(s) and point the installer at these...not massively friendly end-user tool, but it dealt with all the problems above....
Next I took it a step further and got it to use a defined manifest file(a json file) that allowed it to download its own zipped up content files (it asked the user where they wanted to put these temp files and cleaned up afterwards). So more friendly, and also on its way to being a "generic" Channel Robot Installer system that I could use for all my plugins.
Biggest outstanding problems: 3rd-party distributors (like Tracktion) and their insistence on using their own in-house installer systems and I'd never been able to get the installer to put the plugin in anything but the "user" plugin folder structure on MacOS.
So in the end it became clear that this read-a-manifest-down-load-some-files-and-install-them-where you-are-told componentry would fit inside the plugin itself pretty easily.
So my current system? Every plugin is a simple VST3, AU, AAX plugin that any 3rd-party installer can put where those plugins belong, so now you can use packages or whatever to put the plugin in the "system" plugins folder, or you can hand your plugins over to some distributor based system (e.g.Pulse) and they can install it their way....
When the plugin is fired up for the first time it recognises its not got all it needs and starts the download and write to disk process for all it's "content":
- it first asks where the user wants these temp file to be located
- it then asks the user for the Sample folder they want to use
- it then starts downloading, using its manifest to know what to download, and where to unzip it to
- once everything is downloaded it starts its own set up process
- puts samples in the user selected samples folder and creates/updates the link file
- puts images in the AppDat/images folder
- presets in the AppData/User Presets folder
- meta data in the AppData Folder
- tells the user its done and offers to clean up after itself, telling the user to just restart the plugin to get it all to work.
You could easily define more locations for "stuff" as you need it but right now the plugin set up componentry knows about these locations:
- sample folder
- images folder
- expansions folder
- Audio folder
- AppData folder
Here's a list of the constants it currently users for locations:
const var USERSAMPLE_LOCATION = 0; // a user defined sample location - i.e. the contents of the LINK file location(folder) const var EXISTING_LOCATION = 1; // whatever is in linkWindows/linkMacos (read, or write this if missing/empty) const var APPDATA_LOCATION = 2; // the location of {APPDATA} const var AUDIOFILES_LOCATION = 3; // Appdata/AudioFiles -- for the Loops and HWT files const var PRESETS_LOCATION = 4; // AppData/User Presets const var EXPANSIONS_LOCATION = 5; // APPDATA/EXPANSIONS/<the expansion name> where the expansion json goes...dont forget to add the exp name ot teh install file const var EXPANSIONS_MAPLOCATION = 6; // APPDATA/EXPANSIONS/<the expansion name>/SampleMaps const var USERDOWNLOADS_LOCATION = 7; const var IMAGES_LOCATION = 8; const var SKINS_LOCATION = 9;It turned into a pretty simple effort to extend this to allow download and install of expansions, and theses sell pretty well, here's an example page for Atmosia :
https://www.tracktion.com/products/atmosia
scroll to the bottom and you will see there are 5 expansion packs users can buy.
Generally its a pretty fail safe system and I get few support calls for it, maybe 1 in 100 (but that's a guess)
If the HISE shop ever gets up and running - I intended to offer it as a set of script files, widgets and guideline documents so you can add it to your own plugins.
-
@Lindon Thank you for this detailed answer.
I believe that when creating an installer—especially on macOS—issues arise regarding privileges when attempting to install files into system plugin folders. To overcome this, a helper application could be embedded within the main app to obtain the necessary privileges. As far as I know, there are no such issues on Windows.
-
@resonant said in HISE made Plugin Installer:
issues arise regarding privileges when attempting to install files into system plugin folders.
There's no issue with this. I have a video about it on YouTube or Patreon.
I also have a full Mac OS packaging course at AudioDevSchool
-
@resonant - I think Dave's right there are not any real problems these days getting the plugin into the "system" folders on a Mac (but its been a while since I've done it as Im nearly exclusively on Tracktion these days) so caveat emptor... but every other problem (locations and content) are still there which is what the CR Setup componentry is there to resolve.