Distribute App Outside the Mac App Store - macos

I'm a newbie in OSX Development. I built an application in which will be distributed outside the Mac App Store. I have all the other certificates and keys working except for the Developer ID (App and Installer) for production.
I know that this may sound stupid, but for what it's worth, I just wanna make sure.
Will my app still be considered Developer ID - signed if I exported it as a Mac Installer Package instead of selecting Export Developer ID-signed Application, when I install it to its destination devices? Will it be successfully installed or be rejected with GateKeeper-enabled devices?
I have been scratching my head for this since for some weird reason, I cannot add a new Distribution Developer-ID from the Dev Center. I was able to add a Developer ID earlier this week however, I ran into some issues with my private keys. As per suggested by Apple and many other developers, I revoked all the Developer IDs and private keys to start fresh. The problem now is that I can't add any new Developer ID (Distribution). I cannot add in both Dev Center and by requesting through Xcode 5.0.1. I'm stuck.
I have submitted a Bug Report to Apple, but who knows when they'll be able to resolve it.
So now, temporarily, since I don't have any choice (I guess), I'll use the Mac Installer Package, but the question is, will it work?
Any help would be very, very much appreciated.

I've done this recently and have created a third Xcode project configuration to Debug and Release called Archive, which is a copy of Release except the app is signed using the Mac App Distribution / Third Party Mac App Developer and, confusingly there is a third name used for this same certificate.
I then changed the Archive scheme to use the Archive configuration to build.
Before doing this I had errors on some Macs when signing with my Developer ID, in some cases they claimed the app was corrupted, and in other cases I got gatekeeper blocking the app, forcing me to override it in System Preferences > Security & Privacy.
I personally use xcodebuild (from Jenkins) to build the app for distribution to testers, which I package in a .dmg so they only need to drag it to /Applications or ~/Applications and I do all that using a script within the Jenkins configuration. Your experience may differ to mine if you are using the Xcode app instead.

Related

XCode - Always have to reset signing identities and re-download provisioning profiles

