Installer permissions ...again
-
@Lindon ah yeah, ok. I've had numerous permissions issues since upgrading to Sonoma with other software as well as HISE - did a lot of manually changing folder permissions and giving programs disk access etc. Always an uphill battle - and then more issues when they release another OSX update!
Are there examples of other devs using an app to install the plugin files?
-
@DanH said in Installer permissions ...again:
Are there examples of other devs using an app to install the plugin files?
Well it's clearly possible WhiteBox Packages build a .pkg file that does it - as do other installers, but looking thru the JUCE forums it seems its a not-uncommon problem, with only ugly work arounds.
-
@DanH I just build a installer for MacOS that installs the VST3 and the AU into the System Root and the Samples and LinkOSX file into the ~/Library/Application support.
Since the Whitebox Packages Installer can only install into either home or the root you will need to choose root directory and then run a post install script to move the files to the home directory.
Here is my script. That will also setup the LinkOSX file for the sample location so that you open up the Plugin and have it work right away without installing Samples. I had no permission errors with that approach since.
#!/bin/sh # Write sample location selected by user to LinkOSX for HISE # First, remove LinkOSX file if it's already there instrumentname="InstrumentName" devname="Company Name" mv /Library/Application\ Support/CompanyName ~/Library/Application\ Support/ FILE="$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX" if test -n "$FILE"; then rm -R "$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX" fi # Second, use the environment variable from WhiteBox Packages to write the destination to a file destfile=/Users/${USER}/Library/Application\ Support/${devname}/${instrumentname}/LinkOSX printf "/Users/${USER}/Library/Application Support/${devname}/${instrumentname}/Samples" > "$destfile"
-
@oskarsh said in Installer permissions ...again:
@DanH I just build a installer for MacOS that installs the VST3 and the AU into the System Root and the Samples and LinkOSX file into the ~/Library/Application support.
Since the Whitebox Packages Installer can only install into either home or the root you will need to choose root directory and then run a post install script to move the files to the home directory.
Here is my script. That will also setup the LinkOSX file for the sample location so that you open up the Plugin and have it work right away without installing Samples. I had no permission errors with that approach since.
#!/bin/sh # Write sample location selected by user to LinkOSX for HISE # First, remove LinkOSX file if it's already there instrumentname="InstrumentName" devname="Company Name" mv /Library/Application\ Support/CompanyName ~/Library/Application\ Support/ FILE="$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX" if test -n "$FILE"; then rm -R "$HOME/Library/Application Support/${devname}/${instrumentname}/LinkOSX" fi # Second, use the environment variable from WhiteBox Packages to write the destination to a file destfile=/Users/${USER}/Library/Application\ Support/${devname}/${instrumentname}/LinkOSX printf "${DSTROOT}/Library/Application Support/${devname}/${instrumentname}/Samples" > "$destfile"
This is an interesting approach - do you think there is a way to write a script that would copy a plugin from say:
~/Users/<username>/Library/Audio/Plug-Ins/VST3/some.vst3
to:
~/Library/Audio/Plug-Ins/VST3/some.vst3-- then somehow run this from within the HISE installer at the end...
-
@oskarsh Yup I do the same, just wondering about an app that isn't Whitebox Packages being able to install the plugin files.
-
@DanH said in Installer permissions ...again:
Are there examples of other devs using an app to install the plugin files?
I do it with Rhapsody, but I use the user library folder.
-
@Lindon I don't think moving the files will be an issue. As for running the installer from within HISE I don't know, but presumably it will bring up the Packages installer process etc when run.
-
I think you guys are misunderstanding what Lindon is trying to do. He's trying to make an app that puts files in the Library folder. He's not using an installer program like Packages.
@Lindon
startAsProcess
can launch an external program (and presumably a script). There is also asetExecutePermission
function that might be helpful here. -
@DanH said in Installer permissions ...again:
@Lindon I don't think moving the files will be an issue. As for running the installer from within HISE I don't know, but presumably it will bring up the Packages installer process etc when run.
no, I dont mean to run Packages at all - I dont use PAckages any more...
So
- Run the HISE-based installer, it writes the VST3 to the User folder structure
- run a shell script (from within the HISE installer) to copy the vst3 to the System folder...so I assume this is File.startAsProcess(String parameters);
See that assumption right there? Often a bad thing...
Now the plugin is in both places (best outcome).
-
@Lindon oh right haha! Did seem a bit strange running packages at the end
I'm not sure you'd want the plugin in both locations. could confuse the user should they want to uninstall or update etc. That shell script deletes the original folder after copying.
If the User/Library location works ok why not use that? do DAWs generally check both locations? I find most plugins install into the ~/Library though which seems the safer option.
-
@d-healey said in Installer permissions ...again:
I think you guys are misunderstanding what Lindon is trying to do. He's trying to make an app that puts files in the Library folder. He's not using an installer program like Packages.
@Lindon
startAsProcess
can launch an external program (and presumably a script). There is also asetExecutePermission
function that might be helpful here.Thanks yeah - this is what Im trying to do. Not sure
setExecutePermission
does much more than allow the file to be executable - its notsudo
-ing anything, orchmod
-ing and Im worried that the shell script will just run into the same permissions problem I have already... I guess I can try it next time I'm on the mac. -
This post is deleted! -
@Lindon Ah now I understand. That is possible.
To move from the home directory to the root directory you will need sudo rights. You can keep your HISE app without Root priviliges (best practice) and simply ask for the root password when its needed. Here is a simple shell script which opens a dialog to ask for the password then does a sudo action. In your case it should copy the folder.
#!/bin/bash # Prompt for password PASSWORD=$(osascript -e 'Tell application "System Events" to display dialog "Please enter your password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null) if [ -z "$PASSWORD" ]; then echo "User canceled or did not enter a password." exit 1 fi # Use the captured password to execute a command as sudo echo "$PASSWORD" | sudo -S echo "This is a placeholder for your command" # Replace the echo command above with the command you need to run as sudo # For example: # echo "$PASSWORD" | sudo -S your-command-here
-
@oskarsh said in Installer permissions ...again:
@Lindon Ah now I understand. That is possible.
To move from the home directory to the root directory you will need sudo rights. You can keep your HISE app without Root priviliges (best practice) and simply ask for the root password when its needed. Here is a simple shell script which opens a dialog to ask for the password then does a sudo action. In your case it should copy the folder.
#!/bin/bash # Prompt for password PASSWORD=$(osascript -e 'Tell application "System Events" to display dialog "Please enter your password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null) if [ -z "$PASSWORD" ]; then echo "User canceled or did not enter a password." exit 1 fi # Use the captured password to execute a command as sudo echo "$PASSWORD" | sudo -S echo "This is a placeholder for your command" # Replace the echo command above with the command you need to run as sudo # For example: # echo "$PASSWORD" | sudo -S your-command-here
Thanks - I will give this a go....
-
@oskarsh well almost immedately bumping into my lack of MacOS knowledge... Im starting out with a simple copy command (cp)
cp /Users/lindonparker/Library/Audio/Plug-Ins/VST3/LoopBoss.vst3 /Library/Audio/Plug-Ins/VST3/LoopBoss.vst3
But the mac tells me this:
cp: /Users/lindonparker/Library/Audio/Plug-Ins/VST3/LoopBoss.vst3 is a directory (not copied).
-
-
@Lindon You should really use ChatGPT for this, I've stopped writing my own shell scripts a year ago. Do a simple sanity check and let the AI explain its code.
-
@oskarsh said in Installer permissions ...again:
You should really use ChatGPT for this,
Only if you understand the commands it produces. If it makes a mistake and you run a bad script it can cause all kinds of problems.
I was lazy with one script I was working on and didn't thoroughly read the output from GPT. I wanted to rename some files but I ended up prefixing every file in my home folder :p took me a while to put that right, fortunately it wasn't anything destructive.