Andy's Fun House


Small Automations

I've been doing a lot of work recently with Marmalade on some mobile applications. In the process, I've slowly fallen out of love with the build process that Marmalade provides, mostly as a result of the signing process required to publish iOS builds. I won't weigh in on where the blame should rest for this ire of productivity, but I might as well share one of the tiny things I did to make things go ever-so-slightly faster.

We use TestFlight internally for build test distribution, so the process for distributing each build to the testers looks thus:

  1. Write code, watch code fail, fix code
  2. Test locally with emulator and USB connected devices
  3. Build on GCC ARM Release to launch the Marmalade Deployment Tool and package for both iOS and Android
  4. Launch Marmalade iPhone Re-Signer to Re-Sign the IPA for your selected provisioning profile
  5. Remember you have to move the base certificates into the deployment folder when the Re-Signer tells you it failed
  6. Let loose mumble of vulgarity OR Pull out small patch of hair to imprint that this is bad behavior
  7. Find the certificates and copy them to the deployment folder with the IPA
  8. Run Re-Signer again
  9. Upload builds to TestFlight

The process isn't hard, by any reckoning, but there were...undesired consequences for some of the team members.

You'd think he'd have learned eventually...

You'd think he'd have learned eventually...


Obviously, something had to change. I weighed my options quickly and simply created a BATCH file to take care of launching the iPhone Re-Signer. Instead of simply launching it, the BATCH attempts to copy the required certificates into the deployment folder before launch. I haven't had a chance to make it configurable for multiple projects, but I'll just update the code here whenever I do have that time. Hope it helps someone!


cd \Tattoo\Clients\PlateShare\Apps\PlateShare\build_plateshare_vc11\deployments\iPhone\iphone\release

mkdir certificates
cd certificates

xcopy "D:\Marmalade\6.3\s3e\deploy\plugins\iphone\certificates\Apple Root CA.cer" /y
xcopy "D:\Marmalade\6.3\s3e\deploy\plugins\iphone\certificates\AppleWWDRCA.cer" /y
xcopy "D:\Marmalade\6.3\s3e\deploy\plugins\iphone\certificates\developer_identity.cer" /y
xcopy "D:\Marmalade\6.3\s3e\deploy\plugins\iphone\certificates\developer_identity.key" /y
xcopy "D:\Marmalade\6.3\s3e\deploy\plugins\iphone\certificates\distribution_identity.cer" /y
xcopy "D:\Marmalade\6.3\s3e\deploy\plugins\iphone\certificates\distribution_identity.key" /y

start D:\Marmalade\6.3\tools\IPhoneSigner\IPhoneSigner.exe


- Andy