NetSparkleUpdater / NetSparkle

NetSparkle is a C# cross-platform software update framework for .NET developers compatible with .NET 4.6.2/.NET 6+, WinForms, WPF, and Avalonia; uses Ed25519 or DSA signatures! View basic usage here in the README or visit our website for code docs.
https://netsparkleupdater.github.io/NetSparkle/
MIT License
585 stars 81 forks source link

SemVer compare versions #573

Closed DanieleSky closed 2 months ago

DanieleSky commented 2 months ago

Hi, I'm using the preview version 3.0.0-preview20240120001 of .NET Sparkler Updater UI WPF. I've got a trouble when I use the semver version of my file because the updater discard the new versions. I think because the compare of versions is made on "version file" instead of "version" property.

How you can see in the screenshot I've got a 1.11.0-beta.3 version of my software and the appcast.xml contains the newer 1.11.0-beta.4. The log writes that 1.11.0-beta.4 is older than 1.11.0 and is true.. but the current version is 1.11.0-beta.3. image

I've tried to force the version file property to 1.11.0-beta.4 but dotnet don't like it:

image image

Do you think that is that use "version" property instead of "version file" could be the right way to resolve this issue?

Deadpikle commented 2 months ago

Hi,

Thanks for your report. I'm a little confused: The beta version is older, so NetSparkleUpdater is taking the right action by offering 1.11.0 (newer software) rather than 1.11.0-beta4 (older version technically). Are you wanting to let the user upgrade to any version, even if it's not the latest version...?

DanieleSky commented 2 months ago

Hi, I'm sorry but I explained myself badly. What I would like to say is that I created version 1.11.0-beta.3 but from my pipeline the file version is 1.11.0 because dotnet does not accept characters other than numbers. When I did version 1.11.0-beta.4 NetSparkle compares the version of the file with that of the appCast and, as you say, finds that 1.11.0 is new compared to 1.11.0-beta.4.

I tried to modify the code so that it doesn't consider the "version file" property but "version" and everything works. But I don't know if this change will impact other logics in any way. For now I'll test it in my enviroment and if it seems to me that everything is working well I'll let you know.

Deadpikle commented 2 months ago

Hi,

You can create your own IAssemblyAccessor and use that for the Configuration that you are using. The IAssemblyAccessor would be able to set your version number for your app as whatever you want it to be (and read it from wherever you want to read it from). That wouldn't require any changes to the NetSparkleUpdater code itself and should do what you want. :-)

Deadpikle commented 2 months ago

Oh, and don't worry about explaining well or not well. Don't worry about that at all. We're all here to help one another, and I appreciate you coming back and clarifying what was happening. :-)

DanieleSky commented 2 months ago

Hi, I've implemented the IAssemblyAccessor interface on my class and used for the Configuration and seems to work! I will do some tests and I'll return to you if something not work. Thanks!