NetSparkle is a C#, cross-platform, highly-configurable software update framework with pre-built UI for .NET developers compatible with .NET 4.6.2/.NET 6+, WinForms, WPF, and Avalonia; uses Ed25519 signatures. View basic usage here in the README and try the samples for yourself.
Includes some things we'll want even without full trimming support (if it comes to that).
Notes:
[x] Adds <IsTrimmable>true</IsTrimmable> and <TrimMode>partial</TrimMode> to NetSparkle.csproj
[x] Adds unit tests for assembly accessors
[x] Adds new IAssemblyAccessor: AsmResolverAccessor
[x] Adds important docs to IAssemblyAccessor so users know where stuff is coming from
[x] Make sure semver data can be pulled properly (confirmed in unit tests)
[x] Add test project for trimming (console app) and see that it trims NetSparkle (it does)
[x] Currently, I have it set up with the newer BouncyCastle version. However, the app cast generator isn't wanting to trim assemblies, incl. BouncyCastle. Not sure why. Test and figure out if this is possible. (Note: setting TrimMode to full trims BouncyCastle, as does not specifying TrimMode at all. HOWEVER, nuget pack doesn't work/trim, so...maybe it is just time to replace BouncyCastle...).
Trimming app cast generator is not possible, it seems. (Not sure why you can't trim tools. I can't find any documentation that says you can do this, and dotnet pack just fails when trimming is on.)
[x] Need to test .NET 4.6.2 building
[x] There is an issue where unit tests fail on Windows due to being unable to delete one of the tmp files from building a DLL from the assembly tests. Not sure what's hanging onto it. Have done a hackfix for now so that tests don't outright fail-fail, but this needs to be fixed or worked around somehow. Probably need to crack out a windows machine to see what's going on here.
[x] Enable compiled bindings on Avalonia UI
[x] Switch to compiled bindings
[x] Enable .NET Framework tests to run automatically
See #585.
Includes some things we'll want even without full trimming support (if it comes to that).
Notes:
<IsTrimmable>true</IsTrimmable>
and<TrimMode>partial</TrimMode>
toNetSparkle.csproj
IAssemblyAccessor
:AsmResolverAccessor
IAssemblyAccessor
so users know where stuff is coming fromTrimMode
tofull
trims BouncyCastle, as does not specifyingTrimMode
at all. HOWEVER, nuget pack doesn't work/trim, so...maybe it is just time to replace BouncyCastle...).dotnet pack
just fails when trimming is on.)