Hi there!
Huge thanks to @rogerwang & team & collaborators (& Intel for sponsoring) for their efforts on nw.js 0.13!! => Looking so much forward to Launch Day :)
We are currently developing in parallel for Electron and nw.js (as cross-compatible Chrome App) and need to know how this will play out with Apple's Mac App Store requirements and review process in the near future! to make a decision about which "container" to use for our release...
We are currently only aware of Audio & Video Playback licensing issues resulting in Apple not allowing such apps in Mac App Store (ffmpeg). See this issue for details.
On a technical sidenote: According to @johansatge's nwjs-macappstore-builder and this comment , is ready for 0.13
Does anyone have any recent experiences with this?
CC @alexeyst who worked on this. Would you mind to check whether the current RC version MAS compatible? Thanks.
@rogerwang @alexeyst any new developments on this? all related issues are from 2015 and apply only to 0.12
Since @alexeyst is not responding, I reassign this issue to @ghostoy
Sub-tasks for MAS support:
CFBundleIdentifier for all bundlesCFBundleDocumentTypesLSApplicationCategoryType@ghostoy Wow, great work and super-fast too!! :))) can't wait to check out the MAS build flavor 👍 💯
@haraldox Here is the test build for MAS flavor you can try with http://dl.nwjs.io/live-build/05-09-2016/nw14-df7f7cf-723666b-756e507-5a26102. There is also a reference script for signing the app in https://github.com/ghostoy/nw.js/tree/nw14-mas/tools/mas. Would you please try wit this version and give us feedback? :)
I'm getting this message when verifying the signing with spctl -a -vvvv "$app"
dist/nwjs.app: a sealed resource is missing or invalid
This is after copying my app to app.nw and then running the signing script.
@jpittner I can't reproduce the error with spctl tool. Does it fail if you sign the app without app.nw?
@ghostoy if I just copy the nwjs.app from the zip file, throw that into src/ and don't change the Info.plist, and don't add the app.nw, spctl fails with error rejected (with no details provided. apparently Apple doesn't understand what verbose means)
I then take the Info.plist from nwjs.app and change the bundle identifier to com.me.myapp, CFBundleDisplayName to myapp. I copy the app.nw to the proper directory and then sign. This results in the error "a sealed resource is missing or invalid".
@jpittner The signing script will properly change all the bundle identifiers and versions with the given parameters for your app. Or you have to change all the plist files nested in the app, including the framework and helper.
As for the "rejected" status, since your app is not on Mac App Store yet, your certificate will be rejected by spctl. But it doesn't matter for submission. If you want to distribute your app out of Mac Store, you you have to sign it with "Developer ID XXX Certificates" instead of "3rd Party XXX Certificates" and spctl tool will be happy with it.
@jpittner @haraldox So far, my testing app can be successfully upload to the store. But I'm not able to test for publishing the app. If you see any other problems submitting to Mac Store, please let me know.
@jpittner @haraldox @gpetrov We have announced the alpha testing for MAS build of 0.14.4 in the mailing list recently. If you have any problem using MAS build for NW.js 0.14.4, please send your further feedback here.
Once it's confirmed that Apple accepts the NW.js based app, we will finish alpha testing and release beta versions of MAS builds for LTS (0.14.x) and stable versions.
@ghostoy We would really like to try the MAS right now, but our app requires File/Folder permissions outside the App Container. So we need to ask the user for permissions according to Apple guidelines.
This is done through the open file open dialogs api. IS there support or API for this in NW.js?
Yes, it's automatically done through <input type="file">.
@ghostoy that's awesome! Does it work for folder picking as well? And are the authorizations saved even if the app restarts afterwards? So that it has a lifetime authorization?
@gpetrov Yes, it works for folder picking. NW.js uses the standard NSOpenPanel & NSSavePanel.
For how long the authorization can keep, it's controlled by OS X. According to Apple's doc, it's not persist accross launches and restarts. If you want so, you have to ask user to open the file next time or use so called bookmarks (not yet supported). I saw there was an discussion in #1755 about the security scoped bookmarks. If the issue blocks you, please open an issue for it.
@gpetrov @jpittner Do you have further feedbacks on the MAS build? Does it pass the Apple's reviews for publication?
Is there an approximate timeline for this feature? We have an app ported from MacGap to nwjs waiting for a stable MAS version.
The MAS build here can be successfully uploaded. But we are unable to
publish app to store. So we need at least one confirmation from testers
that Apple can accept the submitted app to finish the alpha testing. Would
you like to test it?
anku94 [email protected]于2016年7月11日周一 18:45写道:
Is there an approximate timeline for this feature? We have an app ported
from MacGap to nwjs waiting for a stable MAS version.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nwjs/nw.js/issues/4556#issuecomment-231701575, or mute
the thread
https://github.com/notifications/unsubscribe/AAczeDIPuM8TfGaChniHwNHsFoMtvVwIks5qUh7RgaJpZM4HvRnm
.
@anku94 Could you help to test if alpha build can be published to App Store?
Hey, sorry for the delayed reply. Will try it over the weekend and let you
guys know.
@anku94 Did you get approval from App Store?
Sorry again, could not try it over the weekend, and now I'm switching jobs which will cause me to lose access to the codebase and Apple Developer account.
Hi there. Any updates on this issue? It looks like 0.16 version released already but still no possibility to publish, am I wrong?
Hi,
I've tried to use the alpha build provided above for my application. I replaced SDK files from regular 0.14.2 build with the ones from the MAS build. But the resulting .app can't start on my iMac. Error message in crash window (Application Specific Information part) says abort() called but there are no details about why it was called (e.g. exception of some sort).
App is working as expected when regular 0.14 build is used.
Has anyone encountered this problem with the alpha MAS build?
@ivankashtanov It's most likely to be sandbox issue. You can open Console app and filter messages for NW.js before running your app. Please post your messages here if you cannot resolve the issue.
@kirya2000 We are waiting for a confirmation of approval for publish on App Store from community. Once it's confirmed, we'll continue to release beta and final versions for both LTS and stable. It's appreciated if you can try this alpha version and send us a feedback of whether it works and whether it's acceptable by App Store.
@ghostoy Tried running the app from Terminal as you suggested.
The problem was caused by symbolic links in Contents/Versions/50.0.2661.94/nwjs Framework.framework folder. There's Versions\A folder inside and all other files in nwjs Framework.framework are basically links to files with same name in Versions\A (and all of them use another symbolic link Versions\Current which links to Versions\A). For example, libffmpeg.dylib is a link to Versions\Current\libffmpeg.dylib.
All of these links were broken when I used 7-zip on Windows to create the .app using MAS build. When I recreated them, app started without errors.
Regular build didn't have this problem because there were no symbolic links for those files/dirs, so packaging .app on Windows didn't break anything.
Maybe it would be better to remove these links from MAS build as well.
@ghostoy thanks a lot for response. To keep you informed we (ivankashtanov is our developer fighting with alpha build) are going to try publishing the app based on 0.14 for our customer, so now it looks like we have a working version and we are on the way of doing this. We will let you know the results upon success/failure.
@ivankashtanov These symbolic links are required for uploading apps to App Store. See https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html. It's recommended to build your app on native OS, and it is a must if you are using native modules.
@kirya2000 Thank you for supporting :smile: We'll release a beta with latest LTS / Stable ASAP once you give us a confirmation.
@kirya2000 Is your app accepted by App Store?
@ghostoy we're wrapping up solving the issues (not related to NW for the moment). I think that will be published to the Store till the end of the week. Will keep you updated.
Unfortunately our app was rejected by MAS (was previously approved when using 0.12.3 so it's all about 0.14)
Incorrect executable permissions: 0100744.
We've determined that one or more temporary entitlement exceptions requested for this app are not appropriate and will not be granted:
com.apple.security.temporary-exception.mach-lookup.global-name: com.apple.ReportCrash
We understand this may prevent the app from being approved for the Mac App Store. We encourage you to investigate other ways of implementing the desired functionality.
Crash reports are handled by OS X and are uploaded to iTunes Connect if the user has opted in to making those reports available. It is not appropriate to read and collect them directly. See iTunes Connect for information on viewing and downloading available crash reports.
Your app uses or references the following non-public API(s):
framework: '/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation'
: _CFCopyServerVersionDictionary
: _CFCopySystemVersionDictionary
: _kCFSystemVersionBuildVersionKey
: _kCFSystemVersionProductNameKey
: _kCFSystemVersionProductVersionExtraKey
: _kCFSystemVersionProductVersionKey
framework: '/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit'
: NSAccessibilityUnregisterUniqueIdForUIElement
: NSTextInputReplacementRangeAttributeName
framework: '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices'
: AXTextMarkerCreate
: AXTextMarkerGetBytePtr
: AXTextMarkerRangeCopyEndMarker
: AXTextMarkerRangeCopyStartMarker
: AXTextMarkerRangeCreate
: CGSSetWindowBackgroundBlurRadius
: CTFontCopyDefaultCascadeList
@armandn Thanks for reporting. I'll look into these issues.
Additional tasks:
Helpers and Internet Plug-Ins directoriesWe encountered a problem when running the signed app on MacOS 10.10.5. Here's the error report
error-report.txt
We haven't found NW.js issues with the same error message, but this error is mentioned in reports for other projects here and here and seems to be related to ffmpeg or SDL.
Just additional comment, the issue reported by @ivankashtanov seems to be not related to MAS build of NW.js it seems to happen with non-MAS build 0.14 as well. Additionally the difference between the machines where it crashes and not are the hardware (at least Mac where it crashes has retina display) and not only OS version. Should we create a separate issue for this?
@kirya2000 Yes, please report another issue. And make sure you submit a case to reproduce this crash and/or submit crash dumps found in ~/Library/Application Support/<your-app-name>/Crashpad/completed.
@ivankashtanov It doesn't seem to be related to ffmpeg since it didn't appear in the stack trace.
Anyone end up submitting to the app store successfully with 0.14.x or 0.13.x build?
I'm having success submitting to the app store with my app using build 0.12.3 and I'm wanting to upgrade my code to 0.13.x or 0.14.x but I'm reluctant if I won't be able to submit to app store.
I ideally would love to be developing with the latest branch but mac app store support is a huge must have...
@intralizee We are still struggling the reviews on MAS. And when it passed the review (hopefully in a month), we will release builds ASAP.
I tried to use the latest 0.18.1 MAS build today, but it crashes at startup complaining about libffmpeg - which is not present in the MAS build:
http://dl.nwjs.io/live-build/11-25-2016/nw18-33048ce-3b70d55-ed8a267-2021126/v0.18.1/
dlopen /Users/XXXX/nwjs-mas-v0.18.1-osx-x64/nwjs.app/Contents/MacOS/../Versions/54.0.2840.59/nwjs Framework.framework/nwjs Framework: dlopen(/Users/XXXX/nwjs-mas-v0.18.1-osx-x64/nwjs.app/Contents/MacOS/../Versions/54.0.2840.59/nwjs Framework.framework/nwjs Framework, 257): Library not loaded: @loader_path/libffmpeg.dylib
Referenced from: /Users/XXXX/nwjs-mas-v0.18.1-osx-x64/nwjs.app/Contents/Versions/54.0.2840.59/nwjs Framework.framework/Versions/A/nwjs Framework
Reason: image not found
Abort trap: 6
Looks like the build didn't contain ffmpeg. You can try to put libffmpeg.dylib with the one shipped with 0.18.1 SDK version. I will try to fix it ASAP.
Update on this issue: using the 0.18.1 MAS build referenced above, I just got a NWJS app approved on the Mac app store, where it went live this morning. You can search for "Wizkers Radio" on the app store if you want to see what it looks like.
Many thanks to everyone who helped out, it is really great to see NWJS has reached this milestone on recent builds!
@elafargue Fantastic congrats! @ghostoy - maybe we can have more later MAS builds now, as it is confirmed to be working. Like 0.18.6+?
@elafargue Thank you for your test and feedback!
@gpetrov Yes. We'll keep MAS build up-to-date for each release.
@ghostoy can you make sure the MAS build build and published on https://dl.nwjs.io so we can target them directly with https://github.com/nwjs/nw-builder by just specifying flavor=mas as https://github.com/nwjs/nw-builder#optionsflavor
Maybe this list needs an update: https://github.com/nwjs/nw.js/wiki/Build-Flavors
it will be nice if you can put there at least the 0.18.6+ versions online or if possible 0.18.1 and up as it is stated to work here.
@gpetrov Sure.
@ghostoy i wonder what is the progress on including MAS builds in published builds and live builds?
As i understand, there is only one MAS build published for now.
Thank you and all participants for the great job! :+1:
Beta release based on 0.19.5 is available in http://dl.nwjs.io/v0.19.5-mas-beta/. Please follow the document of Support for Mac App Store for the signing process and usage of the signing scripts.
My app passed review successfully, thus confirming that v0.19.5 mas build and signing script works fine. Thank you @ghostoy and nwjs team.
Look forward to seeing it with published builds, will be easier to automate the whole process with nw-builder.
@chino23 @rogerwang Any update on 0.20.x builds?
CC @sunlin-link who own this branch now.
@rogerwang will there be a 0.26.x Build for MAS ?
Last succesfull submission of my app was with 0.19.5, since them there are no new MAS Build's
@DrDoing good to know the old version is working for you. @sunlin-link has been working on a new version of MAS build. He will report here if there is any progress.
any news about a new MAS build ?
or ist it now possible to use a normal MAC Build for Mac appstore ?
@sunlin-link please advise. Last time I heard from you it's said to be "nearly done".
I've already finished rebasing to lastest stable release and am working on a final crash issue.
I'll give a commit this week and hope to resolve this issue soon.
ping
@sunlin-link how is the progress with the latest NWJS build as MAS? We really need it to publish our app to the Mac Store.
@gpetrov same situation here. My app is published on macupdate and our webpage, but it would be great if we can put it on the official app store!
Is this still being maintained or not? I have so many issues with a regular nwjs build since the mas version is just too old to use: https://groups.google.com/forum/#!topic/nwjs-general/EE8eYlG3XgE
@sadikyalcin NW.js is being actively maintained. But I don't think the Mac App Store version is, which is a shame.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Most helpful comment
I've already finished rebasing to lastest stable release and am working on a final crash issue.
I'll give a commit this week and hope to resolve this issue soon.