mirror of
https://github.com/knutwurst/patchdl.git
synced 2026-10-06 18:00:24 +02:00
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.
16 lines
733 B
C
16 lines
733 B
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef struct {
|
|
char compatible_version[16]; /* highest pkg with system_ver <= fw_bin, or "" */
|
|
char latest_version[16]; /* highest pkg overall, or "" */
|
|
char latest_required_fw[16]; /* fw str for latest pkg, e.g. "11.60", or "" */
|
|
char compatible_url[512]; /* manifest_url if present, otherwise pkg URL */
|
|
char delta_url[512]; /* DP.pkg bootstrap URL (always a PKG, never JSON) */
|
|
char compatible_title[16]; /* target title id from version.xml/manifest_url */
|
|
char compatible_storage_title[16]; /* title id embedded in delta_url storage path */
|
|
} patchdl_verinfo_t;
|
|
|
|
int patchdl_verxml_query(const char *url, uint32_t fw_bin, patchdl_verinfo_t *out);
|