Files
2025-09-16 05:19:13 +00:00

570 lines
35 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>SPUStandardUpdaterController Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1.0" />
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/objc/Class/SPUStandardUpdaterController" class="dashAnchor"></a>
<a title="SPUStandardUpdaterController Class Reference"></a>
<header>
<div class="content-wrapper">
<p>
<a href="../index.html">Sparkle 2.8.0 Docs</a>
<span class="no-mobile"> (59% documented)</span>
</p>
</div>
</header>
<div id="breadcrumbs-container">
<div class="content-wrapper">
<p id="breadcrumbs">
<span class="no-mobile">
<a href="../index.html">Sparkle</a>
<img id="carat" src="../img/carat.png" alt=""/>
<a href="../Classes.html">Classes</a>
<img id="carat" src="../img/carat.png" alt=""/>
SPUStandardUpdaterController Class Reference
</span>
</p>
</div>
</div>
<div class="wrapper">
<div class="article-wrapper">
<article class="main-content">
<section>
<section class="section">
<h1>SPUStandardUpdaterController</h1>
<div class="declaration">
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">@interface</span> <span class="nc">SPUStandardUpdaterController</span> <span class="p">:</span> <span class="nc">NSObject</span> <span class="p">{</span>
<span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a></span><span class="o">&gt;</span> <span class="n">updaterDelegate</span><span class="p">;</span>
<span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a></span><span class="o">&gt;</span> <span class="n">userDriverDelegate</span><span class="p">;</span>
<span class="p">}</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">SPUStandardUpdaterController</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
<p>A controller class that instantiates a <code><a href="../Classes/SPUUpdater.html">SPUUpdater</a></code> and allows binding UI to its updater settings.</p>
<p>This class can be instantiated in a nib or created programmatically using <code><a href="../Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithUpdaterDelegate:userDriverDelegate:">-initWithUpdaterDelegate:userDriverDelegate:</a></code> or <code><a href="../Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithStartingUpdater:updaterDelegate:userDriverDelegate:">-initWithStartingUpdater:updaterDelegate:userDriverDelegate:</a></code>.</p>
<p>The controller&rsquo;s updater targets the application&rsquo;s main bundle and uses Sparkle&rsquo;s standard user interface.
Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programmatically too.</p>
<p>The controller creates an <code><a href="../Classes/SPUUpdater.html">SPUUpdater</a></code> instance using a <code><a href="../Classes/SPUStandardUserDriver.html">SPUStandardUserDriver</a></code> and allows hooking up the check for updates action and handling menu item validation.
It also allows hooking up the updater&rsquo;s and user driver&rsquo;s delegates.</p>
<p>If you need more control over what bundle you want to update, or you want to provide a custom user interface (via <code><a href="../Protocols/SPUUserDriver.html">SPUUserDriver</a></code>), please use <code><a href="../Classes/SPUUpdater.html">SPUUpdater</a></code> directly instead.</p>
<p>This class must be used on the main thread.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController@updaterDelegate"></a>
<a name="//apple_ref/objc/Ivar/updaterDelegate" class="dashAnchor"></a>
<a class="token discouraged" href="#/c:objc(cs)SPUStandardUpdaterController@updaterDelegate">updaterDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="aside aside-unavailable">
<p class="aside-title">Unavailable</p>
</div>
<div class="abstract">
<p>Interface builder outlet for the updater&rsquo;s delegate.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a></span><span class="o">&gt;</span> <span class="n">updaterDelegate</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController@userDriverDelegate"></a>
<a name="//apple_ref/objc/Ivar/userDriverDelegate" class="dashAnchor"></a>
<a class="token discouraged" href="#/c:objc(cs)SPUStandardUpdaterController@userDriverDelegate">userDriverDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="aside aside-unavailable">
<p class="aside-title">Unavailable</p>
</div>
<div class="abstract">
<p>Interface builder outlet for the user driver&rsquo;s delegate.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a></span><span class="o">&gt;</span> <span class="n">userDriverDelegate</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(py)updater"></a>
<a name="//apple_ref/objc/Property/updater" class="dashAnchor"></a>
<a class="token" href="#/c:objc(cs)SPUStandardUpdaterController(py)updater">updater</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Accessible property for the updater. Some properties on the updater can be binded via KVO</p>
<p>When instantiated from a nib, don&rsquo;t perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">readonly</span><span class="p">)</span> <span class="n"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="o">*</span><span class="n">_Nonnull</span> <span class="n">updater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">updater</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUUpdater.html">SPUUpdater</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(py)userDriver"></a>
<a name="//apple_ref/objc/Property/userDriver" class="dashAnchor"></a>
<a class="token" href="#/c:objc(cs)SPUStandardUpdaterController(py)userDriver">userDriver</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Accessible property for the updater&rsquo;s user driver.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">readonly</span><span class="p">)</span> <span class="n"><a href="../Classes/SPUStandardUserDriver.html">SPUStandardUserDriver</a></span> <span class="o">*</span><span class="n">_Nonnull</span> <span class="n">userDriver</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">userDriver</span><span class="p">:</span> <span class="kt"><a href="../Classes/SPUStandardUserDriver.html">SPUStandardUserDriver</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(im)init"></a>
<a name="//apple_ref/objc/Method/-init" class="dashAnchor"></a>
<a class="token discouraged" href="#/c:objc(cs)SPUStandardUpdaterController(im)init">-init</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="aside aside-unavailable">
<p class="aside-title">Unavailable</p>
</div>
<div class="abstract">
<p>Create a new <code>SPUStandardUpdaterController</code> from a nib.</p>
<p>You cannot call this initializer directly. You must instantiate a <code>SPUStandardUpdaterController</code> inside of a nib (typically the MainMenu nib) to use it.</p>
<p>To create a <code>SPUStandardUpdaterController</code> programmatically, use <code><a href="../Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithUpdaterDelegate:userDriverDelegate:">-initWithUpdaterDelegate:userDriverDelegate:</a></code> or <code><a href="../Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithStartingUpdater:updaterDelegate:userDriverDelegate:">-initWithStartingUpdater:updaterDelegate:userDriverDelegate:</a></code> instead.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span><span class="n">init</span><span class="p">;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(im)initWithUpdaterDelegate:userDriverDelegate:"></a>
<a name="//apple_ref/objc/Method/-initWithUpdaterDelegate:userDriverDelegate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(cs)SPUStandardUpdaterController(im)initWithUpdaterDelegate:userDriverDelegate:">-initWithUpdaterDelegate:<wbr>userDriverDelegate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Create a new <code>SPUStandardUpdaterController</code> programmatically.</p>
<p>The updater is started automatically. See <code><a href="../Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)startUpdater">-startUpdater</a></code> for more information.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span>
<span class="nf">initWithUpdaterDelegate</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a></span><span class="o">&gt;</span><span class="p">)</span><span class="nv">updaterDelegate</span>
<span class="nf">userDriverDelegate</span><span class="p">:</span>
<span class="p">(</span><span class="n">nullable</span> <span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a></span><span class="o">&gt;</span><span class="p">)</span><span class="nv">userDriverDelegate</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">updaterDelegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a></span><span class="p">?,</span> <span class="nv">userDriverDelegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(im)initWithStartingUpdater:updaterDelegate:userDriverDelegate:"></a>
<a name="//apple_ref/objc/Method/-initWithStartingUpdater:updaterDelegate:userDriverDelegate:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(cs)SPUStandardUpdaterController(im)initWithStartingUpdater:updaterDelegate:userDriverDelegate:">-initWithStartingUpdater:<wbr>updaterDelegate:<wbr>userDriverDelegate:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Create a new <code>SPUStandardUpdaterController</code> programmatically allowing you to specify whether or not to start the updater immediately.</p>
<p>You can specify whether or not you want to start the updater immediately.
If you do not start the updater, you must invoke <code><a href="../Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)startUpdater">-startUpdater</a></code> at a later time to start it.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span>
<span class="nf">initWithStartingUpdater</span><span class="p">:(</span><span class="n">BOOL</span><span class="p">)</span><span class="nv">startUpdater</span>
<span class="nf">updaterDelegate</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a></span><span class="o">&gt;</span><span class="p">)</span><span class="nv">updaterDelegate</span>
<span class="nf">userDriverDelegate</span><span class="p">:</span>
<span class="p">(</span><span class="n">nullable</span> <span class="n">id</span><span class="o">&lt;</span><span class="n"><a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a></span><span class="o">&gt;</span><span class="p">)</span><span class="nv">userDriverDelegate</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">startingUpdater</span> <span class="nv">startUpdater</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">,</span> <span class="nv">updaterDelegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a></span><span class="p">?,</span> <span class="nv">userDriverDelegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(im)startUpdater"></a>
<a name="//apple_ref/objc/Method/-startUpdater" class="dashAnchor"></a>
<a class="token" href="#/c:objc(cs)SPUStandardUpdaterController(im)startUpdater">-startUpdater</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Starts the updater if it has not already been started.</p>
<p>You should only call this method yourself if you opted out of starting the updater on initialization.
Hence, do not call this yourself if you are instantiating this controller from a nib.</p>
<p>This invokes <code><a href="../Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)startUpdater:">-[SPUUpdater startUpdater:]</a></code>. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer.
If you want more control over this behavior, you can create your own <code><a href="../Classes/SPUUpdater.html">SPUUpdater</a></code> instead of using <code>SPUStandardUpdaterController</code>.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">startUpdater</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">startUpdater</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:objc(cs)SPUStandardUpdaterController(im)checkForUpdates:"></a>
<a name="//apple_ref/objc/Method/-checkForUpdates:" class="dashAnchor"></a>
<a class="token" href="#/c:objc(cs)SPUStandardUpdaterController(im)checkForUpdates:">-checkForUpdates:<wbr></a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Explicitly checks for updates and displays a progress dialog while doing so.</p>
<p>This method is meant for a main menu item.
Connect any NSMenuItem to this action in Interface Builder or programmatically,
and Sparkle will check for updates and report back its findings verbosely when it is invoked.</p>
<p>When the target/action of the menu item is set to this controller and this method,
this controller also handles enabling/disabling the menu item by checking
<code>-[SPUUpdater canCheckForUpdates]</code></p>
<p>This action checks updates by invoking <code><a href="../Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdates">-[SPUUpdater checkForUpdates]</a></code></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Objective-C</p>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">checkForUpdates</span><span class="p">:(</span><span class="n">nullable</span> <span class="n">id</span><span class="p">)</span><span class="nv">sender</span><span class="p">;</span></code></pre>
</div>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@IBAction</span> <span class="kd">func</span> <span class="nf">checkForUpdates</span><span class="p">(</span><span class="n">_</span> <span class="nv">sender</span><span class="p">:</span> <span class="kt">Any</span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
</article>
</div>
<div class="nav-wrapper">
<nav class="nav-bottom">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/SPUDownloadData.html">SPUDownloadData</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUStandardUpdaterController.html">SPUStandardUpdaterController</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUStandardUserDriver.html">SPUStandardUserDriver</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUpdatePermissionRequest.html">SPUUpdatePermissionRequest</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUpdater.html">SPUUpdater</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUpdaterSettings.html">SPUUpdaterSettings</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SPUUserUpdateState.html">SPUUserUpdateState</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUAppcast.html">SUAppcast</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUAppcastItem.html">SUAppcastItem</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUStandardVersionComparator.html">SUStandardVersionComparator</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUUpdatePermissionResponse.html">SUUpdatePermissionResponse</a>
</li>
<li class="nav-group-task">
<a href="../Classes/SUUpdater.html">SUUpdater</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Constants.html">Constants</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Constants.html#/c:@SPULatestAppcastItemFoundKey">SPULatestAppcastItemFoundKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SPUNoUpdateFoundReasonKey">SPUNoUpdateFoundReasonKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SPUNoUpdateFoundUserInitiatedKey">SPUNoUpdateFoundUserInitiatedKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSparkleErrorDomain">SUSparkleErrorDomain</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerApplicationNameKey">SUSystemProfilerApplicationNameKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerApplicationVersionKey">SUSystemProfilerApplicationVersionKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPU64bitKey">SUSystemProfilerCPU64bitKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUCountKey">SUSystemProfilerCPUCountKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUFrequencyKey">SUSystemProfilerCPUFrequencyKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUSubtypeKey">SUSystemProfilerCPUSubtypeKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerCPUTypeKey">SUSystemProfilerCPUTypeKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerHardwareModelKey">SUSystemProfilerHardwareModelKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerMemoryKey">SUSystemProfilerMemoryKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerOperatingSystemVersionKey">SUSystemProfilerOperatingSystemVersionKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUSystemProfilerPreferredLanguageKey">SUSystemProfilerPreferredLanguageKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterAppcastItemNotificationKey">SUUpdaterAppcastItemNotificationKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterAppcastNotificationKey">SUUpdaterAppcastNotificationKey</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterDidFindValidUpdateNotification">SUUpdaterDidFindValidUpdateNotification</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterDidFinishLoadingAppCastNotification">SUUpdaterDidFinishLoadingAppCastNotification</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterDidNotFindUpdateNotification">SUUpdaterDidNotFindUpdateNotification</a>
</li>
<li class="nav-group-task">
<a href="../Constants.html#/c:@SUUpdaterWillRestartNotification">SUUpdaterWillRestartNotification</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Enums.html">Enumerations</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Enums/SPUNoUpdateFoundReason.html">SPUNoUpdateFoundReason</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SPUUpdateCheck.html">SPUUpdateCheck</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SPUUserUpdateChoice.html">SPUUserUpdateChoice</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SPUUserUpdateStage.html">SPUUserUpdateStage</a>
</li>
<li class="nav-group-task">
<a href="../Enums/SUError.html">SUError</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/SPUStandardUserDriverDelegate.html">SPUStandardUserDriverDelegate</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SPUUpdaterDelegate.html">SPUUpdaterDelegate</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SPUUserDriver.html">SPUUserDriver</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SUUpdaterDelegate.html">SUUpdaterDelegate</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SUVersionComparison.html">SUVersionComparison</a>
</li>
<li class="nav-group-task">
<a href="../Protocols/SUVersionDisplay.html">SUVersionDisplay</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="footer-wrapper">
<section id="footer">
<p>&copy; 2025 <a class="link" href="https://sparkle-project.org" target="_blank" rel="external noopener">Sparkle Project</a>. All rights reserved. (Last updated: 2025-09-16)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.15.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
</section>
</div>
</div>
</body>
</html>