LinuxCommandLibrary

ideviceinstaller

Install, uninstall, and manage iOS applications

SYNOPSIS

ideviceinstaller [-u UDID] [-l | -U | -i PATH | -u ID | -r ID | -g ID PATH] [-D] [-V] [-h]

PARAMETERS

-u, --udid UDID
    Target specific device by its UDID

-l, --list
    List all installed apps (system and user)

-U, --list-user
    List only user-installed apps

-i, --install PATH
    Install .ipa or .app bundle from path

-u, --uninstall ID
    Uninstall app by bundle identifier

-r, --reinstall ID
    Reinstall app by bundle identifier

-g, --download ID PATH
    Download app to specified path by bundle ID

-D, --debug
    Enable debug output

-v, --version
    Print version and exit

-h, --help
    Show help and exit

DESCRIPTION

ideviceinstaller is a command-line tool from the libimobiledevice suite, enabling users to manage applications on connected iOS devices (iPhone, iPad, iPod Touch) directly from Linux without iTunes or Xcode. It supports installing .ipa or .app bundles, uninstalling by bundle ID, listing installed apps, and downloading apps to the host.

It communicates over USB using the Apple Mobile Device Protocol via usbmuxd daemon. The device must be unlocked, trusted (pairing approved), and have USB debugging or developer mode enabled for sideloaded apps. Primarily for developers sideloading unsigned or enterprise-signed apps; App Store apps require jailbreak or special provisioning.

Key features include listing system/user apps separately, reinstalling apps, and bundle ID retrieval. It's cross-platform but shines on Linux for open-source iOS tooling. Requires libimobiledevice and libimobiledevice-glue libraries installed. Output is verbose by default, showing installation progress and errors like invalid signatures or insufficient space.

CAVEATS

Device must trust host; unsigned apps need developer mode or jailbreak. Fails on locked devices or invalid signatures. Limited to USB; no Wi-Fi support. iOS 10+ restricts sideloaded apps to 7 days without renewal.

DEPENDENCIES

Requires libimobiledevice, libplist, libzip, and running usbmuxd daemon.

USAGE EXAMPLE

ideviceinstaller -u -i app.ipa to install; ideviceinstaller -l to list apps.

HISTORY

Developed as part of libimobiledevice project since 2007 by Nikias Bassen. Initial release supported basic AFC access; app management added in 2010 with AFC2 protocol. Actively maintained, latest versions (1.3+) support iOS 17+.

SEE ALSO

Copied to clipboard