1. Create App ID (this may be wildcard, so you can use it for multiple apps with the same bundle prefix. e.g. com.wehaverhythm.* for all internal apps.)
2. Create an AdHoc provisioning profile using the above App ID. (More devices can be added later, but must be added before distribution export).
3. In Xcode’s organiser, refresh your provisioning profile. (make sure you refresh each time the profile has been amended online, like when you add more device id’s)
4. Click Product -> Build For -> Archiving.
5. Click Product -> Archive.
[When archive is complete, it will appear in Xcode's organiser under 'Archives'.]
6. Select the application, and archive for that application you want to distribute for AdHoc.
7. Click ‘Distribute’.
8. Select ‘Save for Enterprise or Ad-Hoc Deployment’
9. Click ‘Next’.
10. Select the correct provisioning profile from the ‘Code Signing Identity’ drop down.
11. Click ‘Next’, again.
12. …wait for as long as it takes…
13. MAKE SURE YOU CLICK ‘Save for Enterprise Distribution’! Even for AdHoc. This drove me insane.
14. Enter the URL where the application will be hosted. The absolute url, including the filename.
15. Give it a title. Fill in the image url’s if you need them.
16. Save the *.ipa somewhere you will find it.
[You will notice this will also save an accompanying *.plist file]
In a text editor
17. Create an html file like the one below:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<title>Install AdHoc Distribution</title>
<a href="itms-services://?action=download-manifest&url=http://example.com/MyApplicationName.plist">Install My AdHoc App</a>
17. Upload your *.ipa, *.plist files to the url specified in the export process, earlier. Upload your html file on a web server.
On your authenticated devices
18. In your web browser on one of the authenticated devices, goto the html page you created and click the hyperlink to your app.
19. INSTALL IT!