LinuxCommandLibrary

ideviceinstaller

Install, uninstall, and manage iOS applications

SYNOPSIS

ideviceinstaller [OPTIONS] [ARGUMENTS]

Examples:
ideviceinstaller -i path/to/app.ipa
ideviceinstaller -u com.example.MyApp
ideviceinstaller -l

PARAMETERS

-i, --install <PATH>
    Installs an application bundle (.ipa file) onto the connected iOS device.

-u, --uninstall <BUNDLE_ID>
    Uninstalls an application from the device using its unique bundle identifier.

-l, --list-apps
    Lists all applications currently installed on the device, including system and user apps.

-U, --list-user-apps
    Lists only user-installed applications.

-S, --list-system-apps
    Lists only pre-installed system applications.

-o, --list-developer-apps
    Lists applications installed by developers.

-g, --list-game-center-apps
    Lists applications integrated with Game Center.

-r, --reinstall <PATH>
    Reinstalls an application, preserving its data if possible. Requires the path to the .ipa file.

-t, --udid <UDID>
    Specifies the 40-digit Unique Device Identifier (UDID) of the target device when multiple devices are connected.

-d, --debug
    Enables verbose debug output for troubleshooting and detailed operation logs.

-h, --help
    Displays a help message with available options and usage information.

-v, --version
    Prints the version information of ideviceinstaller.

DESCRIPTION

ideviceinstaller is a robust command-line utility part of the libimobiledevice project, designed to facilitate comprehensive application management on iOS devices (iPhones, iPads, and iPod Touches) directly from a Linux environment.

It provides functionalities such as installing new application bundles (.ipa files), uninstalling existing applications by their bundle identifiers, and listing all installed applications, categorized by user, system, developer, or Game Center integration. This tool bypasses the need for Apple's iTunes or Xcode for basic app sideloading and management, making it an invaluable asset for developers, testers, and power users who need to interact with iOS devices in a non-Apple ecosystem.

Communication is established via USB, relying on the usbmuxd daemon to multiplex connections. ideviceinstaller interacts directly with the `installd` service on the iOS device, offering a streamlined workflow for app deployment and removal, particularly useful in automated testing scenarios or for deploying custom-built applications.

CAVEATS

ideviceinstaller requires a connected iOS device via USB and for the libimobiledevice stack, including the usbmuxd daemon, to be installed and running. For installing unsigned .ipa files or apps outside the App Store, the device typically needs to be jailbroken or properly provisioned with developer profiles. Error messages can sometimes be generic; using the --debug option often provides more specific insights.

DEPENDENCIES

The command relies on the libimobiledevice suite, particularly the usbmuxd daemon, which handles the USB communication and multiplexing for iOS devices. Ensure these are properly installed and running.

USAGE CONTEXT

Mainly employed by software developers for testing application builds (.ipa files) directly on physical devices, by advanced users for sideloading custom applications, or integrated into automated scripts for streamlined device and app management workflows.

BUNDLE IDENTIFIER

When uninstalling an application, its exact bundle identifier (e.g., 'com.apple.Maps', 'com.mycompany.MyApp') is required. This identifier can be conveniently retrieved using the --list-apps option.

HISTORY

ideviceinstaller is a key component of the libimobiledevice project, an independent open-source initiative providing libraries and tools to communicate with iOS devices without Apple's proprietary frameworks. Development began around 2007, aiming to offer Linux and macOS users the ability to interact with iPhones and iPod Touches, a functionality primarily exclusive to iTunes at the time. ideviceinstaller emerged as a practical application of libimobiledevice's capabilities, enabling package management for iOS devices from the command line, crucial for developers and users interested in device customization and automation.

SEE ALSO

Copied to clipboard