Installing drivers with Mac app - rejected by Apple review team
Asked Answered
B

1

6

I have developed a Mac desktop application and we have a business reason to have our users to install few drivers for our application to work.

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 package installer to install the drivers before accessing the 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 and 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.

Status: Complete.

Thank you for your commitment to Mac app development. App Review Board.

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 App Store to avail the 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: ( Application Flow and Role of drivers ).

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.

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

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.

Mac app and drivers component would communicate using a apple script to connect each other. Once driver components complete the necessary steps then it will call the apple script to invoke the Mac app to perform its function.

Bushwa answered 26/3, 2014 at 14:28 Comment(6)
What does the driver do, which API does it use? There is no folder in Library for "driver". Is it a deamon (executable that runs in background without UI)? How does your App communicate with the "driver"? sockets? XPC?Saunder
You don't have to distribute your app through the Mac App Store.Thermomagnetic
@mahaltertin I have added few more information about the application flow and the driver. Kindly have a look.Bushwa
so, printing sends the document to the server? That is rather unusual and I would consider adding a service or such instead of printing to the server....Repentant
@Repentant Thanks for the reply. Yes you are right I am sending the doc to the server using service in my application. But to make the application work I need the print drivers to be installed in the MAC machine. This print driver will generate genric formats of print files and contains all the details of the print. I cant remove this driver dependency as it is in my business requirement.Bushwa
Evernote has this as well. Sending a PDF directly from Print to Cloud. Sounds reasonable. See my answer how it is achieved.Saunder
S
0

Suggestion for design change, should be compatible with Mac App Store sandboxing.

  • Include all the needed files in the Resources-directory of your App Bundle.
  • Ask user that there is an optional install to better integrate with the system.
  • The dialog should to say "optional" because the App should also work without this.
  • If user says yes, show a NSOpenPanel pointing to ~/Library/
  • Get the NSURL of this directory into sandbox.
  • Copy the driver files from your bundle to the folders of Library
Saunder answered 27/3, 2014 at 14:26 Comment(5)
@ Mahal Thank you for your reply. My previous RnDs showed me to understand that I could go for PDF-Workflow but still i have to handle lot of other formats via drivers which would be my business requirement. so would like to know if there is better option to talk each of this driver component and app component based on my above explanations ? OR I would think to redesign the whole thing with huge efforts ? . please advice.Bushwa
I just added an alternative way and more details. but please edit your question to add details: what do you mean by driver? What interprocess communication do you plan between driver and app? and please don't write Mac in uppercase :-)Saunder
Thanks, I have added my comment in my question.Bushwa
We implemented something similar in the upcoming release of Raskin. Check out here the sandboxed version: raskinformac.com/betaSaunder
@Bushwa did you find a solution to this? if my answer helped you, it would be great if you could mark it as "answered" using the checkmark on the left hand side.Saunder

© 2022 - 2024 — McMap. All rights reserved.