I'm building mobile apps using Xamarin-Visual Studio. I have a MacBook Air that is my iOS build host.
Every day or two I have to reset my XCode signing identities, re-download my provisioning profiles, and then reboot the MacBook. If I don't, I am unable to install the IPA on an iOS device (it creates an IPA file but just won't install to device).
Any ideas why?
XCode version is 7.3.1. My setup was working fine for months. It started doing this for no apparent reason about a week ago. I'll also add that I have another build environment with an iMac that started doing the same thing at about the same time.
Absolutely nothing has changed with my Mac and Windows environments (although I'm not sure Windows/Xamarin have anything to do with this. Seems like more of a glitch on the Mac side).
Thanks in advance!
Making comment above an answer since there has been no activity on this since:
If you are sharing a signing identity with other team members, if another team member needs to use the singing identity, they will need to reset it and redownload the profile. And when they do, you will have to do the same when you need to use it again. Resetting the signing identity basically creates a new certificate (with the same name) and thus invalidates the profile that used the "old" certificate.

Export XCode App for One Person

Alright so I've built my first desktop app in xcode. The app is intended for use by one person only. I want to export it in the quickest, easiest way possible so they can use it on their laptop.
I've got Mac OS 10.10.3 and XCode 6.4. The target laptop has Mac OS 10.10.5. I am reluctant to update my system and the one on the laptop but will do if I have no other choice.
Getting it to work on my own computer would be a great start. Currently if I do Product > Archive. And then Export "As Mac Application" (unsigned). It creates the app but when I try and open it, it say "App couldn't open because of a problem". Is there a way I can debug this? Or an obvious thing I may have missed?
Ideally I want the app to work on my computer and to be able to transfer it to the target laptop and have it work on there too. I'll pay for the developer licence if I have no other choice but for a single-target application I feel like it's a waste of money.
You don't say it explicitly in your question but do you not have an apple developer certificate? If not, then you will not likely be able to sign the app appropriately to export it for use. If I'm not mistaken, when I export my apps (even for local testing on other machines in my house) the app gets signed with my developer certificate, enabling OSX to see that the app has been signed by a registered developer.
I believe you will be able to run the app in Xcode (without a developer certificate), but in order to export it you need a signature (development certificate) which is provided as part of the Apple Developer subscription.
An easy thing you could try to do, assuming your app builds:
Run your app
Right click the app icon in the dock
Click Options -> Show in Finder
Boom there's your app bundle. Send that over to your recipient
It seems fairly obvious in hindsight but I ended up installing XCode on the target computer (using the Apple Developer site to get the same version as I was running on the dev computer. I was then able to just copy the project across and run it. This wasn't ideal but it did the job.

Testing a Mac App on Registered Devices

I have a Cocoa Mac App that I don't know if it will on the Mac AppStore.
The application is still in development, and I want few persons to be able to launch it on their devices while the app gets new features.
The situation is the following :
I have a Mac Developer Certificate
Devices are registered in the Mac Member Center.
Every time they launch the app, GateKeeper complain the app doesn't come from the Mac AppStore, nor is provided by a identified developer, no matter if I sign the app or not.
So I tried to sign it and a provisioning profile is embedded into the app. If I don't sign it nothing embedded.
I should mention that the app has a Spotlight importer and QuickLook generator bundled into it.
I didn't find any clear explanation on how to resolve this issue in the Apple documentation, and most (if not all) blog posts, or articles on the Internet are about iPhone apps, not Mac ones (the process/requirements seems to be different on the two platforms).
The documentation is unclear on if all testers should be team members (which seems crazy because some of them aren't developers and don't have Xcode installed).
Can someone provide a clear step-by-step explanation on how to do that ?
Or maybe a article/blog post link or tips ?
Edit :
Here are screenshots of the app bundle structure and plug-in structure :
Everything seems to be right.
The way I obtained that is : I didn't set "Code Signing Identity" build setting, but rather archived the app, and exported it specifying code signing identity at that time.
Edit :
More and more curious, when I run codesign command in the terminal, codesign -vvv MyApp.app, the output tends to suggests that all is rightly done :
MyApp.app: valid on disk
MyApp.app: satisfies its Designated Requirement
Interpreting this question as essentially:
"how do I beta test Mac App Store apps" ?
Apple hasn't yet published an official workflow in the App Distribution Guide, but the following process works:
Tester sends "System Information utility > Hardware tab > Hardware UUID" to developer
Developer updates dev provisioning profile to include the hardware UUID
Developer uses Xcode Organizer Archives tab, Distribute > "Save as Mac Application", then select the updated development signing identity.
Developer sends newly built app to the tester
Note: The development identities have yellow caution ! icons during the re-signing process but they can still be used.
Not only does this avoid the GateKeeper prompt, but the development provisioning profile is also needed for any store technologies you might be using to work during testing, e.g. iCloud, GameCenter, etc.

Must I used my developer account when downloading Xcode from the App Store?

Regular distributions of Xcode are now available exclusively from the OS X App Store, but (like many, I expect) my App Store account and developer accounts use different Apple IDs. All my previous installations of Xcode have used my developer account, and I also wonder if there are critical parts of the Xcode configuration (e.g. provisioning profiles, etc.) that rely on Xcode having been installed using the developer Apple ID.
Are there any undesirable consequences to simply installing Xcode from the App Store using my personal account? Or, should I (can I, must I) log in to the App Store using my developer Apple ID instead?
You can use whatever Apple ID you want to download Xcode from the Mac App Store. There's nothing special about what it downloads. You'll need to log in to the developer portal though to download beta versions.
You can download Xcode (and lots of other stuff) from Apple's developer downloads website.
I very much doubt, therefore, that it matters whether you got it from the Mac App Store or not.

Why can't I code sign this Mac app?

I started some days ago a small Mac app for Mac OS X Lion. I've never uploaded a Mac app before, so this is the very first time.
This is what I've already done:
Created App ID
Created Certificate
Installed Certificate
Created a Production Provisioning Profile
Changed the App ID to my generated one
Created a new Configuration based on "Release"
Changed its Code Signing to 3rd Party Mac Developer Application
Selected the "Production"-Configuration which I created for the Archive-Scheme
Archived the Application
Now I wanted to "Share" the Application. Xcode (4.1 btw) said to me, there were no valid signing identities. Does I need to add an Entitlement.plist like in iOS? Have I forgotten something?
Update:
I just figured out, that I have to sign my app twice. I've still selected "3rd Party Mac Developer Application" but I can't select the Installer cert while submitting my app.
Have you installed the WWDR intermediate certificate? I just had the exact same problems and my issue was that the intermediate certificate was not installed on my machine. Granted, nowhere does Apple explicitly say you need it installed, more like suggestions. But, you do need it. You can find it here, or by going to Developer Certificate Utility under the Mac Developer Center.
I got it to work. I deleted my App and created it new.
I didn't create a new Configuration, and I only changed the Code Signing Indentity of the Target to 3rd Party Mac Developer Application. After this, I archived the app and then I was able to select the installer cert.

Resources