All notable changes to this project will be documented in this file.
- [Breaking Change] Split UI to separate DLLs. The core NetSparkle DLL no longer requires a
UI
. - Updated SampleApplication to more easily see new usage of NetSparkle
CheckServerFileName
property lets you disable the checking of download file names with the server. Defaults totrue
.- New function
IsDownloadingItem
lets you see if an item is currently being downloaded
- Fixed bug with threading and
HttpClient
by usingConfigureAwait(false)
. See also https://stackoverflow.com/a/10351400/3938401.
0.18.2 (and 0.18.3 because Deadpikle failed)
- Fixed bug where process IDs were sometimes not matched properly (@kenjiuno ) -- #80 (PR)
- Set AutoEllipsis to True for App Captions in dialog windows (@Mostlypyjamas) -- #78 (Issue), #79 (PR)
RegistryConfiguration.BuildRegistryInfo()
is nowpublic virtual
rather thanprivate
- NetSparkle now handles the
ddd, dd MMM yyyy HH:mm:ss Z
andddd, dd MMM yyyy HH:mm:ss
date formats when parsing an app cast file (@Mostlypyjamas)
- [Breaking Change] NetSparkle defaults to using the server's file name as the download file name rather than the app cast file name (@Mostlypyjamas)
- Many buttons use
AutoSize = true
to alleviate some concerns outlined in #44
- Fixed a bug where release notes were downloaded incorrectly
- Fixed a bug where the update form window wasn't closed properly
- Appcast download links can now be relative (this change may be removed in a future X.0 verison of
NetSparkle
as it does not follow the RSS spec). This change was made to be consistent with how release notes are downloaded.
NetSparkleUtilities
namespace renamed to justNetSparkle
.
- We now offer a
generate_appcast.exe
tool in theNetSparkle.New.Tools
NuGet! This works very similarly to macOS Sparkle'sgenerate_appcast
tool and is due to the work by @ndreisg. - Started to work on adding formal unit tests for the project. Lots to do here, still.
AppCastItem
is now marked serializable- If using
SecurityMode.Unsafe
, files are always redownloaded because the library has no good way of knowing whether or not the file that is on disk is the file that is actually on the server (@rolikoff) - Fixed a bug where if you cancel the download process or if an error occurs during download, the update file stays in the same directory (@rolikoff)
- Fixed a bug where the
DownloadCanceled
event was fired twice (@rolikoff)
0.14.0 (Same as 0.14.0.1 because Deadpikle goofed)
- NetSparkle now supports the
sparkle:os
attribute (#17). If this is not present, an update is assumed to be a Windows update. Valid types for Windows are "win" or "windows". The operating system string check is a case-insensitive check.- Added
OperatingSystemString
(default "windows") andbool IsWindowsUpdate
toAppCastItem
AppCast.GetUpdates()
no longer returns non-Windows updates
- Added
- To increase compatibility with the main macOS Sparkle project, the
enclosure
tag can now be eitherenclosure
orsparkle:enclosure
- Added
AppCastItem.MIMEType
to read the<enclosure type="">
attribute if they want to (#15). Defaults toapplication/octet-stream
. - Added
UpdateDetectedEventArgs.AppCastItems
if you want to look at all available app cast items - Added
DownloadPathForAppCastItem(AppCastItem item)
to easily grab the download path for a given downloadable appcast item - Added
RunUpdate(AppCastItem item)
to allow you to run an update without waiting for the latest version to download. The DSA signature of the file is still checked!
NetSparkle.UpdateSystemProfileInformation
is now privateAppCast
no longer takes a Sparkle object and instead takes only those parameters that it needs to operateNextUpdateAction
is now in its own file in theNetSparkle.Enums
namespace
0.13.0 - 2017-12-06
- BREAKING CHANGE Added
HideRemindMeLaterButton()
toIUpdateAvailable
- BREAKING CHANGE Added
HideSkipButton()
toIUpdateAvailable
- Added
HideRemindMeLaterButton
to theNetSparkle
class. Defaults to false. Set to true to makeNetSparkle
callHideRemindMeLaterButton()
when showing the update window. - Added
HideSkipButton
to theNetSparkle
class. Defaults to false. Set to true to makeNetSparkle
callHideSkipButton()
when showing the update window. - Added
RemindMeLaterSelected
to theNetSparkle
class. Defaults to null. Use this event to be notified when the user has clicked theRemind Me Later
button in the update window. (@enscope)
- Release notes are now downloaded asynchronously, which should speed up the time it takes to show the download window
- Release note date is now Date.ToString("D") instead of "dd MMM yyyy" so that release notes show localized date strings
- POTENTIALLY BREAKING CHANGE Fixed bug where
ValidationResult.Unchecked
was not returned properly fromOnDownloadFinished
if download file signature is null (@keithclanton) - BREAKING CHANGE
IUpdateAvailable
now has aResult
of typeUpdateAvailableResult
rather thanDialogResult
in order to remove a dependency on WinForms. UseDefaultUIFactory.ConvertDialogResultToUpdateAvailableResult
to convert fromDialogResult
toUpdateAvailableResult
if needed. (@enscope)
0.12.0 - 2017-08-02
- Added new
LogWriter
class for printing diagnostic messages to the console. You can now create your own child class that inherits fromLogWriter
to customize how information is logged to the console (or file, or wherever else you want diagnostic messages sent!)! - Added .gitattributes file for line ending consistency for all developers (@stephenwade)
- Moved
UpdateStatus
enum toNetSparkle.Enums
- Moved
UpdateInfo
class to its own file - Fixed bug in
Configuration.cs
where a few values were not set properly in the constructor due toInitWithDefaultValues
being called at the wrong time (@devstudiosoft) - BREAKING CHANGE Fixed bug in
AssemblyDiagnosticsAccessor
whereAssemblyProduct
returned the assembly version and not the assembly name (@devstudiosoft)
- BREAKING CHANGE Removed
public void NetSparkle.ReportDiagnosticMessage
in lieu of newLogWriter
class.
0.11.0 - 2017-07-16
- Refactored logic to quit application to a separate
QuitApplication()
function
RunDownloadedInstaller()
is now virtual and protected- Renamed some files and variables
- Moved
SecurityMode
andValidationResult
enums to theNetSparkle.Enums
namespace
0.10.0 - 2017-07-11
- This changelog
Sparkle
class documentation to the readme- Section about how the appcast works to the readme
Much thanks to @stephenwade for his contributions to 0.10.0
- Cleaned up and added documentation comments throughout the code (@stephenwade)
- Renamed lots of identifiers throughout the project to remove "NetSparkle" (i.e.,
NetSparkleAppCast
toAppCast
,NetSparkleConfiguration
toConfiguration
, etc.) (@stephenwade) - Renamed property
UseSyncronizedForms
toShowsUIOnMainThread
to better represent what it does (@stephenwade) - Renamed events
CloseWPFSoftware
andCloseWPFSoftwareAsync
toCloseApplication
andCloseApplicationAsync
(@stephenwade)- These events are now always run, if present (instead of only on
RunningFromWPF
) - If one of these events is set, it will be run instead of quitting your app (to allow you a custom quit procedure), so these events should take care of quitting your app.
- These events are now always run, if present (instead of only on
- Renamed
DSAVerificator
toDSAChecker
(@stephenwade) - Folder output changed to be more organized
- Updated LICENSE file
- Update NuGet package items
- deprecated property
EnableSilentMode
- property
RunningFromWPF
0.9.1.1 - 2017-06-06
ClearOldInstallers
Action that you can implement on your own to remove old installers. Use this if you download installers to a custom folder and need to erase them later.
- Fixed compilation issue with
EnableSilentMode
(not sure how I never came across this!)
0.9.1 - 2017-03-30
UpdateSize
toNetSparkleAppCastItem
, analogous to thelength
field within the<enclosure>
tagIsCriticalUpdate
toNetSparkleAppCastItem
- To use, add
sparkle:criticalUpdate="true"
as an attribute to the<enclosure>
tag - When any update that the user needs is marked as critical, the skip and remind me later buttons are disabled
- When an update is marked as critical, the release notes for that version state that the update is critical
- To do something about a critical update in your own software, check
Sparkle.LatestAppCastItems
orSparkle.UpdateMarkedCritical
to see if an update in the list of updates that the user needs is critical
- To use, add
0.9 - 2017-03-28
- Several more diagnostic messages for debugging on the console
- New
SilentMode
option to allow for the "normal" update process (NotSilent
), completely silent updates (DownloadAndInstall
), or silent downloads that you as the developer initiate the start of the update manually (DownloadNoInstall
)DownloadAndInstall
may be quite jarring to your users if you don't tell them the software is about to quit to restart. UseAboutToExitForInstallerRun
orAboutToExitForInstallerRunAsync
to monitor for these events.- For proper
DownloadNoInstall
use, monitor theDownloadedFileReady
event to know when things are ready. At some later time, call_sparkle.ShowUpdateNeededUI(true);
to show the software update window. You may want to monitor other events as well to keep your user from performing another update check while a software update is downloading.
TmpDownloadFilePath
to redirect the download location. This should be a folder, not a full path. Note that you still need to manually delete files that are downloaded here.
- Deprecated EnableSilentMode in lieu of SilentMode
- Stopped the software from redownloading the installer if it already exists on disk (saves bandwidth and time on the user's part)
- Note that NetSparkle does not perform resumable downloads in between software instances
- Fixed potential infinite software update download loop if the software keeps downloading corrupted files (corrupt files or ones that don't pass the DSA check).
For older changes, see HISTORY.md.