we use iOS private framework MobileInstallationInstall, it worked fine in iOS 5 like this:
MobileInstallationInstall
typedef int (*MobileInstallationInstall)(NSString *path,
please follow How do I change my iOS applications' entitlements? to sign your app and you need to add the following to the xml file.
com.apple.private.mobileinstall.allowedSPI Install Browse Uninstall Archive RemoveArchive