ProfileCreator / ProfileManifests

Manifest repository for the ProfilePayloads framework
346 stars 147 forks source link

Add Zoom payload #174

Closed apizz closed 4 years ago

apizz commented 5 years ago

Per https://support.zoom.us/hc/en-us/articles/115001799006-Mass-Deployment-with-Preconfigured-Settings-for-Mac

bp88 commented 5 years ago

FYI, Zoom does not read from configuration profiles. I would recommend against working on implementing these preferences as a manifest given that they would not be useful in the interim. And even if they implemented proper config profile support they may use different keys.

Here’s feedback I filed with them to add support for it: https://macadmins.slack.com/archives/C09UB2Y93/p1563304686285600

Ticket 1393161: ​ Hello, ​ Currently the only way to manage preferences for Zoom on macOS is to deploy a us.zoom.config.plist file to /Library/Preferences/. However this is not the best way to manage application preferences on macOS as it relies on the values in a file that can be modified at any given time. ​ I would like to request support for macOS NSUserDefaults API (or CFPreferences API). This would allow IT administrators to utilize Configuration Profiles to manage application preferences. By utilizing these APIs, the preference values are stored in memory by the application. The values can be written to disk which we typically see in the form of a plist. ​ A Configuration Profile lets specific application preferences to always be enforced by allowing the preferences to be set via the API. This means that even if you were to write a plist file or modify a plist file on disk, the application would still get the value that's being enforced by Configuration Profile via the API. ​ Configuration Profiles are commonly deployed by management tools that are used for macOS. This would be beneficial to IT administrators because preferences could 1) be easily updated and 2) always enforced. ​ More information on NSUserDefaults API can be found here: https://developer.apple.com/documentation/foundation/nsuserdefaults?language=objc More on Core Foundation here: https://developer.apple.com/documentation/corefoundation/preferences_utilities ​ Ideally all the preferences that are supported today would be migrated over to using these new APIs. ​ Also just to clarify, the Configuration Profiles would not be something that the application would need to read or be aware of. So long as the application uses the appropriate APIs as mentioned above, then the preferences can be enforced by Configuration Profiles. ​ You don't explicitly read MCX or preferences managed via configuration profiles, instead you use the Foundation NSUserDefaults methods or the lower-level CoreFoundation CFPreferences methods. If a preference is managed via MCX or configuration profiles, the managed value is returned. ​ NSUserDefaults are easier to call from Objective-C or Swift; CFPreferences can be easily called from C and C++ as well as Objective-C and Swift. ​ NSUserDefaults: https://developer.apple.com/documentation/foundation/nsuserdefaults?language=objc ​ CFPreferences: https://developer.apple.com/documentation/corefoundation/preferences_utilities?language=objc CFPreferences is a lower-level API. Stick to the CFPreferencesCopyApp* fucnctions; CFPreferencesCopyAppValue and similar. The CFPreferencesCopyKeyList, CFPreferencesCopyMultiple and CFPreferencesCopyValue functions bypass managed preferences. ​ As a side note, there's a community of macOS administrators available on Slack: http://macadmins.org. There's a channel #zoom where you can find me (@bp) and other IT administrators alike. We'd love to provide feedback so that we can ideally deploy Zoom using best practices. Other vendors participate in this Slack and its definitely helped foster a great relationship with administrators and other popular products out there. In short, your software developers are welcome to chat a bit more if they'd like to get some more insight on this specific request along with other feedback on issues specific to enterprise deployment/management.