This has happened to me recently, and I decided it. The situation was that I had an ad hoc Provision profile, which I successfully used for about 40 devices with several different applications. When a new device is required, I will add it to the profile, load it, and then use the "share" from Xcode with the same archived application, but with the new profile.
My distribution certificate has recently expired, so I created a new one and updated provisioning profiles. Subsequently, I could still install on existing devices, but I received an error when trying to install on new devices, although I added them to the profile and installed the profile on the device.
The secret was that although I created a new distribution certificate and added it to my KeyChain, there was still a copy of the old certificate in KeyChain, and this was used to sign the application. It turns out that if you do not delete the old provisioning profiles from Xcode, when you start Xcode, it recreates the old certificate in KeyChain and will be used to sign the application, which means that the new profile with the new device (created with the new certificate) will not match.
Solution: when updating the certificate, delete all old profiles signed with this certificate, delete the old certificate, then recreate, download and install new profiles.
Hth
source share