Ad-hoc distribution is notoriously tricky. If you've missed one thing, the whole chain fails. Here's what I can think of, off the top of my head, based on the fact that it works for at least one of your users:
- Are you certain that the mobile ad-hoc provisioning certificate contains the UDID for the users who are seeing it fail?
- Do those users have an old certificate on their device? (i.e. did you delete the existing certificate before installing a new one? Settings->General->Profiles)
- Are you certain the code-signed .app bundle contains the UDIDs for those users, inside the file named embedded.mobileprovisioning? (Under the
ProvisionedDevices
key)
- Is the mobile provisioning certificate expired?
- Is your developer code-sign certificate expired?
- Was the application package renamed by the user before installation?
- Did you try doing a clean before doing the distribution build?