Mail.app plugins & Mac App Store - macos

Does anyone know if the Mac App Store is allowing third party plugins for the Mail.app? With the new release of Mountain Lion, the security architecture will sandbox every signed application (and thus Mail) so that the process of installing a plugin is very limited.
The question is: since a plugin must use a private API (Mail.app doesn't expose APIs) and access private data from another application, how can this be accomplished within Mac App Store rules? Is it possible at all?

You never could publish plugins through the Mac App Store. The rules only allow for self-contained apps. You also couldn't sell an app that does nothing more than installing your plugin - the rules forbid apps to install any code in shared locations. And with the sandbox it's not possible either.

Your application would need to be usable without the plugin present. MsgFiler offers a good example: it works, albeit slowly, by itself, and offers a plugin downloadable separately from the App Store which speeds it up.

Related

Share and install .dylib file to users on macOS App Store?

I am new to macOS app development. I have knowledge on Windows App development. I have a server application which can be installed offline. For communicating there is a client library which is a .dylib. I want to distribute the .dylib using macOS App Store so that third party application can consume the library.
How to install the .dylib and headers to a location from macOS App Store as a installer?
You cannot distribute dynamic libraries and header files through the App Store. It's for applications only.
Instead, have a look at other means of distributing libraries such as CocoaPods, XCFrameworks etc.
Mac App Store is quite restrictive when it comes to installers. Usually you would distribute an .app that can be run directly and the app then installs more things if needed.
What kind of apps would consume your library? Why not provide a "Framework Bundle"?
This is the typical way to distribute libraries within macOS
How to install the .dylib and headers to a location from macOS App Store as a installer?
You don't. I'm afraid the App Store is not a package manager.
While you can put libraries, CLI binaries and other resources inside a GUI app bundle, you cannot distribute anything other than a GUI app bundle via the App Store. And neither could 3rd parties mark their app as "depending" on your app. And if they linked against a dylib outside of their app path, then it's highly likely that the app would get rejected in review because it would be found to not work. Again, it's not a package manager.
All apps on the App Store are required to be self-contained, so the way Apple wants developers to handle dependencies is by bundling a separate copy.
Thus, the only "supported" way to distribute your library in a way that can be used on the App Store is to make it available for download on your website, and then have each developer bundle a copy of it when they ship their app.
Of course you could opt for other (or additional) channels like brew, which are actual package managers, but that won't help with anything on the App Store.

Is it possible to distribute an OSX app ad-hoc without UUID but with entitlements

I'm having some serious trouble signing an application for ad-hoc distribution. Is it possible to distribute an app with the following requirements?:
Does not require tester to provide UUID up front
Outside app store
Utilizes entitlements such as VPN or Keychain Sharing
I ask because exporting without signing (Organizer (select archive) > Export > Export as Mac Application) fails with "embedded provisioning profile not valid: ..." on some devices. It appears to work on others though.
Thank you!
If you're trying to use the NetworkExtension framework (which I'm assuming because you tagged your question with nevpnmanager,) unfortunately that's only available in App Store apps.
I know this because I asked Apple. I was trying to make a non App Store NEVPN app, but no dice. Quinn from Developer Tech Support told me the NEVPN stuff is only available for App Store apps, and that I should file a bug report (which I think I did.)

Can you upload .ipa files to Testflight without Mac?

I am using Phonegap Build to quickly deploy and test my applications. For this to work, I had to go through an elaborated tutorial on creating provision files and certificates and borrow a Mac to make use of Keychain. By then however, I only registered one device UDID.
Now I want to add more devices, but I dont want to go through the whole process again, also what if I have to add other devices later?
So I was thinking to use Testflight, which only requires that you upload an .ipa file (apart from having a developers account etc). With Phonegap Build you can easily create these .ipa files.
However, since I am working with Windows, I dont see how I can upload the .ipa files on Testflight. Most tutorials online talk about using Xcode and some other Mac program.
Is there any way to upload it anyway?
Hacks might be available but since Apple integrated TestFlight into iTunes Connect - which (at this time) does not have a public API - the only official solution is to use Xcode or Application Launcher for ipa uploads. Both are only available for OS X.
An alternative solution might be to use an iOS CI/CD (continuous integration and delivery) service to do the upload. We happen to have one - bitrise.io, CTO here - but you can find a couple of other services as well.

Distributing Mac App via Mac App Store and Own Website

I want to distribute my Mac App on both Mac App Store and my own website. The Mac App Store app will be signed via the Mac App Distribution certificate from Apple and the Website version will be signed via the Developer ID Application certificate. The website version will be distributed as a simple MyAppName.zip file that lets the user unpack MyAppName.app to where ever the user wishes. My app is a document based app that creates documents with extension .mydoc
I have two options to implement such a scenario.
First, and my preferred method is to have same bundle identifier for both apps. If a user tries to install from MAS first and then website; Will both apps live on my Mac without any issues? If a user installs the website version first, and then tries to install from MAS, how will MAS behave? How is it decided that which app will open my document by default?
Second, I use different bundle identifier for the apps on MAS and my website. Essentially they are different apps and I don't like this because it is confusing for a user because the apps look and behave exactly the same. In this case, how is it decided which one of the apps will open my document by default?
If a user tries to install from MAS first and then website; Will both apps live on my Mac without any issues? Answer: YES
If a user installs the website version first, and then tries to install from MAS, how will MAS behave? Answer: MAS will ask user that there already exists a version and if it should be kept.
How is it decided that which app will open my document by default? Answer:
Launch Services documentation says the the behavior is not determinate. So either one will open.
Second, I use different bundle identifier for the apps on MAS and my website. Essentially they are different apps and I don't like this because it is confusing for a user because the apps look and behave exactly the same. In this case, how is it decided which one of the apps will open my document by default? Answer:
Launch Services documentation says the the behavior is not determinate. So either one will open.

Unlocking Developer ID version of app if Mac App Store version is present on system

I'm currently working on sandboxing some of my applications and it looks like I'll have to get rid of a few features just to satisfy the Mac App Store sandboxing (and other) rules.
Obviously users won't be happy about losing features and I fear they won't blame Apple for making stupid rules and we developers will have to bear the brunt of the anger.
In this vein, I'm thinking about building a system that means that if a user buys the Mac App Store version, s/he'll get the "normal" distribution version for free.
Since I have no idea what the email of the people buying my apps on the Mac App Store is and I don't want to have to handle such cases "by hand", I'd like to find a way of doing so automatically.
I've been thinking about just looking on the hard disk, finding an installed version of the program from the Mac App Store and then unlock the "distribution" version as well.
I'm just not certain whether this doesn't break Mac App Store rules..
is looking for the MAS receipt okay in terms of the MAS rules?
can I verify the MAS receipt using the same mechanism as is embedded in the MAS version of my program?
Is anybody else thinking along these lines?
Best regards,
Frank
I do something like this to enable Mac App Store customers to easily beta test new versions of my app downloaded from my website while still enforcing licensing. Upon startup of the MAS version of my app, I copy its receipt into /Library/Application Support/MyAppName/. Beta versions of the non-MAS version of my app include the same receipt validation code as the MAS version. They look for a receipt in the App Support folder, and validate it, running in licensed-mode if the receipt is valid.
I've been doing this since shortly after the launch of the Mac App Store, as have other developers with no problem. What you describe should be just fine.

Resources