mirror of
https://github.com/knutwurst/patchdl.git
synced 2026-10-06 09:00:23 +02:00
Install patches via sceAppInstUtilAppInstallPkg; fix GetInstallStatus ABI
sceAppInstUtilInstallByPackage returns 0x80B21163 from payload context (process privilege rejection). sceAppInstUtilAppInstallPkg accepts the same PKG with rc=0 and does install it. Switch all install paths to use AppInstallPkg. do_install (cross-region): require assembled PKG from the manifest download; InstallByPackage and DP.pkg fallbacks are removed since both are dead ends in this process context. do_install (same-region): also switched to AppInstallPkg. do_download: removed the DP.pkg shortcut so the manifest-assembled full PKG is downloaded as before. sceAppInstUtilGetInstallStatus ABI: first arg is an output buffer for the current install's content_id, not an input query. Passing our tracking buffer there was overwriting it with zeros (disc game has no explicit content_id). Fix: use a fresh output buffer; keep `cid` from g_last_content_id untouched. Also add 2048-byte padding to ai_install_status_t against firmware struct size variance. New APIs: patchdl_install_by_uri, patchdl_install_app_pkg, patchdl_install_debug_state. New endpoints: /api/install_uri, /api/install_aip, /api/debug_install. delta_url propagated through verxml → scan → websrv for future DP.pkg tracking. Verified on device (FW 11.60, BD-JB+PPPwn): Dead Island 2 PPSA03099 updated from 01.000.001 to 01.000.011.
This commit is contained in:
1 parent
983f39fa89
commit
970c7d8f1d
6 files changed
+294
-61
No files matched your search
@@ -42,3 +42,25 @@ int patchdl_install_pkg_meta(const char *local_path, char *content_id, size_t ci
|
||||
/* Read-only: report the last AppInstUtil install task PatchDL started, using
|
||||
sceAppInstUtilGetInstallStatus when present. No install, no mutation. */
|
||||
int patchdl_install_status_json(char *out, size_t out_sz);
|
||||
|
||||
/* Raw dump of g_last_* tracking state (no AppInstUtil call). For diagnosis. */
|
||||
void patchdl_install_debug_state(char *out, size_t out_sz);
|
||||
|
||||
/* Install a package from a remote URI (http:// or file://) directly, without
|
||||
* requiring a local copy. Used for shared-master delta packages where the
|
||||
* version.xml targets a different title id than the CDN storage path.
|
||||
* `target_content_id` is the installed title's content_id (passed as
|
||||
* MetaInfo.content_id so AppInstUtil binds the install to the right title).
|
||||
*/
|
||||
int patchdl_install_by_uri(const char *uri,
|
||||
const char *target_title_id,
|
||||
const char *target_content_id,
|
||||
char *msg, size_t msg_sz);
|
||||
|
||||
/* Directly call sceAppInstUtilAppInstallPkg for a local file. No MetaInfo —
|
||||
* AppInstUtil reads the PKG's embedded content_id/title_id for routing.
|
||||
* Use when InstallByPackage is unavailable (privilege). */
|
||||
int patchdl_install_app_pkg(const char *local_path,
|
||||
const char *expected_title_id,
|
||||
const char *target_content_id,
|
||||
char *msg, size_t msg_sz);
|
||||
Reference in new issue
Block a user