MacOS – Installing drivers before installing Mac app – rejected by apple review team

app-store-connectmac-appstoremacossandbox

I have developed a Mac desktop application and need to have our users install few drivers to run our application on OS X.

Due to sandbox constraint, I am not able to get the user access permission to install the drivers within /Users/System Name/Library/ folder.
(i.e.,) It will ask user permission to install the drivers from a single Mac package installer to install the drivers before accessing the Mac App.

Also, I am not able to bundle drivers in a single package to install the drivers and the Mac app due to the Sandbox constraints.
So that I will have to separate driver installation and Mac app installation as two step process.

I have submitted the app to Apple review team with the instructions of installing the drivers, then installing the mac app to perform the desired functionality.
I have detailed the video to perform the steps as well. But review team has rejected with the following reason:

Reasons:

2.3: Apps that do not perform as advertised by the developer will be rejected

We are writing to let you know that the App Review Board has
completed their review of your appeal and determined that this version
of your app is in violation of Guideline 2.3. We have determined that
your application requires the user to download and install additional
software in order for the application to perform as advertised.
Applications should not require the user to install additional
software in order for the app to work. We will continue review of your
app with this in mind.

I understood that users should not install additional software for the app to work, but need to know the possible ways to submit the app in Mac store to avail the Mac store benefits instead of releasing outside the Mac App Store. Your valuable suggestion would be helpful to make any design changes for this solution.

Update:

Here is what my Mac app design and technical flow :

  1. Product is actually used to store the documents on the Server and would use the documents for storage and cloud printing. I do have two options to send the documents to cloud :

a) Users can right click any document, pass it to Mac app to send the document to cloud server.

b) I do have another option which is to send the documents from print option (ctrl+P), I would convert the documents as generic format to understand by cloud servers. This feature would bring more value to the users and I want to stick into this approach as well.
User can pass any document via document print function and mac driver files and few other supporting files will communicate to Mac app for further processing.

  1. Mac App will show the list of uploaded files / status of each documents.

Why do you need the drivers in the first place?

ANS : Driver files have a lot of functionality on handling the document formats which would help on cloud, so I must have driver files in my architecture and based on my business requirement.

Can't you integrate that functionality directly into your application? and what kind of research you have already done on the topic of bundling device drivers with App Store downloads (besides this post of course).

ANS : Yes, I have tried to integrate the driver files in the app itself, pushed to install in the /Users/System Name/Library/Printers/ folder as well and design works fine with no sanboxing. After I enable Sanboxing, It does not do any user permission checks and system level updates because it will get user permissions to install drivers to list out on the documents print options.

I have also tried splitting the driver installation as separate application and the actual Mac app as another application, for which the application has been rejected by the review team with the above mentioned reasons.

Best Answer

Without recoding the app the meet Apple's guidelines, you will have to rely on selling your software outside the MAS. Plain and simple I'm afraid.

There is no way around Apple's guidelines. They are written for a reason; to protect users from having apps install malicious components or components that may damage their systems, to promoting an exceptional users experience. Having your app pull down drivers is not an ideal solution and I would not install such an app. Either make do with the existing driver set, or find a workaround that won't break your program.

You are the developer. You know the codebase and the requirements as an Mac Developer. There is no loophole. Either you are asking us to provide you with a way to circumvent Apple policy or tell you how to code your app. In both cases, it falls outside the scope of what we do around here.