Files
sparkle-project.github.io/documentation/api-reference/protocol_s_p_u_user_driver-p.html
T
2021-09-03 19:38:30 -07:00

707 lines
42 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Sparkle: &lt;SPUUserDriver&gt; Protocol Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="icon_32x32@2x.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Sparkle
&#160;<span id="projectnumber">2.0.0</span>
</div>
<div id="projectbrief">A software update framework for macOS</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Instance Methods</a> &#124;
<a href="protocol_s_p_u_user_driver-p-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">&lt;SPUUserDriver&gt; Protocol Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>The API in Sparkle for controlling the user interaction.
<a href="protocol_s_p_u_user_driver-p.html#details">More...</a></p>
<p><code>#import &lt;<a class="el" href="_s_p_u_user_driver_8h_source.html">SPUUserDriver.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for &lt;SPUUserDriver&gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="protocol_s_p_u_user_driver-p.png" usemap="#_3CSPUUserDriver_3E_map" alt=""/>
<map id="_3CSPUUserDriver_3E_map" name="_3CSPUUserDriver_3E_map">
<area href="interface_s_p_u_standard_user_driver.html" title="Sparkle&#39;s standard built-in user driver for updater interactions." alt="SPUStandardUserDriver" shape="rect" coords="0,112,149,136"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Instance Methods</h2></td></tr>
<tr class="memitem:a6382048832f06216f505659c251dc1e0"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a6382048832f06216f505659c251dc1e0">showUpdatePermissionRequest:reply:</a></td></tr>
<tr class="memdesc:a6382048832f06216f505659c251dc1e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show an updater permission request to the user. <a href="protocol_s_p_u_user_driver-p.html#a6382048832f06216f505659c251dc1e0">More...</a><br /></td></tr>
<tr class="separator:a6382048832f06216f505659c251dc1e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a797fb61eacdd1fba10a232d7b2b5ceac"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a797fb61eacdd1fba10a232d7b2b5ceac">showUserInitiatedUpdateCheckWithCancellation:</a></td></tr>
<tr class="memdesc:a797fb61eacdd1fba10a232d7b2b5ceac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user initating an update check. <a href="protocol_s_p_u_user_driver-p.html#a797fb61eacdd1fba10a232d7b2b5ceac">More...</a><br /></td></tr>
<tr class="separator:a797fb61eacdd1fba10a232d7b2b5ceac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0f8e99c60962476ea55729833a0e3f2"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ac0f8e99c60962476ea55729833a0e3f2">showUpdateFoundWithAppcastItem:state:reply:</a></td></tr>
<tr class="memdesc:ac0f8e99c60962476ea55729833a0e3f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user a new update is found. <a href="protocol_s_p_u_user_driver-p.html#ac0f8e99c60962476ea55729833a0e3f2">More...</a><br /></td></tr>
<tr class="separator:ac0f8e99c60962476ea55729833a0e3f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5fe75d599aae6597d81bd2449919be8"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ae5fe75d599aae6597d81bd2449919be8">showUpdateReleaseNotesWithDownloadData:</a></td></tr>
<tr class="memdesc:ae5fe75d599aae6597d81bd2449919be8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user the release notes for the new update. <a href="protocol_s_p_u_user_driver-p.html#ae5fe75d599aae6597d81bd2449919be8">More...</a><br /></td></tr>
<tr class="separator:ae5fe75d599aae6597d81bd2449919be8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab304bc81459aa83fc617eb5047cd93a1"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ab304bc81459aa83fc617eb5047cd93a1">showUpdateReleaseNotesFailedToDownloadWithError:</a></td></tr>
<tr class="memdesc:ab304bc81459aa83fc617eb5047cd93a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the new update's release notes could not be downloaded. <a href="protocol_s_p_u_user_driver-p.html#ab304bc81459aa83fc617eb5047cd93a1">More...</a><br /></td></tr>
<tr class="separator:ab304bc81459aa83fc617eb5047cd93a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf3ca2a6bb84fe26a4ce53ae5b6f2233"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#abf3ca2a6bb84fe26a4ce53ae5b6f2233">showUpdateNotFoundWithError:acknowledgement:</a></td></tr>
<tr class="memdesc:abf3ca2a6bb84fe26a4ce53ae5b6f2233"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user a new update was not found. <a href="protocol_s_p_u_user_driver-p.html#abf3ca2a6bb84fe26a4ce53ae5b6f2233">More...</a><br /></td></tr>
<tr class="separator:abf3ca2a6bb84fe26a4ce53ae5b6f2233"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac10bbf2fbe588106bf3a8c951caa2d53"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ac10bbf2fbe588106bf3a8c951caa2d53">showUpdaterError:acknowledgement:</a></td></tr>
<tr class="memdesc:ac10bbf2fbe588106bf3a8c951caa2d53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user an update error occurred. <a href="protocol_s_p_u_user_driver-p.html#ac10bbf2fbe588106bf3a8c951caa2d53">More...</a><br /></td></tr>
<tr class="separator:ac10bbf2fbe588106bf3a8c951caa2d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c6cd7f7b93f6d2777b04f3c9f0bb62c"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a3c6cd7f7b93f6d2777b04f3c9f0bb62c">showDownloadInitiatedWithCancellation:</a></td></tr>
<tr class="memdesc:a3c6cd7f7b93f6d2777b04f3c9f0bb62c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that downloading the new update initiated. <a href="protocol_s_p_u_user_driver-p.html#a3c6cd7f7b93f6d2777b04f3c9f0bb62c">More...</a><br /></td></tr>
<tr class="separator:a3c6cd7f7b93f6d2777b04f3c9f0bb62c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf58b5974797500618b7745f1987833a"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#abf58b5974797500618b7745f1987833a">showDownloadDidReceiveExpectedContentLength:</a></td></tr>
<tr class="memdesc:abf58b5974797500618b7745f1987833a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user the content length of the new update that will be downloaded. <a href="protocol_s_p_u_user_driver-p.html#abf58b5974797500618b7745f1987833a">More...</a><br /></td></tr>
<tr class="separator:abf58b5974797500618b7745f1987833a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac86c11d9dd8f66cc54bc3f3dd303fb6c"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ac86c11d9dd8f66cc54bc3f3dd303fb6c">showDownloadDidReceiveDataOfLength:</a></td></tr>
<tr class="memdesc:ac86c11d9dd8f66cc54bc3f3dd303fb6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the update download received more data. <a href="protocol_s_p_u_user_driver-p.html#ac86c11d9dd8f66cc54bc3f3dd303fb6c">More...</a><br /></td></tr>
<tr class="separator:ac86c11d9dd8f66cc54bc3f3dd303fb6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19ada57d6b77c7ea3ed402833dcda44c"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a19ada57d6b77c7ea3ed402833dcda44c">showDownloadDidStartExtractingUpdate</a></td></tr>
<tr class="memdesc:a19ada57d6b77c7ea3ed402833dcda44c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the update finished downloading and started extracting. <a href="protocol_s_p_u_user_driver-p.html#a19ada57d6b77c7ea3ed402833dcda44c">More...</a><br /></td></tr>
<tr class="separator:a19ada57d6b77c7ea3ed402833dcda44c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ffb49c0f51864011685049b7225dfbf"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a3ffb49c0f51864011685049b7225dfbf">showExtractionReceivedProgress:</a></td></tr>
<tr class="memdesc:a3ffb49c0f51864011685049b7225dfbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the update is extracting with progress. <a href="protocol_s_p_u_user_driver-p.html#a3ffb49c0f51864011685049b7225dfbf">More...</a><br /></td></tr>
<tr class="separator:a3ffb49c0f51864011685049b7225dfbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab774cef0a00dbc7c074f8850c1e6c21f"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ab774cef0a00dbc7c074f8850c1e6c21f">showInstallingUpdate</a></td></tr>
<tr class="memdesc:ab774cef0a00dbc7c074f8850c1e6c21f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the update is installing. <a href="protocol_s_p_u_user_driver-p.html#ab774cef0a00dbc7c074f8850c1e6c21f">More...</a><br /></td></tr>
<tr class="separator:ab774cef0a00dbc7c074f8850c1e6c21f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91ad34f8469dc022c7b1ed42b0f1575d"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a91ad34f8469dc022c7b1ed42b0f1575d">showReadyToInstallAndRelaunch:</a></td></tr>
<tr class="memdesc:a91ad34f8469dc022c7b1ed42b0f1575d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the update is ready to install &amp; relaunch. <a href="protocol_s_p_u_user_driver-p.html#a91ad34f8469dc022c7b1ed42b0f1575d">More...</a><br /></td></tr>
<tr class="separator:a91ad34f8469dc022c7b1ed42b0f1575d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3eb11e826fe5c1f68112a73600c23bf2"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a3eb11e826fe5c1f68112a73600c23bf2">showSendingTerminationSignal</a></td></tr>
<tr class="memdesc:a3eb11e826fe5c1f68112a73600c23bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer. <a href="protocol_s_p_u_user_driver-p.html#a3eb11e826fe5c1f68112a73600c23bf2">More...</a><br /></td></tr>
<tr class="separator:a3eb11e826fe5c1f68112a73600c23bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8b7ae192288db21ab43b4413b2d80c3"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#aa8b7ae192288db21ab43b4413b2d80c3">showUpdateInstalledAndRelaunched:acknowledgement:</a></td></tr>
<tr class="memdesc:aa8b7ae192288db21ab43b4413b2d80c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user that the update installation finished. <a href="protocol_s_p_u_user_driver-p.html#aa8b7ae192288db21ab43b4413b2d80c3">More...</a><br /></td></tr>
<tr class="separator:aa8b7ae192288db21ab43b4413b2d80c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6d613d4689dbc6415774d0ab63afd55"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#ac6d613d4689dbc6415774d0ab63afd55">showUpdateInFocus</a></td></tr>
<tr class="memdesc:ac6d613d4689dbc6415774d0ab63afd55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the user the current presented update or its progress in utmost focus. <a href="protocol_s_p_u_user_driver-p.html#ac6d613d4689dbc6415774d0ab63afd55">More...</a><br /></td></tr>
<tr class="separator:ac6d613d4689dbc6415774d0ab63afd55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5df3b42fd77ab1b5c971c8df9ef35048"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="protocol_s_p_u_user_driver-p.html#a5df3b42fd77ab1b5c971c8df9ef35048">dismissUpdateInstallation</a></td></tr>
<tr class="memdesc:a5df3b42fd77ab1b5c971c8df9ef35048"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dismiss the current update installation. <a href="protocol_s_p_u_user_driver-p.html#a5df3b42fd77ab1b5c971c8df9ef35048">More...</a><br /></td></tr>
<tr class="separator:a5df3b42fd77ab1b5c971c8df9ef35048"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adce6254ea93b96d9a8f5137669f81813"><td class="memItemLeft" align="right" valign="top"><a id="adce6254ea93b96d9a8f5137669f81813"></a>
(void)&#160;</td><td class="memItemRight" valign="bottom">- <b>showUpdateNotFoundWithAcknowledgement:</b></td></tr>
<tr class="separator:adce6254ea93b96d9a8f5137669f81813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef3062a9bdd78ab11de792bed66288f1"><td class="memItemLeft" align="right" valign="top"><a id="aef3062a9bdd78ab11de792bed66288f1"></a>
(void)&#160;</td><td class="memItemRight" valign="bottom">- <b>showUpdateInstallationDidFinishWithAcknowledgement:</b></td></tr>
<tr class="separator:aef3062a9bdd78ab11de792bed66288f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab731ec2611d2c658df137cd71ba51760"><td class="memItemLeft" align="right" valign="top"><a id="ab731ec2611d2c658df137cd71ba51760"></a>
(&quot;Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.&quot;)&#160;</td><td class="memItemRight" valign="bottom">- <b>__deprecated_msg</b></td></tr>
<tr class="separator:ab731ec2611d2c658df137cd71ba51760"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The API in Sparkle for controlling the user interaction. </p>
<p>This protocol is used for implementing a user interface for the Sparkle updater. Sparkle's internal drivers tell an object that implements this protocol what actions to take and show to the user.</p>
<p>Every method in this protocol can be assumed to be called from the main thread. </p>
</div><h2 class="groupheader">Method Documentation</h2>
<a id="a5df3b42fd77ab1b5c971c8df9ef35048"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5df3b42fd77ab1b5c971c8df9ef35048">&#9670;&nbsp;</a></span>dismissUpdateInstallation</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) dismissUpdateInstallation </td>
<td></td>
<td class="paramname"></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dismiss the current update installation. </p>
<p>Stop and tear down everything. Dismiss all update windows, alerts, progress, etc from the user. Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update. </p>
</div>
</div>
<a id="ac86c11d9dd8f66cc54bc3f3dd303fb6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac86c11d9dd8f66cc54bc3f3dd303fb6c">&#9670;&nbsp;</a></span>showDownloadDidReceiveDataOfLength:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showDownloadDidReceiveDataOfLength: </td>
<td></td>
<td class="paramtype">(uint64_t)&#160;</td>
<td class="paramname"><em>length</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the update download received more data. </p>
<p>This may be an appropriate time to advance a visible progress indicator of the download </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">length</td><td>The length of the data that was just downloaded </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abf58b5974797500618b7745f1987833a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf58b5974797500618b7745f1987833a">&#9670;&nbsp;</a></span>showDownloadDidReceiveExpectedContentLength:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showDownloadDidReceiveExpectedContentLength: </td>
<td></td>
<td class="paramtype">(uint64_t)&#160;</td>
<td class="paramname"><em>expectedContentLength</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user the content length of the new update that will be downloaded. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">expectedContentLength</td><td>The expected content length of the new update being downloaded. An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). Additionally, this method may be called more than once for the same download in rare scenarios. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a19ada57d6b77c7ea3ed402833dcda44c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19ada57d6b77c7ea3ed402833dcda44c">&#9670;&nbsp;</a></span>showDownloadDidStartExtractingUpdate</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showDownloadDidStartExtractingUpdate </td>
<td></td>
<td class="paramname"></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the update finished downloading and started extracting. </p>
<p>Sparkle uses this to show an indeterminate progress bar.</p>
<p>Note that an update can resume at this point after having been downloaded before, so this may be called without any of the download callbacks being invoked prior. </p>
</div>
</div>
<a id="a3c6cd7f7b93f6d2777b04f3c9f0bb62c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c6cd7f7b93f6d2777b04f3c9f0bb62c">&#9670;&nbsp;</a></span>showDownloadInitiatedWithCancellation:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showDownloadInitiatedWithCancellation: </td>
<td></td>
<td class="paramtype">(void(^)(void))&#160;</td>
<td class="paramname"><em>cancellation</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that downloading the new update initiated. </p>
<p>Let the user know that downloading the new update started.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cancellation</td><td>Invoke this cancellation block to cancel the download at any point before -showDownloadDidStartExtractingUpdate is invoked. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3ffb49c0f51864011685049b7225dfbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ffb49c0f51864011685049b7225dfbf">&#9670;&nbsp;</a></span>showExtractionReceivedProgress:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showExtractionReceivedProgress: </td>
<td></td>
<td class="paramtype">(double)&#160;</td>
<td class="paramname"><em>progress</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the update is extracting with progress. </p>
<p>Let the user know how far along the update extraction is.</p>
<p>Before this point, -showDownloadDidStartExtractingUpdate is called.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">progress</td><td>The progress of the extraction from a 0.0 to 1.0 scale </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab774cef0a00dbc7c074f8850c1e6c21f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab774cef0a00dbc7c074f8850c1e6c21f">&#9670;&nbsp;</a></span>showInstallingUpdate</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showInstallingUpdate </td>
<td></td>
<td class="paramname"></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the update is installing. </p>
<p>Let the user know that the update is currently installing. Sparkle uses this to show an indeterminate progress bar.</p>
<p>Before this point, -showExtractionReceivedProgress: may be called. </p>
</div>
</div>
<a id="a91ad34f8469dc022c7b1ed42b0f1575d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91ad34f8469dc022c7b1ed42b0f1575d">&#9670;&nbsp;</a></span>showReadyToInstallAndRelaunch:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showReadyToInstallAndRelaunch: </td>
<td></td>
<td class="paramtype">(void(^)(SPUUserUpdateChoice))&#160;</td>
<td class="paramname"><em>reply</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the update is ready to install &amp; relaunch. </p>
<p>Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. Note if the target application has already terminated, this method may not be invoked.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reply</td><td>A reply of SPUUserUpdateChoiceInstall installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update.</td></tr>
</table>
</dd>
</dl>
<p>A reply of SPUUserUpdateChoiceDismiss dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates.</p>
<p>A reply of SPUUserUpdateChoiceSkip cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future.</p>
<p>Before this point, -showInstallingUpdate will be called. </p>
</div>
</div>
<a id="a3eb11e826fe5c1f68112a73600c23bf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3eb11e826fe5c1f68112a73600c23bf2">&#9670;&nbsp;</a></span>showSendingTerminationSignal</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showSendingTerminationSignal </td>
<td></td>
<td class="paramname"></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer. </p>
<p>Terminating and relaunching the application (if requested to be relaunched) may happen quickly, or it may take some time to perform the final installation, or the termination signal can be canceled or delayed by the application or user.</p>
<p>It is up to the implementor whether or not to decide to continue showing installation progress or dismissing UI that won't remain obscuring other parts of the user interface.</p>
<p>This will not be invoked if the application that is being updated is already terminated. </p>
</div>
</div>
<a id="ac0f8e99c60962476ea55729833a0e3f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0f8e99c60962476ea55729833a0e3f2">&#9670;&nbsp;</a></span>showUpdateFoundWithAppcastItem:state:reply:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdateFoundWithAppcastItem: </td>
<td></td>
<td class="paramtype">(<a class="el" href="interface_s_u_appcast_item.html">SUAppcastItem</a> *)&#160;</td>
<td class="paramname"><em>appcastItem</em></td>
</tr>
<tr>
<td class="paramkey">state:</td>
<td></td>
<td class="paramtype">(<a class="el" href="interface_s_p_u_user_update_state.html">SPUUserUpdateState</a> *)&#160;</td>
<td class="paramname"><em>state</em></td>
</tr>
<tr>
<td class="paramkey">reply:</td>
<td></td>
<td class="paramtype">(void(^)(SPUUserUpdateChoice))&#160;</td>
<td class="paramname"><em>reply</em>&#160;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user a new update is found. </p>
<p>Let the user know a new update is found and ask them what they want to do. Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">appcastItem</td><td>The Appcast Item containing information that reflects the new update.</td></tr>
<tr><td class="paramname">state</td><td>The current state of the user update. The state.stage values are: SPUUpdateStateNotDownloaded - Update has not been downloaded yet. SPUUpdateStateDownloaded - Update has already been downloaded but not started installing yet. SPUUpdateStateInstalling - Update has been downloaded and already started installing.</td></tr>
</table>
</dd>
</dl>
<p>state.userInitiated indicates if the update was initiated by the user or if it was automatically scheduled in the background.</p>
<p>Additionally, these properties on the appcastItem are of importance: appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you'll want to support this case. appcastItem.majorUpgrade indicates if the update is a major or paid upgrade. appcastItem.criticalUpdate indicates if the update is a critical update.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reply</td><td>A reply of SPUUserUpdateChoiceInstall begins or resumes downloading or installing the update. If the state.stage is SPUUserUpdateStateInstalling, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast "install and Relaunch"). Do not use this reply if appcastItem.informationOnlyUpdate is YES.</td></tr>
</table>
</dd>
</dl>
<p>A reply of SPUUserUpdateChoiceDismiss dismisses the update for the time being. The user may be reminded of the update at a later point. If the state.stage is SPUUserUpdateStateDownloaded, the downloaded update is kept after dismissing until the next time an update is shown to the user. If the state.stage is SPUUserUpdateStateInstalling, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated.</p>
<p>A reply of SPUUserUpdateChoiceSkip skips this particular version and won't notify the user again, unless they initiate an update check themselves. If appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped. If the state.stage is SPUUpdateStateInstalling, the installation is also canceled when the update is skipped. </p>
</div>
</div>
<a id="ac6d613d4689dbc6415774d0ab63afd55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6d613d4689dbc6415774d0ab63afd55">&#9670;&nbsp;</a></span>showUpdateInFocus</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdateInFocus </td>
<td></td>
<td class="paramname"></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user the current presented update or its progress in utmost focus. </p>
<p>The user wishes to check for updates while the user is being shown update progress. Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc). </p>
</div>
</div>
<a id="aa8b7ae192288db21ab43b4413b2d80c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8b7ae192288db21ab43b4413b2d80c3">&#9670;&nbsp;</a></span>showUpdateInstalledAndRelaunched:acknowledgement:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdateInstalledAndRelaunched: </td>
<td></td>
<td class="paramtype">(BOOL)&#160;</td>
<td class="paramname"><em>relaunched</em></td>
</tr>
<tr>
<td class="paramkey">acknowledgement:</td>
<td></td>
<td class="paramtype">(void(^)(void))&#160;</td>
<td class="paramname"><em>acknowledgement</em>&#160;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the update installation finished. </p>
<p>Let the user know that the update finished installing.</p>
<p>This will only be invoked if the updater process is still alive, which is typically not the case if the updater's lifetime is tied to the application it is updating. This implementation must not try to reference the old bundle prior to the installation, which will no longer be around.</p>
<p>Before this point, -showSendingTerminationSignal or -showReadyToInstallAndRelaunch: may be called.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">relaunched</td><td>Indicates if the update was relaunched. </td></tr>
<tr><td class="paramname">acknowledgement</td><td>Acknowledge to the updater that the finished installation was shown. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abf3ca2a6bb84fe26a4ce53ae5b6f2233"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf3ca2a6bb84fe26a4ce53ae5b6f2233">&#9670;&nbsp;</a></span>showUpdateNotFoundWithError:acknowledgement:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdateNotFoundWithError: </td>
<td></td>
<td class="paramtype">(NSError *)&#160;</td>
<td class="paramname"><em>error</em></td>
</tr>
<tr>
<td class="paramkey">acknowledgement:</td>
<td></td>
<td class="paramtype">(void(^)(void))&#160;</td>
<td class="paramname"><em>acknowledgement</em>&#160;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user a new update was not found. </p>
<p>Let the user know a new update was not found after they tried initiating an update check. Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">error</td><td>The error associated with why a new update was not found. There are various reasons a new update is unavailable and can't be installed. This error object is populated with recovery and suggestion strings suitable to be shown in an alert.</td></tr>
</table>
</dd>
</dl>
<p>The userInfo dictionary is also populated with two keys: SPULatestAppcastItemFoundKey: if available, this may provide the latest <a class="el" href="interface_s_u_appcast_item.html">SUAppcastItem</a> that was found. SPUNoUpdateFoundReasonKey: if available, this will provide the SUNoUpdateFoundReason. For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">acknowledgement</td><td>Acknowledge to the updater that no update found error was shown. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6382048832f06216f505659c251dc1e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6382048832f06216f505659c251dc1e0">&#9670;&nbsp;</a></span>showUpdatePermissionRequest:reply:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdatePermissionRequest: </td>
<td></td>
<td class="paramtype">(<a class="el" href="interface_s_p_u_update_permission_request.html">SPUUpdatePermissionRequest</a> *)&#160;</td>
<td class="paramname"><em>request</em></td>
</tr>
<tr>
<td class="paramkey">reply:</td>
<td></td>
<td class="paramtype">(void(^)(<a class="el" href="interface_s_u_update_permission_response.html">SUUpdatePermissionResponse</a> *))&#160;</td>
<td class="paramname"><em>reply</em>&#160;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show an updater permission request to the user. </p>
<p>Ask the user for their permission regarding update checks. This is typically only called once per app installation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">request</td><td>The update permission request. </td></tr>
<tr><td class="paramname">reply</td><td>A reply with a update permission response. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab304bc81459aa83fc617eb5047cd93a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab304bc81459aa83fc617eb5047cd93a1">&#9670;&nbsp;</a></span>showUpdateReleaseNotesFailedToDownloadWithError:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdateReleaseNotesFailedToDownloadWithError: </td>
<td></td>
<td class="paramtype">(NSError *)&#160;</td>
<td class="paramname"><em>error</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user that the new update's release notes could not be downloaded. </p>
<p>This will be called after showing the new update. This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">error</td><td>The error associated with why the new update's release notes could not be downloaded. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae5fe75d599aae6597d81bd2449919be8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5fe75d599aae6597d81bd2449919be8">&#9670;&nbsp;</a></span>showUpdateReleaseNotesWithDownloadData:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdateReleaseNotesWithDownloadData: </td>
<td></td>
<td class="paramtype">(<a class="el" href="interface_s_p_u_download_data.html">SPUDownloadData</a> *)&#160;</td>
<td class="paramname"><em>downloadData</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user the release notes for the new update. </p>
<p>Display the release notes to the user. This will be called after showing the new update. This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">downloadData</td><td>The data for the release notes that was downloaded from the new update's appcast. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac10bbf2fbe588106bf3a8c951caa2d53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac10bbf2fbe588106bf3a8c951caa2d53">&#9670;&nbsp;</a></span>showUpdaterError:acknowledgement:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUpdaterError: </td>
<td></td>
<td class="paramtype">(NSError *)&#160;</td>
<td class="paramname"><em>error</em></td>
</tr>
<tr>
<td class="paramkey">acknowledgement:</td>
<td></td>
<td class="paramtype">(void(^)(void))&#160;</td>
<td class="paramname"><em>acknowledgement</em>&#160;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user an update error occurred. </p>
<p>Let the user know that the updater failed with an error. This will not be invoked without the user having been aware that an update was in progress.</p>
<p>Before this point, any of the non-error user driver methods may have been invoked.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">error</td><td>The error associated with what update error occurred.. </td></tr>
<tr><td class="paramname">acknowledgement</td><td>Acknowledge to the updater that the error was shown. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a797fb61eacdd1fba10a232d7b2b5ceac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a797fb61eacdd1fba10a232d7b2b5ceac">&#9670;&nbsp;</a></span>showUserInitiatedUpdateCheckWithCancellation:</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">- (void) showUserInitiatedUpdateCheckWithCancellation: </td>
<td></td>
<td class="paramtype">(void(^)(void))&#160;</td>
<td class="paramname"><em>cancellation</em></td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the user initating an update check. </p>
<p>Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cancellation</td><td>Invoke this cancellation block to cancel the update check before the update check is completed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this protocol was generated from the following file:<ul>
<li>Sparkle/<a class="el" href="_s_p_u_user_driver_8h_source.html">SPUUserDriver.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>