If you’ve ever tried to provide an Ad Hoc build to a tester using a Windows machine, you know the frustration involved with sending a .app file. Reason being, this file type is an “application bundle” which is a conglomeration of files and directories packaged as a single file. Windows doesn’t know how to deal with this file, which typically results in a frustrating app install process.
The answer is to create a .ipa file. There is a means to do this using iTunes, however, the process is somewhat of a kludge. With Xcode 4 there is now a direct way to create an .ipa file, without leaving the development environment.
The process is quite straightforward, first make sure the scheme is iOS Device
Next, from the Product menu, choose Archive. From the dialog, choose Share
Select the option for iOS App Store Package(.ipa) and choose a location to save the file.
As pointed out in the comments below, the provisioning file is embedded in the .ipa file so you no longer need to send both to your Ad Hoc users.