NetSparkle icon indicating copy to clipboard operation
NetSparkle copied to clipboard

AssemblyDiagnosticsAccessor doesn't work on Linux binaries

Open TheTrueColonel opened this issue 1 month ago • 1 comments

When trying to use AssemblyDiagnosticsAccessor or the default SparkleUpdater.Configuration, a runtime error will be thrown giving the following stacktrace:

Unhandled exception. NetSparkleUpdater.NetSparkleException: Error: NetSparkleUpdater is missing the company or product name tag in the assembly accessor (NetSparkleUpdater.AssemblyAccessors.AssemblyDiagnosticsAccessor)
   at NetSparkleUpdater.Configurations.JSONConfiguration.GetSavePath()
   at NetSparkleUpdater.Configurations.JSONConfiguration..ctor(IAssemblyAccessor assemblyAccessor, String savePath)
   at NetSparkleUpdater.Configurations.JSONConfiguration..ctor(IAssemblyAccessor assemblyAccessor)
   at ShinRyuModManager.UserInterface.Updater.AutoUpdating.Init()
   at ShinRyuModManager.UserInterface.Views.MainWindow..ctor()
   at ShinRyuModManager.UserInterface.App.OnFrameworkInitializationCompleted()
   at Avalonia.AppBuilder.SetupUnsafe()
   at Avalonia.AppBuilder.Setup()
   at Avalonia.AppBuilder.SetupWithLifetime(IApplicationLifetime lifetime)
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, Action`1 lifetimeBuilder)
   at ShinRyuModManager.Program.Main(String[] args)

According to the error, it claims that I'm missing a <Company> or <Product> tag, but on my builds, I have both of those set. Here's a snippet of my *.csproj

<!-- Versioning -->
<AssemblyVersion>1.2.2</AssemblyVersion>
<VersionPrefix>$(AssemblyVersion)</VersionPrefix>
<AssemblyTitle>ShinRyuModManager-CE</AssemblyTitle>
<Company>SRMM Studio</Company>
<Product>ShinRyuModManager-CE</Product>
<Copyright>2025 SRMM Studio</Copyright>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>

I believe this might be a problem with using FileVersionInfo.GetVersionInfo() on a Linux binary, as referenced here. Forcing the use of reflection with Configuration = new JSONConfiguration(new AssemblyReflectionAccessor(null)) has worked just fine though.

TheTrueColonel avatar Nov 09 '25 19:11 TheTrueColonel