Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 35 additions & 3 deletions .github/workflows/publish-nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,29 @@ jobs:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- name: Install Mono / NuGet / .NET
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
echo ''
elif [ "$RUNNER_OS" == "Windows" ]; then
echo ''
else
nuget help || brew install nuget -q
softwareupdate --install-rosetta --agree-to-license
wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --architecture arm64 --channel 6.0
./dotnet-install.sh --architecture x64 --channel 6.0
./dotnet-install.sh --architecture arm64 --channel 7.0
./dotnet-install.sh --architecture x64 --channel 7.0
./dotnet-install.sh --architecture arm64 --channel 8.0
./dotnet-install.sh --architecture x64 --channel 8.0
./dotnet-install.sh --architecture arm64 --channel 9.0
./dotnet-install.sh --architecture x64 --channel 9.0
./dotnet-install.sh --architecture arm64 --channel 10.0
./dotnet-install.sh --architecture x64 --channel 10.0
fi
shell: bash
- uses: actions/checkout@v4.2.2
# - uses: nuget/setup-nuget@v2
# with:
Expand All @@ -23,14 +46,15 @@ jobs:
uses: microsoft/setup-msbuild@v2.0.0
if: matrix.os == 'windows-latest'

- name: Setup .NET 6.0, 7.0, 8.0, 9.0 for tests
- name: Setup .NET 6.0, 7.0, 8.0, 9.0, 10 for tests
uses: actions/setup-dotnet@v4.3.0
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
9.0.x
10.0.x

- name: Run NetSparkle.Tests in .NET 4.6.2
run: dotnet test -f net462 ${{ github.workspace }}/src/NetSparkle.Tests/NetSparkle.Tests.csproj
Expand Down Expand Up @@ -60,6 +84,12 @@ jobs:
- name: Run NetSparkle.Tests.AppCastGenerator in .NET 9
run: dotnet test -f net9.0 ${{ github.workspace }}/src/NetSparkle.Tests.AppCastGenerator/NetSparkle.Tests.AppCastGenerator.csproj

- name: Run NetSparkle.Tests in .NET 10
run: dotnet test -f net10.0 ${{ github.workspace }}/src/NetSparkle.Tests/NetSparkle.Tests.csproj

- name: Run NetSparkle.Tests.AppCastGenerator in .NET 10
run: dotnet test -f net10.0 ${{ github.workspace }}/src/NetSparkle.Tests.AppCastGenerator/NetSparkle.Tests.AppCastGenerator.csproj

build:
name: Build all packages as smoke test
runs-on: windows-latest
Expand All @@ -74,14 +104,15 @@ jobs:
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2.0.0

- name: Setup .NET 6.0, 7.0, 8.0, 9.0
- name: Setup .NET 6.0, 7.0, 8.0, 9.0, 10.0
uses: actions/setup-dotnet@v4.3.0
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
9.0.x
10.0.x

- name: Clean things to be safe
run: |
Expand Down Expand Up @@ -130,14 +161,15 @@ jobs:
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2.0.0

- name: Setup .NET 6.0, 7.0, 8.0, 9.0
- name: Setup .NET 6.0, 7.0, 8.0, 9.0, 10
uses: actions/setup-dotnet@v4.3.0
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
9.0.x
10.0.x

- name: Publish NetSparkleUpdater.SparkleUpdater on version change
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>

