/// <summary>
 /// Upgrade an application on the device. 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.
 /// </summary>
 /// <param name="client">
 /// The connected installation_proxy client
 /// </param>
 /// <param name="pkg_path">
 /// Path of the installation package (inside the AFC jail)
 /// </param>
 /// <param name="client_options">
 /// The client options to use, as PLIST_DICT, or NULL.
 /// Valid options include:
 /// "iTunesMetadata" -> PLIST_DATA
 /// "ApplicationSINF" -> PLIST_DATA
 /// "PackageType" -> "Developer"
 /// If PackageType -> Developer is specified, then pkg_path points to
 /// an .app directory instead of an install package.
 /// </param>
 /// <param name="status_cb">
 /// Callback function for progress and status information. If
 /// NULL is passed, this function will run synchronously.
 /// </param>
 /// <param name="user_data">
 /// Callback data passed to status_cb.
 /// </param>
 /// <returns>
 /// INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if
 /// an error occured.
 /// </returns>
 /// <remarks>
 /// 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 command has to be
 /// handled inside the specified callback function.
 /// </remarks>
 public virtual InstallationProxyError instproxy_upgrade(InstallationProxyClientHandle client, string pkgPath, PlistHandle clientOptions, InstallationProxyStatusCallBack statusCallBack, System.IntPtr userData)
 {
     return(InstallationProxyNativeMethods.instproxy_upgrade(client, pkgPath, clientOptions, statusCallBack, userData));
 }