Common.Updater
1.0.4
dotnet add package Common.Updater --version 1.0.4
NuGet\Install-Package Common.Updater -Version 1.0.4
<PackageReference Include="Common.Updater" Version="1.0.4" />
<PackageVersion Include="Common.Updater" Version="1.0.4" />
<PackageReference Include="Common.Updater" />
paket add Common.Updater --version 1.0.4
#r "nuget: Common.Updater, 1.0.4"
#:package Common.Updater@1.0.4
#addin nuget:?package=Common.Updater&version=1.0.4
#tool nuget:?package=Common.Updater&version=1.0.4
π Common.Updater
A lightweight ClickOnce-compatible update service designed for Precitec desktop applications. It allows software to check for and install updates from a shared network folder (UNC path) β fully integrated with Dependency Injection and ClickOnce publishing.
β Features
β Automatically detects newer versions in shared folder
β Launches .application
or .exe
for upgrade
β Supports ClickOnce-based publishing and folder-based deployment
β Easily integrated with your WPF application startup
β Supports graceful restart after update
β Safe for use in DI and production-grade apps
π¦ Installation
Install via internal NuGet feed:
dotnet add package Common.Updater --version 1.0.x
π Setup in Your Application
1. Register in Startup.cs
or App.xaml.cs
services.AddCommonUpdater(
sharedFolder: @"\\po-s-dat\dsp\Software Produktion\_Tools\",
appName: "HPWLSBurnInTest"
);
π This will target:
\po-s-dat\dsp\Software Produktion\_Tools\HPWLSBurnInTest_Update\ClickOnce\Application Files\
2. Auto-Check and Update on Startup (Not supporter at the moment)
Instead of repeating update logic, just call:
await UpdaterHelper.AutoUpdateAndShutdownAsync(_host.Services, Log.Logger.Error);
- If an update is found, it launches and shuts down the app.
- If no update is found, the app starts normally.
3. Manual Use (Optional)
var updateService = serviceProvider.GetRequiredService<IUpdateService>();
var update = await updateService.CheckForUpdatesAsync();
if (update != null)
{
updateService.RunClickOnceUpdate(update);
await updateService.RestartSoftware();
}
π§© Publish Folder Structure
For each published version of the software, use:
\po-s-dat\dsp\Software Produktion\_Tools\
HPWLSBurnInTest_Update\
ClickOnce\
Application Files\
HPWLSBurnInTest_1_0_7\
HPWLSBurnInTest.application
β Enable βMake available offlineβ on the folder
β Make surePublish Version
increments with every publish
β UNC path must remain stable
π§Ύ UpdateInfo Model
public class UpdateInfo
{
public string Version { get; set; }
public string FileName { get; set; }
public string FileUrl { get; set; }
public string FileHash { get; set; }
public string ReleaseDate { get; set; }
public string Changelog { get; set; }
}
π Folder Structure
/Common.Updater
/UpdateInfo.cs
/IUpdateService.cs
/UpdateService.cs
/ServiceCollectionExtensions.cs
/UpdaterHelper.cs
π ClickOnce Publishing Checklist
- Set the
Publish Location
to:
\po-s-dat\dsp\Software Produktion\_Tools\HPWLSBurnInTest_Update\ClickOnce\
- Mark as βMake this folder available offlineβ
- Increment the publish version number for each release
- Rebuild
.application
for version control
β Future Features
- π HTTP(S) support for hosted deployments
- π Signature validation
- π Changelog display before update
- β³ Retry and timeout logic
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection (>= 9.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.