<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
Expand Down
8 changes: 7 additions & 1 deletion src/NetSparkle.Tests/NetSparkle.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<ProjectGuid>{E50AC3A5-6C63-40D7-A4C4-9B359EFD5707}</ProjectGuid>
<RootNamespace>NetSparkleUnitTests</RootNamespace>
<AssemblyName>NetSparkleUnitTests</AssemblyName>
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0;net462</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0;net462</TargetFrameworks>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
Expand Down Expand Up @@ -60,6 +60,12 @@
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net9.0|AnyCPU'">
<DefineConstants>DEBUG;TRACE;NETCORE;NET9</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net10.0|AnyCPU'">
<DefineConstants>TRACE;NETCORE;NET9</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net10.0|AnyCPU'">
<DefineConstants>DEBUG;TRACE;NETCORE;NET9</DefineConstants>
</PropertyGroup>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
Expand Down
2 changes: 1 addition & 1 deletion src/NetSparkle.Tests/SparkleUpdaterFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using NetSparkleUpdater.AppCastHandlers;
using NetSparkleUpdater.Interfaces;
using Xunit;
#if (NETSTANDARD || NET5 || NET6 || NET7 || NET8 || NET9)
#if (NETSTANDARD || NET5 || NET6 || NET7 || NET8 || NET9 || NET10)
using System.Runtime.InteropServices;
#endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<OutputType>Exe</OutputType>
<RootNamespace>NetSparkleUpdater.AppCastGenerator</RootNamespace>
<AssemblyName>NetSparkleUpdater.Tools.AppCastGenerator</AssemblyName>
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
Expand Down Expand Up @@ -48,10 +48,10 @@
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent />
<AssemblyVersion>2.8.6.0</AssemblyVersion>
<FileVersion>2.8.6.0</FileVersion>
<AssemblyVersion>2.9.0.0</AssemblyVersion>
<FileVersion>2.9.0.0</FileVersion>
<PackageId>NetSparkleUpdater.Tools.AppCastGenerator</PackageId>
<Version>2.8.6</Version>
<Version>2.9.0</Version>
<Authors>Deadpikle</Authors>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
<OutputType>Exe</OutputType>
<RootNamespace>NetSparkleUpdater.DSAHelper</RootNamespace>
<AssemblyName>NetSparkleUpdater.Tools.DSAHelper</AssemblyName>
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
<AssemblyTitle>NetSparkle</AssemblyTitle>
<Product>NetSparkleUpdater.Tools.DSAHelper</Product>
<Description>Command line tool 'netsparkle-dsa' to generate and use DSA signatures. WARNING: DSA signatures are insecure. If possible, please use NetSparkleUpdater.Tools.AppCastGenerator instead to use ed25519 signatures. Use in conjunction with the NetSparkleUpdater library.</Description>
<Copyright>Copyright © Dirk Eisenberg 2010, Deadpikle 2020-2025</Copyright>
<AssemblyVersion>2.2.2.0</AssemblyVersion>
<FileVersion>2.2.2.0</FileVersion>
<AssemblyVersion>2.3.0.0</AssemblyVersion>
<FileVersion>2.3.0.0</FileVersion>
<OutputPath>..\..\bin\$(Configuration)\NetSparkle.Tools.DSAHelper\</OutputPath>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>2.2.2</Version>
<Version>2.3.0</Version>
<Authors>Deadpikle</Authors>
<Company>Deadpikle</Company>
<PackAsTool>true</PackAsTool>
Expand Down
20 changes: 18 additions & 2 deletions src/NetSparkle.UI.Avalonia/NetSparkle.UI.Avalonia.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0;netstandard2.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0;netstandard2.0</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>NetSparkleUpdater.UI.Avalonia</PackageId>
<Version>3.0.4</Version>
<Version>3.1.0</Version>
<Authors>Deadpikle</Authors>
<Company>Deadpikle</Company>
<Product>NetSparkleUpdater.UI.Avalonia</Product>
Expand Down Expand Up @@ -64,6 +64,22 @@
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net9.0|AnyCPU'">
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net9.0|AnyCPU'">
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net10.0|AnyCPU'">
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net10.0|AnyCPU'">
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
<None Include="..\NetSparkle\ArtWork\software-update-available.png">
Expand Down
12 changes: 10 additions & 2 deletions src/NetSparkle.UI.WPF/NetSparkle.UI.WPF.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<ProjectGuid>{6915843C-7947-4268-B569-6F5684651DF4}</ProjectGuid>
<UseWPF>true</UseWPF>
<TargetFrameworks>net9.0-windows;net8.0-windows;net7.0-windows;net6.0-windows;net462</TargetFrameworks>
<TargetFrameworks>net10.0-windows;net9.0-windows;net8.0-windows;net7.0-windows;net6.0-windows;net462</TargetFrameworks>
<AssemblyTitle>NetSparkleUpdater.UI.WPF</AssemblyTitle>
<Product>NetSparkleUpdater.UI.WPF</Product>
<Copyright>Copyright © 2025</Copyright>
Expand All @@ -13,7 +13,7 @@
<PackageProjectUrl>https://github.com/NetSparkleUpdater/NetSparkle</PackageProjectUrl>
<RepositoryUrl>https://github.com/NetSparkleUpdater/NetSparkle.git</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<Version>3.0.4</Version>
<Version>3.1.0</Version>
<PackageIcon>software-update-available.png</PackageIcon>
<PackageIconUrl />
<Description>NetSparkleUpdater/NetSparkle app updater framework with built-in WPF .NET Core and .NET Framework UI. NetSparkleUpdater/NetSparkle is a C# .NET software update framework that allows you to easily download installer files and update your C# .NET Framework or .NET Core software. Built-in UIs are available for WinForms, WPF, and Avalonia. You provide, somewhere on the internet, an XML appcast with software version information along with release notes in Markdown or HTML format. The NetSparkle framework then checks for an update in the background, displays the release notes to the user, and lets users download or skip the software update. The framework can also perform silent downloads so that you can present all of the UI yourself or set up your own silent software update system, as allowed by your software architecture. It was inspired by the Sparkle (https://sparkle-project.org/) project for Cocoa developers and the WinSparkle (https://winsparkle.org/) project (a Win32 port).</Description>
Expand Down Expand Up @@ -51,6 +51,11 @@
<ItemGroup>
<ProjectReference Include="..\NetSparkle\NetSparkle.csproj" />
</ItemGroup>
<Target Name="_addDrawingReference" AfterTargets="ResolveTargetingPackAssets">
<ItemGroup Condition="'$(TargetFramework)' != 'net462'">
<Reference Condition="'%(Reference.FileName)' == 'PresentationCore'" Include="%(Reference.RootDir)%(Reference.Directory)System.Drawing.Common.dll" />
</ItemGroup>
</Target>
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-windows'">
<PackageReference Include="System.Drawing.Common" Version="8.0.19" />
</ItemGroup>
Expand All @@ -63,6 +68,9 @@
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0-windows'">
<PackageReference Include="System.Drawing.Common" Version="9.0.8" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0-windows'">
<PackageReference Include="System.Drawing.Common" Version="10.0.0" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
<None Include="..\NetSparkle\ArtWork\software-update-available.png" Pack="true" PackagePath="\" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
<RootNamespace>NetSparkleUpdater.UI.WinForms</RootNamespace>
<AssemblyName>NetSparkleUpdater.UI.WinForms</AssemblyName>
<UseWindowsForms>true</UseWindowsForms>
<TargetFrameworks>net9.0-windows;net8.0-windows;net7.0-windows;net6.0-windows</TargetFrameworks>
<TargetFrameworks>net10.0-windows;net9.0-windows;net8.0-windows;net7.0-windows;net6.0-windows</TargetFrameworks>
<AssemblyTitle>NetSparkle.NetFramework.WinForms</AssemblyTitle>
<Product>NetSparkleUpdater.UI.WinForms.NetCore</Product>
<Copyright>Copyright © 2025</Copyright>
<OutputPath>..\bin\$(Configuration)\NetSparkle.UI.WinForms\</OutputPath>
<PackageId>NetSparkleUpdater.UI.WinForms.NetCore</PackageId>
<Version>3.0.4</Version>
<Version>3.1.0</Version>
<Authors>Deadpikle</Authors>
<Company>Deadpikle</Company>
<Description>NetSparkleUpdater/NetSparkle app updater framework with built-in WinForms UI for .NET 5+. NetSparkle is a C# .NET software update framework that allows you to easily download installer files and update your C# .NET Framework or .NET Core software. Built-in UIs are available for WinForms, WPF, and Avalonia. You provide, somewhere on the internet, an app cast with software version information along with release notes in Markdown or HTML format. The NetSparkle framework then checks for an update in the background, displays the release notes to the user, and lets users download or skip the software update. The framework can also perform silent downloads so that you can present all of the UI yourself or set up your own silent software update system, as allowed by your software architecture. It was inspired by the Sparkle (https://sparkle-project.org/) project for Cocoa developers and the WinSparkle (https://winsparkle.org/) project (a Win32 port).</Description>
Expand Down Expand Up @@ -106,6 +106,9 @@
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0-windows'">
<PackageReference Include="System.Drawing.Common" Version="9.0.8" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0-windows'">
<PackageReference Include="System.Drawing.Common" Version="10.0.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
Expand Down
6 changes: 3 additions & 3 deletions src/NetSparkle/Configurations/RegistryConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.Globalization;
using Microsoft.Win32;
using NetSparkleUpdater.Interfaces;
#if (NETSTANDARD || NET6 || NET7 || NET8 || NET9)
#if (NETSTANDARD || NET6 || NET7 || NET8 || NET9 || NET10)
using System.Runtime.InteropServices;
#endif

