What is the purpose of Apple Development and Apple Distribution certificates? - xcode

What is the purpose of Apple Development and Apple Distribution certificates for macOS application?
It is quite new types of certificates in addition to existing iOS/Mac Development/Distribution.
According to the documentation:
Apple Development — For macOS apps, use app services during development and testing.
Apple Distribution — For macOS apps, sign an app before distributing it through the Mac App Store.
https://help.apple.com/xcode/mac/current/#/dev154b28f09?sub=dev23755c6c6
What does it mean sign an app before distributing because for distributing it through the Mac App Store I have to use Mac App Distribution (the name is 3rd Party Mac Developer Application) and Mac Installer Distribution (the name is 3rd Party Mac Developer Installer).
Awesome but a bit outdated explanation: https://stackoverflow.com/a/29040068/1785926

Related

Can Apple Silicon apps be signed with a self-signed certificate when distributing them outside the App Store?

I'm distributing my macOS app outside the App Store and so far I've never code-signed it. My app targets advanced users who know how to configure macOS to allow the app to run.
With the arrival of the Apple M1 computers, however, things have changed as code-signing seems to be mandatory now for native Apple Silicon apps. That's why I'd like to ask: Is it sufficient to sign my app using a self-signed certificate when distributing it outside the App Store? Will it be possible for users who download an app that was signed using a self-signed certificate to run that app?
I'd expect that Gatekeeper will probably block such an app first because it was signed using a self-signed certificate but will users be able to override Gatekeeper's veto in the security settings (as it was previously the case with non-signed apps)?
Or do all apps built for Apple Silicon have to be signed with an official Apple certificate? I'd like to avoid that because last time I checked this was $99 per year.
You can codesign with ad-hoc feature. codesign -s - -f /path/to/filename. This doesn't need certificate.

Distributing Mac app outside App Store. How should I sign it?

I have a Mac app which can't be sandboxed due to using Apple Events and therefore it can't be released through the Mac App Store.
I've made a website, added a payment gateway and everything seems to be ok but I keep getting feedback from testers who can't open the app even with the right mouse button method.
First it was the raw app from Xcode without any kind of signing, after that I tried exporting after archiving using my developer certificate, the I even notarized the app with Apple but still there are people who can't open the app (even though they was able to use it before signing).
Currently I'm using the Mac App Distribution certificate (no provisioning profile). Is this correct? Should I use "Mac Installer", "Mac developer", "Apple developer", "Apple distribution"… why is this so confusing?
You should use the Developer ID Application certificate to distribute a Mac app outside the Mac App Store that does not use an installer. Most Mac apps do not use an installer.
Apple provides a decent explanation of the different certificates when you create a new certificate from Apple's Certificates, Identifiers, and Profiles page. To keep people reading this from having to go there, I'll explain them now.
The Developer ID Installer certificate is for distributing Mac apps outside the App Store that use an installer to install the app.
The Mac Development certificate is for signing development versions of a Mac app.
The Mac App Distribution certificate is for distributing a Mac app on the App Store that does not use an installer. The Mac Installer Distribution certificate is for distributing a Mac app on the App Store that uses an installer.
In Xcode 11, Apple added the Apple Development and Apple Distribution certificates so people could sign their apps for all Apple platforms with one certificate. These certificates are for apps that will end up on the App Store.

Developer ID signed apps cannot load external data under macOS Sierra

We currently have problems with the download versions (ZIP) of our applications under the new operating system MacOS Sierra from Apple. It is a (non-native) video tutorial app with external data and different startfiles (certificate signed) for Mac and Windows (originally created for DVDs).
Although the Mac startfile of the download version was properly signed with a valid Apple Developer ID certificate, an authorization problem now appears and the application can no longer load external data. The same application on DVD still works impeccably.
My researches have shown that under "macOS Sierra" developer ID signed apps (outside the App Store) are not allowed to use external libraries, external code or external data:
https://developer.apple.com/library/content/releasenotes/MacOSX/WhatsNewInOSX/Articles/OSXv10.html
Starting in macOS 10.12, you can not get any longer. An app distributed outside the Mac App. To provide secure execution, code your disk image is using the codesign tool, or distribute your app through the Mac App Store. For more information, see the updated revision to macOS Code Signing In Depth.
https://developer.apple.com/library/content/technotes/tn2206/_index.html
Is our described type of application no longer compatible with macOS Sierra?
Is there any solution to continue offering our applications as a download for macOS Sierra outside the App Store?
Possibly one could encapsulate here in the individual trainings over an automatism all necessary files in an app, afterwards sign and to prepare as DMG !?
Have solved the problem.
With a signed DMG everything works again as before. This is now possible under macOS Sierra (and from Mac OS X 10.11.5.)

Bundle ID Mac AppStore and non Mac AppStore

I'm releasing my Mac app both on the Mac AppStore and from my Online Store. I'm wondering if I should have the same bundle id for both or a different one?
There is nothing bad in the same bundle ids. Sandboxed apps and non-sandboxed are linked to a different paths. If you sign your online store app with Developer ID (which is definitely worth of) and use sandboxing in both distributions - there will be almost no difference.

Need apple Mac developer account for distribute free app?

I'm developing Mac app for free.
In iOS , we need developer account to distribute for upload into iTunes Store.
In Mac application, Is that also need to mac developer account for free distribute.
Firefox distribute their app free , we can download that dmg file from their website , not in Mac app store.
Please let me know is that need?
You need a developer account to submit your application to any of Apple's online stores. The price you want to sell for is irrelevant (even if that price is $0).
You don't need one to distribute the program yourself.
iOS will not allow software to be installed except with the Apple online store. The exceptions are:
Web applications
Jailbroken iOS devices
OS X Lion and earlier has no restrictions on what software can be installed.
OS X Mountain Lion will have a user preference that can limit software install sources (including the strictest setting which limits it to the Apple App Store only).

Resources