Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > ff72f599aeba459ecb53c28856900134 > files > 33

libimobiledevice-devel-1.0.3-1.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libimobiledevice: libimobiledevice/installation_proxy.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>libimobiledevice/installation_proxy.h File Reference</h1>
<p>Implementation to talk to the installation proxy on a device.  
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef int16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an error code.  <a href="#a488853e737060e4269b9e3a7706271cc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structinstproxy__client__private.html">instproxy_client_private</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a397d08ac5391f6e5bf20a42cfebec9f9">instproxy_client_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The client handle.  <a href="#a397d08ac5391f6e5bf20a42cfebec9f9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92b83275dce2d558a2366f92a62f5b80"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::instproxy_status_cb_t" ref="a92b83275dce2d558a2366f92a62f5b80" args=")(const char *operation, plist_t status)" -->
typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> )(const char *operation, plist_t status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reports the status of the given operation. <br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a3f7068e2a47bbebdea43bbeb86656157">instproxy_client_new</a> (<a class="el" href="structidevice__private.html">idevice_t</a> device, uint16_t port, <a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> *client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connects to the installation_proxy service on the specified device.  <a href="#a3f7068e2a47bbebdea43bbeb86656157"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a3d9667bc75e60f3e9b4ec71b47334044">instproxy_client_free</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnects an installation_proxy client from the device and frees up the installation_proxy client data.  <a href="#a3d9667bc75e60f3e9b4ec71b47334044"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a8f5c351869472a10ba8e2d47e8f09edb">instproxy_browse</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, plist_t client_options, plist_t *result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List installed applications.  <a href="#a8f5c351869472a10ba8e2d47e8f09edb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a0ee9939b249aadfc89e44c2e7701868f">instproxy_install</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, const char *pkg_path, plist_t client_options, <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> status_cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Install an application on the device.  <a href="#a0ee9939b249aadfc89e44c2e7701868f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a8d5e97d6c3b80d6c67259293ef5fb09d">instproxy_upgrade</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, const char *pkg_path, plist_t client_options, <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> status_cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Upgrade an application on the device.  <a href="#a8d5e97d6c3b80d6c67259293ef5fb09d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a05c8dceee6f29fcc01c203dab96f53b0">instproxy_uninstall</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, const char *appid, plist_t client_options, <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> status_cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Uninstall an application from the device.  <a href="#a05c8dceee6f29fcc01c203dab96f53b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a9487418c57758fd672f60c8eb8e2b16c">instproxy_lookup_archives</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, plist_t client_options, plist_t *result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List archived applications.  <a href="#a9487418c57758fd672f60c8eb8e2b16c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a14a12024b5dca9a54d528aaf051dd22b">instproxy_archive</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, const char *appid, plist_t client_options, <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> status_cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Archive an application on the device.  <a href="#a14a12024b5dca9a54d528aaf051dd22b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a62d33ff9f5da3a3b58627bd9ca335776">instproxy_restore</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, const char *appid, plist_t client_options, <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> status_cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Restore a previously archived application on the device.  <a href="#a62d33ff9f5da3a3b58627bd9ca335776"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#ae0831d5caccd1b2f7c6e93527b3f8a22">instproxy_remove_archive</a> (<a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> client, const char *appid, plist_t client_options, <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a> status_cb)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a previously archived application from the device.  <a href="#ae0831d5caccd1b2f7c6e93527b3f8a22"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">plist_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a570202c469be75185cc4fda62bbae7e0">instproxy_client_options_new</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new client_options plist.  <a href="#a570202c469be75185cc4fda62bbae7e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a2b7c6cfb5d3503f4db7342288030895b">instproxy_client_options_add</a> (plist_t client_options,...) G_GNUC_NULL_TERMINATED</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add one or more new key:value pairs to the given client_options.  <a href="#a2b7c6cfb5d3503f4db7342288030895b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#afda149bd9a657b060338d1b3ddbfae35">instproxy_client_options_free</a> (plist_t client_options)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free client_options plist.  <a href="#afda149bd9a657b060338d1b3ddbfae35"></a><br/></td></tr>
<tr><td colspan="2"><h2>Error Codes</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp5c244138ac975df1b1cec1afc71a6c9a"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f4547a1b18cf038622fd24d3aa2dc2c"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_SUCCESS" ref="a6f4547a1b18cf038622fd24d3aa2dc2c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_SUCCESS</b>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94410800d99bc7a7ea07f2cf9ec080d5"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_INVALID_ARG" ref="a94410800d99bc7a7ea07f2cf9ec080d5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_INVALID_ARG</b>&nbsp;&nbsp;&nbsp;-1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47fe5fb73315a4c1a54254040bb1163b"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_PLIST_ERROR" ref="a47fe5fb73315a4c1a54254040bb1163b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_PLIST_ERROR</b>&nbsp;&nbsp;&nbsp;-2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafc3a02caf1bb6a620f815a89e390939"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_CONN_FAILED" ref="aafc3a02caf1bb6a620f815a89e390939" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_CONN_FAILED</b>&nbsp;&nbsp;&nbsp;-3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac32961c6e5ef00f86713c949bc080b31"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_OP_IN_PROGRESS" ref="ac32961c6e5ef00f86713c949bc080b31" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_OP_IN_PROGRESS</b>&nbsp;&nbsp;&nbsp;-4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20a31915178a440a3464f1a90d513a10"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_OP_FAILED" ref="a20a31915178a440a3464f1a90d513a10" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_OP_FAILED</b>&nbsp;&nbsp;&nbsp;-5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad53fac71e580bfcd62c491d30d71d65b"></a><!-- doxytag: member="include/libimobiledevice/installation_proxy.h::INSTPROXY_E_UNKNOWN_ERROR" ref="ad53fac71e580bfcd62c491d30d71d65b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INSTPROXY_E_UNKNOWN_ERROR</b>&nbsp;&nbsp;&nbsp;-256</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Implementation to talk to the installation proxy on a device. </p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="a397d08ac5391f6e5bf20a42cfebec9f9"></a><!-- doxytag: member="installation_proxy.h::instproxy_client_t" ref="a397d08ac5391f6e5bf20a42cfebec9f9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structinstproxy__client__private.html">instproxy_client_private</a>* <a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The client handle. </p>

</div>
</div>
<a class="anchor" id="a488853e737060e4269b9e3a7706271cc"></a><!-- doxytag: member="installation_proxy.h::instproxy_error_t" ref="a488853e737060e4269b9e3a7706271cc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int16_t <a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Represents an error code. </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a14a12024b5dca9a54d528aaf051dd22b"></a><!-- doxytag: member="installation_proxy.h::instproxy_archive" ref="a14a12024b5dca9a54d528aaf051dd22b" args="(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_archive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>appid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a>&nbsp;</td>
          <td class="paramname"> <em>status_cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Archive an application on the device. </p>
<p>This function tells the device to make an archive of the specified application. This results in the device creating a ZIP archive in the 'ApplicationArchives' directory and uninstalling the application.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>appid</em>&nbsp;</td><td>ApplicationIdentifier of the app to archive. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Valid options include: "SkipUninstall" -&gt; Boolean "ArchiveType" -&gt; "ApplicationOnly" </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status_cb</em>&nbsp;</td><td>Callback function for progress and status information. If NULL is passed, this function will run synchronously. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Callback data passed to status_cb.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If a callback function is given (async mode), this function returns INSTPROXY_E_SUCCESS immediately if the status updater thread has been created successfully; any error occuring during the operation has to be handled inside the specified callback function. </dd></dl>

</div>
</div>
<a class="anchor" id="a8f5c351869472a10ba8e2d47e8f09edb"></a><!-- doxytag: member="installation_proxy.h::instproxy_browse" ref="a8f5c351869472a10ba8e2d47e8f09edb" args="(instproxy_client_t client, plist_t client_options, plist_t *result)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_browse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t *&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>List installed applications. </p>
<p>This function runs synchronously.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation_proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Valid client options include: "ApplicationType" -&gt; "User" "ApplicationType" -&gt; "System" </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>Pointer that will be set to a plist that will hold an array of PLIST_DICT holding information about the applications found.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured. </dd></dl>

</div>
</div>
<a class="anchor" id="a3d9667bc75e60f3e9b4ec71b47334044"></a><!-- doxytag: member="installation_proxy.h::instproxy_client_free" ref="a3d9667bc75e60f3e9b4ec71b47334044" args="(instproxy_client_t client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_client_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Disconnects an installation_proxy client from the device and frees up the installation_proxy client data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The installation_proxy client to disconnect and free.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or INSTPROXY_E_INVALID_ARG if client is NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="a3f7068e2a47bbebdea43bbeb86656157"></a><!-- doxytag: member="installation_proxy.h::instproxy_client_new" ref="a3f7068e2a47bbebdea43bbeb86656157" args="(idevice_t device, uint16_t port, instproxy_client_t *client)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_client_new </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structidevice__private.html">idevice_t</a>&nbsp;</td>
          <td class="paramname"> <em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Connects to the installation_proxy service on the specified device. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>device</em>&nbsp;</td><td>The device to connect to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>Destination port (usually given by lockdownd_start_service). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>Pointer that will be set to a newly allocated instproxy_client_t upon successful return.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success, or an INSTPROXY_E_* error value when an error occured. </dd></dl>

</div>
</div>
<a class="anchor" id="a2b7c6cfb5d3503f4db7342288030895b"></a><!-- doxytag: member="installation_proxy.h::instproxy_client_options_add" ref="a2b7c6cfb5d3503f4db7342288030895b" args="(plist_t client_options,...) G_GNUC_NULL_TERMINATED" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void instproxy_client_options_add </td>
          <td>(</td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add one or more new key:value pairs to the given client_options. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>KEY, VALUE, [KEY, VALUE], NULL</td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The keys and values passed are expected to be strings, except for "ApplicationSINF" and "iTunesMetadata" expecting a plist node of type PLIST_DATA as value, or "SkipUninstall" needing int as value. </dd></dl>

</div>
</div>
<a class="anchor" id="afda149bd9a657b060338d1b3ddbfae35"></a><!-- doxytag: member="installation_proxy.h::instproxy_client_options_free" ref="afda149bd9a657b060338d1b3ddbfae35" args="(plist_t client_options)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void instproxy_client_options_free </td>
          <td>(</td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free client_options plist. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options plist to free. Does nothing if NULL is passed. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a570202c469be75185cc4fda62bbae7e0"></a><!-- doxytag: member="installation_proxy.h::instproxy_client_options_new" ref="a570202c469be75185cc4fda62bbae7e0" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">plist_t instproxy_client_options_new </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new client_options plist. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>A new plist_t of type PLIST_DICT. </dd></dl>

</div>
</div>
<a class="anchor" id="a0ee9939b249aadfc89e44c2e7701868f"></a><!-- doxytag: member="installation_proxy.h::instproxy_install" ref="a0ee9939b249aadfc89e44c2e7701868f" args="(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_install </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pkg_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a>&nbsp;</td>
          <td class="paramname"> <em>status_cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Install an application on the device. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation_proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pkg_path</em>&nbsp;</td><td>Path of the installation package (inside the AFC jail) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Valid options include: "iTunesMetadata" -&gt; PLIST_DATA "ApplicationSINF" -&gt; PLIST_DATA "PackageType" -&gt; "Developer" If PackageType -&gt; Developer is specified, then pkg_path points to an .app directory instead of an install package. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status_cb</em>&nbsp;</td><td>Callback function for progress and status information. If NULL is passed, this function will run synchronously. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Callback data passed to status_cb.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If a callback function is given (async mode), this function returns INSTPROXY_E_SUCCESS immediately if the status updater thread has been created successfully; any error occuring during the operation has to be handled inside the specified callback function. </dd></dl>

</div>
</div>
<a class="anchor" id="a9487418c57758fd672f60c8eb8e2b16c"></a><!-- doxytag: member="installation_proxy.h::instproxy_lookup_archives" ref="a9487418c57758fd672f60c8eb8e2b16c" args="(instproxy_client_t client, plist_t client_options, plist_t *result)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_lookup_archives </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t *&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>List archived applications. </p>
<p>This function runs synchronously.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a14a12024b5dca9a54d528aaf051dd22b" title="Archive an application on the device.">instproxy_archive</a></dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation_proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Currently there are no known client options, so pass NULL here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>Pointer that will be set to a plist containing a PLIST_DICT holding information about the archived applications found.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured. </dd></dl>

</div>
</div>
<a class="anchor" id="ae0831d5caccd1b2f7c6e93527b3f8a22"></a><!-- doxytag: member="installation_proxy.h::instproxy_remove_archive" ref="ae0831d5caccd1b2f7c6e93527b3f8a22" args="(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_remove_archive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>appid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a>&nbsp;</td>
          <td class="paramname"> <em>status_cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Removes a previously archived application from the device. </p>
<p>This function removes the ZIP archive from the 'ApplicationArchives' directory.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>appid</em>&nbsp;</td><td>ApplicationIdentifier of the archived app to remove. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Currently there are no known client options, so passing NULL is fine. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status_cb</em>&nbsp;</td><td>Callback function for progress and status information. If NULL is passed, this function will run synchronously. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Callback data passed to status_cb.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If a callback function is given (async mode), this function returns INSTPROXY_E_SUCCESS immediately if the status updater thread has been created successfully; any error occuring during the operation has to be handled inside the specified callback function. </dd></dl>

</div>
</div>
<a class="anchor" id="a62d33ff9f5da3a3b58627bd9ca335776"></a><!-- doxytag: member="installation_proxy.h::instproxy_restore" ref="a62d33ff9f5da3a3b58627bd9ca335776" args="(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_restore </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>appid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a>&nbsp;</td>
          <td class="paramname"> <em>status_cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Restore a previously archived application on the device. </p>
<p>This function is the counterpart to instproxy_archive. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a14a12024b5dca9a54d528aaf051dd22b" title="Archive an application on the device.">instproxy_archive</a></dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>appid</em>&nbsp;</td><td>ApplicationIdentifier of the app to restore. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Currently there are no known client options, so pass NULL here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status_cb</em>&nbsp;</td><td>Callback function for progress and status information. If NULL is passed, this function will run synchronously. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Callback data passed to status_cb.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If a callback function is given (async mode), this function returns INSTPROXY_E_SUCCESS immediately if the status updater thread has been created successfully; any error occuring during the operation has to be handled inside the specified callback function. </dd></dl>

</div>
</div>
<a class="anchor" id="a05c8dceee6f29fcc01c203dab96f53b0"></a><!-- doxytag: member="installation_proxy.h::instproxy_uninstall" ref="a05c8dceee6f29fcc01c203dab96f53b0" args="(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_uninstall </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>appid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a>&nbsp;</td>
          <td class="paramname"> <em>status_cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uninstall an application from the device. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>appid</em>&nbsp;</td><td>ApplicationIdentifier of the app to uninstall </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Currently there are no known client options, so pass NULL here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status_cb</em>&nbsp;</td><td>Callback function for progress and status information. If NULL is passed, this function will run synchronously. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Callback data passed to status_cb.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If a callback function is given (async mode), this function returns INSTPROXY_E_SUCCESS immediately if the status updater thread has been created successfully; any error occuring during the operation has to be handled inside the specified callback function. </dd></dl>

</div>
</div>
<a class="anchor" id="a8d5e97d6c3b80d6c67259293ef5fb09d"></a><!-- doxytag: member="installation_proxy.h::instproxy_upgrade" ref="a8d5e97d6c3b80d6c67259293ef5fb09d" args="(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a488853e737060e4269b9e3a7706271cc">instproxy_error_t</a> instproxy_upgrade </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinstproxy__client__private.html">instproxy_client_t</a>&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pkg_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">plist_t&nbsp;</td>
          <td class="paramname"> <em>client_options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="include_2libimobiledevice_2installation__proxy_8h.html#a92b83275dce2d558a2366f92a62f5b80">instproxy_status_cb_t</a>&nbsp;</td>
          <td class="paramname"> <em>status_cb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Upgrade an application on the device. </p>
<p>This function is nearly the same as instproxy_install; the difference is that the installation progress on the device is faster if the application is already installed.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>client</em>&nbsp;</td><td>The connected installation_proxy client </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pkg_path</em>&nbsp;</td><td>Path of the installation package (inside the AFC jail) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>client_options</em>&nbsp;</td><td>The client options to use, as PLIST_DICT, or NULL. Valid options include: "iTunesMetadata" -&gt; PLIST_DATA "ApplicationSINF" -&gt; PLIST_DATA "PackageType" -&gt; "Developer" If PackageType -&gt; Developer is specified, then pkg_path points to an .app directory instead of an install package. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status_cb</em>&nbsp;</td><td>Callback function for progress and status information. If NULL is passed, this function will run synchronously. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Callback data passed to status_cb.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if an error occured.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>If a callback function is given (async mode), this function returns INSTPROXY_E_SUCCESS immediately if the status updater thread has been created successfully; any error occuring during the operation has to be handled inside the specified callback function. </dd></dl>

</div>
</div>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Mon Oct 4 16:38:48 2010 for libimobiledevice by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>