Expand Down Expand Up @@ -134,7 +134,7 @@ private DateTime ConvertStringToDate(string str)
/// <returns><c>true</c> if the items were loaded successfully; false otherwise</returns>
private bool LoadValuesFromPath(string regPath)
{
#if (NETSTANDARD || NET6 || NET7 || NET8 || NET9)
#if (NETSTANDARD || NET6 || NET7 || NET8 || NET9 || NET10)
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return false;
Expand Down Expand Up @@ -206,7 +206,7 @@ private void SaveDidRunOnceAsTrue(string regPath)
/// <returns><c>true</c> if the values were saved to the registry; false otherwise</returns>
private bool SaveValuesToPath(string regPath)
{
#if (NETSTANDARD || NET6 || NET7 || NET8 || NET9)
#if (NETSTANDARD || NET6 || NET7 || NET8 || NET9 || NET10)
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return false;
Expand Down
16 changes: 13 additions & 3 deletions src/NetSparkle/NetSparkle.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0;netstandard2.0;net462</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0;netstandard2.0;net462</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>NetSparkleUpdater.SparkleUpdater</PackageId>
<Version>3.0.4</Version>
<Version>3.1.0</Version>
<Authors>Deadpikle, Dirk Eisenberg</Authors>
<Description>NetSparkleUpdater/NetSparkle is a C# .NET software update framework that allows you to easily download installer files and update your C# .NET Framework or .NET Core software. Built-in UIs are available for WinForms, WPF, and Avalonia; if you want a built-in UI, please reference a NetSparkleUpdater.UI package. You provide, somewhere on the internet, an XML appcast with software version information along with release notes in Markdown or HTML format. The NetSparkle framework then checks for an update in the background, displays the release notes to the user, and lets users download or skip the software update. The framework can also perform silent downloads so that you can present all of the UI yourself or set up your own silent software update system, as allowed by your software architecture. It was inspired by the Sparkle (https://sparkle-project.org/) project for Cocoa developers and the WinSparkle (https://winsparkle.org/) project (a Win32 port).</Description>
<Copyright>Copyright 2010 - 2025</Copyright>
Expand Down Expand Up @@ -92,6 +92,16 @@
<DocumentationFile>..\bin\Debug\NetSparkle\NetSparkle.xml</DocumentationFile>
<DefineConstants>DEBUG;TRACE;NETCORE;NET9</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net10.0|AnyCPU'">
<OutputPath>..\bin\Release\NetSparkle\</OutputPath>
<DocumentationFile>..\bin\Release\NetSparkle\NetSparkle.xml</DocumentationFile>
<DefineConstants>TRACE;NETCORE;NET10</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net10.0|AnyCPU'">
<OutputPath>..\bin\Debug\NetSparkle\</OutputPath>
<DocumentationFile>..\bin\Debug\NetSparkle\NetSparkle.xml</DocumentationFile>
<DefineConstants>DEBUG;TRACE;NETCORE;NET10</DefineConstants>
</PropertyGroup>
<!-- .NET 4.6.2 references, compilation flags and build options -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
<Reference Include="System" />
Expand All @@ -110,7 +120,7 @@
<PackageReference Include="System.Text.Json" Version="9.0.8" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NetSparkleUpdater.Chaos.NaCl" Version="0.9.3" />
<PackageReference Include="NetSparkleUpdater.Chaos.NaCl" Version="0.9.4" />
</ItemGroup>
<ItemGroup>
<Compile Remove="nuget\**" />
Expand Down
4 changes: 2 additions & 2 deletions src/NetSparkle/SparkleUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
using NetSparkleUpdater.AppCastHandlers;
using NetSparkleUpdater.AssemblyAccessors;
using System.Text;
#if NETSTANDARD || NET6 || NET7 || NET8 || NET9
#if NETSTANDARD || NET6 || NET7 || NET8 || NET9 || NET10
using System.Runtime.InteropServices;
#endif

Expand Down Expand Up @@ -274,7 +274,7 @@ public Configuration Configuration
{
if (_configuration == null)
{
#if NETSTANDARD || NET6 || NET7 || NET8 || NET9
#if NETSTANDARD || NET6 || NET7 || NET8 || NET9 || NET10
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
_configuration = new RegistryConfiguration(new AssemblyDiagnosticsAccessor(_appReferenceAssembly));
Expand Down
Loading