Skip to content

install: hand patched ipas to TrollStore via apple-magnifier://#8

Merged
Evil0ctal merged 1 commit into
mainfrom
feat/m4-install
May 6, 2026
Merged

install: hand patched ipas to TrollStore via apple-magnifier://#8
Evil0ctal merged 1 commit into
mainfrom
feat/m4-install

Conversation

@Evil0ctal
Copy link
Copy Markdown
Owner

what

m4 closes the search → detail → download → patch → install loop.
Downloads done rows gain "install via TrollStore". new Library tab
lists every patched ipa with install/share/delete actions.

changes

  • TrollStoreBridge: thin wrapper over UIApplication around the
    apple-magnifier://install?url=file:// scheme. canOpenURL gates the
    call so non-TrollStore devices show a clear error instead of silently
    no-op.
  • TSErrorCatalog: human text + suggested action for the install error
    codes pulled from TrollStore's TSApplicationsManager.m
    (171/173/175/179/180/182/184/185).
  • LibraryService scans EvilStore/Downloads/ and parses entries by file
    name (the FileLayout.ipaName convention from m3) so the Library tab
    does not re-open archives on every refresh.
  • LibraryView: empty state, list grouped by bundle id, refresh button.
  • DownloadsView .done rows: install button + alert paths (no TrollStore
    detected, scheme open failed).
  • RootView: real LibraryView replaces tab three placeholder.
  • Info.plist declares apple-magnifier in LSApplicationQueriesSchemes so
    canOpenURL returns true on TrollStore devices.

test

  • xcodebuild Debug + Release archive both green
  • tipa carries every entitlement plus ZIPFoundation + the queries scheme
  • on real device:
    1. download some version (m3 path) -> Downloads tab shows .done row
    2. tap "install via TrollStore" -> trollstore takes over -> home
      screen icon appears after install
    3. Library tab lists the same ipa with install/share/delete
    4. delete from Library removes the file from disk
    5. on a non-trollstore device the install button shows the alert
      instead of silently no-oping

m4 closes the loop. Downloads tab gains an "install via TrollStore" button
on each .done row. new Library tab lists every patched ipa under
EvilStore/Downloads/ grouped by bundle id, with install/share/delete.

* TrollStoreBridge wraps UIApplication.canOpenURL + open against
  apple-magnifier://install?url=<file://>. trollstore 1.3+ owns this
  scheme (it replaces the system magnifier app).
* TSErrorCatalog: human text + suggested action for the install error
  codes (179 boot-loop risk, 180 encrypted binary, 182 dev mode, ...)
* LibraryService scans /var/mobile/Media/EvilStore/Downloads/ and
  parses entries by file name (FileLayout.ipaName convention) so the
  Library tab does not re-open archives on every refresh.
* LibraryView groups by bundle id; each row has install/share/delete.
* DownloadsView .done rows gain install button + alert for failure
  paths (no TrollStore detected, scheme open failed).
* RootView wires the real LibraryView into tab three.
* Info.plist declares apple-magnifier in LSApplicationQueriesSchemes
  so canOpenURL returns true on devices that have TrollStore.

ios 14 baseline preserved (no Button(role:), no URL Identifiable
shadowing — wrapper struct used for sheet item).
@Evil0ctal Evil0ctal merged commit 69a6c09 into main May 6, 2026
3 checks passed
@Evil0ctal Evil0ctal deleted the feat/m4-install branch May 6, 2026 00:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant