Code Sign Application option - xcode

What does "Signature - Code Sign Application" option checkbox in Summary panel of application Targets in Xcode 4.5 is needed for?
Isn't it the magic option which eliminates all this codesigning headache when distributing the application?

Unlike iOS apps, desktop apps don't need to be signed to run on a machine. Turning this on means that you will be using code signing.
If you are distributing through the Mac App store you will need to sign your app with an Apple Certificate.
If you are distributing your app yourself you have the choice of signing your app with an Apple certificate or not. Although there are settings on Mountain Lion (OS X 10.8) which can be set up to only allow apps that are signed (or even only allow apps that are from the Mac App store).
So no. The checkbox doesn't remove the "headache" of codesigning, it just turns the option on or off.

Related

Distributing Apps Outside the Mac App Store crash with Code Signature Invalid error

I have a Mac App for OS X 10.10 that I am trying to create a working release build.
Not for the Mac App store "Distributing Apps Outside the Mac App
Store"
Uses "Developer ID Application" for the release code signing. Things look good in my App dev account
Created an OSX APP ID com.blah.app
Can create and verify an Archive successfully
sudo spctl --assess --verbose=4 Name.App, looks good "Name.App : accepted
source=Developer ID"
Read thru Apple "Distributing Apps Outside the Mac App Store"
Needs to be OS X 10.10 due to customer requirements
Read through everything I can find on stack overflow regarding this
matter
Can build and release iOS without a second thought, but this is my
first Mac App
I run the App and in the console I see "EXC_CRASH (Code Signature Invalid)"
Stumped ...
Gatekeeper
Macs have a "gatekeeper" feature that can be set in 3 modes in System Preferences > Security & Privacy > General > "Allow apps downloaded from:".
Which is your test system set to ?
Since you're signing using a Developer ID, it needs to be set to the 2nd or 3rd option (not just allowing the App store). [2nd option is the default on freshly installed machines]
Build for distribution outside of the app store
Builds that you create for submission to the App store cannot be run by everybody. One needs to build it specifically for that.
To quote https://developer.apple.com/library/mac/qa/qa1884/_index.html :
[...] use Xcode Organizer > Export > Export a Developer ID-signed Application. Developer ID-signed apps can be run by anyone. However, code that uses technologies only available to Mac App Store apps, such as receipt validation, iCloud, and push notifications, will not work if your app is Developer ID-signed. You might need to temporarily disable those parts of your app if you opt for the Developer ID testing approach
There was an error in the selected capabilities (red) that wasn't stopping the build, "Key chain sharing" in this case. Turned off as I didn't need it and everything works as expected

OS X: Distribution to Mac App Store signing troubles

I'm stuck with a problem, when I set Signing (General target's tab) to Mac App Store, it changes target's Build Settings -> Code Signing Identity to a Mac Developer.
And vice-versa if I set Code Signing Identity to 3rd Party Mac Developer Application:... Xcode changes Signing (at the General tab) to None. Stuck with it, maybe someone encounter this? Thanks.
Achieving project as is doesn't allow me to Upload / Validate project.
I want to mention, also, that my goal is to upload the app to App Store (Mac of course). I also have helper application in my bundle, it have its own bundle ID.

distribute software for MAC OS with developer certificate

I had developer application for MAC desktop.
I would like to submit it to client for testing.
But not able to find the steps for developer distribution.
Like iphone application :- we register the UDID of the device (iphone/iPAD) and then add those in the provisioning profile and then create the ipa.
How do we create developer ipa file for mac desktop version.
please help.
I am new to mac os application
There are a couple guides about distributing Mac OS applications. "Distributing your Mac Apps" is the main entry point.
If you want to distribute your app to client just to test you can sign app with Developer ID certificate. In this case you need to investigate this certain chapter "Distributing Applications Outside the Mac App Store".
Separately you have option to export application bundle without any signing.
Short steps:
Select menu item Product->Archive
Click Export button
Select "Export as Mac Application"
Click Next and save your app

Limit Mac app Beta usage to selection of UDID-approved devices

I have a Mac app I just created in Xcode, and signed as a "Mac App Store" application, with the default Team Provisioning Profile. I only have two UDIDs registered in the Member Center, and can run the application on any of my devices (expected)... but ALSO on any other non-registered devices.
Is there a way to lock the application to only registered UDIDs for the purpose of Beta testing?
The documentation seems to apply mostly to iOS applications, and remains a little unclear for the Mac application procedure.
Oddly enough, I wasn't able to sign my code with my UDID-specific Provisioning Profile at all in Xcode. However, by setting the Provisioning Profile to my restricted one, and properly setting my Code Signing Identity, I was able to compile via command-line properly.
Now when loaded on any machine other then the UDID-approved ones, the application fails to launch (which is the desired behavior for my Beta testing strategy).

Is there a way to open a installed application on a Ipad?

I have an iPad application that already installed on the device. But i don't have the .app or .ipa file with me.
Is there anyway to launch that application using Appium driver?
Yes
If you have created the app with a developer provisioning profile, and built yourself. Or downloaded it using testFlight, and is signed with a development provisioning profile
You need to reference the app bundleID and the UDID of the device. You then won't need the app path capability.
No
If you have downloaded the app from the app store.
How to automate a preinstalled app
This will only work for applications that are signed with a DEVELOPMENT cert.
This will NOT work for applications that are signed with a DISTRIBUTION cert (ex. apps downloaded from the App Store, distributed via Afaria or another MDM solution*)
You cannot automate applications downloaded from the above places. This is because Apple's Instruments will not allow you to inspect/interact with those applications. (Even if you somehow knew the bundleId)
Get the bundleId of the app that was installed on the device. Use that as the app capability.
Follow the Appium Real Devices guide (substitute any .ipa/.app reference with the bundleId)
In addition to your regular desiredCapabilities (ex. platformName, platformVersion, deviceName).. these should be your desiredCapabilities:
// For preinstalled apps, this is the bundleId
desiredCaps['app'] = 'com.company.appname'
// The device's unique identifier.
// Found in XCode's organizer when device is plugged in
desiredCaps['udid'] = '1824y983h2849gh2498'
* Barring TestFlight. If an app is uploaded via TestFlight, it may be signed with a Development or a Distribution certificate. You'll have to ask.

Resources