Improve detection of Info.plist in application archive

Some applications appear to provide another Info.plist.
Using zip_name_locate() might locate the wrong one in such a case
which prevented the correct installation of the application.
diff --git a/src/ideviceinstaller.c b/src/ideviceinstaller.c
index 8f5ec5e..bde9d97 100644
--- a/src/ideviceinstaller.c
+++ b/src/ideviceinstaller.c
@@ -631,7 +631,24 @@
 			plist_t info = NULL;
 			zbuf = NULL;
 			len = 0;
-			if (zip_get_contents(zf, "Info.plist", ZIP_FL_NODIR, &zbuf, &len) < 0) {
+			char filename[256];
+
+			/* check for "Payload" directory */
+			strcpy(filename, zip_get_name(zf, 0, 0));
+			if (strcmp(filename, "Payload") != 0) {
+				fprintf(stderr, "Unable to locate Payload folder in archive!\n");
+				zip_unchange_all(zf);
+				zip_close(zf);
+				goto leave_cleanup;
+			}
+
+			/* check for "*.app" directory */
+			strcpy(filename, zip_get_name(zf, 1, 0));
+
+			/* construct full filename to Info.plist */
+			strcat(filename, "Info.plist");
+
+			if (zip_get_contents(zf, filename, 0, &zbuf, &len) < 0) {
 				zip_unchange_all(zf);
 				zip_close(zf);
 				goto leave_cleanup;