OSX File Permission

Hey guys, please, could someone point me into the right direction? Here’s the problem, I created my own installer, on Windows I just set it to ask for Administrator rights and it them can save the plugins anywhere. On OSX the story is different, I couldn’t find an EASY way to put files into folders when they don’t have the right permissions. Not only that, but I can’t open the folder for reading after it is saved, so that’s another problem.

Resuming:

A) how to elevate file privileges on OSX so that I can save plugin files (.vst, .vst3, .components) into any folder

B) how can I read data files (such as skin files) from a folder that requires elevated rights?

Thank you for any advice.

Cheers, WilliamK

For a) this might help : https://github.com/michaelvobrien/OSXSimpleAuth/wiki
For b) to avoid having the user enter their password every time your app runs, you’ll need to get the file (and parent folder) permissions right so that anyone can read.

1 Like

Oh yeah, thank you. :slight_smile:

This helped me when I created my own installer:

https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/AccessControl.html

Rail

Hi!

This is giving me a headache. And I mean I literally have a headache atm because of this.

I don’t know Objective-C, nor I know much about OSX, except it’s idea of security is that of a North-Korean. I’ve checked some materials but they are all very vague and difficult to understand. Rare even mention the language the code is written in nor give clear examples!

Is there a simple way to do this in C++? I just want write permissions to say, /Library/Audio/Plug-Ins/VST etc. temporarily for my installer to install the plugin there and then Mac OS can continue living as it desires, locked up in a dark cave where no-one should ever wander…

Any code examples, resources etc. come in handy, but, please, in C++ :frowning:

Same thing here. :frowning: I won’t support Catalina and I may even stop supporting OSX for good. Apple just don’t care. I’m really impressed on how easy things are on MS side. :-\

@kaukomedia You shouldn’t need to jump through hoops to get an installer to write plugins to the standard plugin folders such as /Library/Audio/Plug-Ins/VST.

AFAIK a macOS installer can’t write files to both a common location (like the path above) above AND a user location (~/…), though. That one caught me.

However there are a few other hoops to jump though which may or may not be relevant to your situation: the individual plugin files and the installer pkg should be signed with an Apple developer certificate ($99/year); the installer needs to be notarised or your plugins won’t run in Catalina (also requires a developer certificate).

To be fair, Windows installers need to be codesigned too, but yeah Apple have made the whole process extremely painful.

Hi!

Thanks for your reply. Yeah I’m in the apple dev program now because of Catalina but still in the process of getting everything ready for signing & notarization.

Well for me the custom-made installer would’ve been great, since 1) I could do an universal installer with JUCE to work both in win and mac os the same way, and of course maintain the code/installers easier with this and 2) I could have custom files created during installation easier like cfg files that are system-specific and 100% confirmed to work with my plugins since both would use JUCE framework for everything.

It seemed like a good idea until I bumped onto window’s UAC (It’s ok except if turned off, it won’t automatically notify non-admin users why the installation doesn’t work) and MAC OS Equivalent because… yeah. I don’t know objective-C and pretty unwilling to learn just because of this.

I will have to modify my plugins a bit and fall back to OS specific installers for now… And probably never ever implement a custom installer. :smiley:

I think it’s really lame from Apple’s side to charge a fee just for certification, while MS is free. And now they want to switch to ARM processors? This will be a total mess… :frowning: