mirror of
https://github.com/rmcrackan/Libation.git
synced 2026-09-12 13:47:16 -04:00
Three separate reasons the recovery added for #1878 could not help the install in issue #2001: Classification was by assembly name, covering only EntityFrameworkCore, Microsoft.Data.Sqlite and LibationUiBase, so a Serilog bind failure reached neither the emergency rollback nor an actionable message. Match on the assembly reference instead and compare the requested version against the file on disk, so the dialog can say which file is stale and what version it should be. A stale file and an absent one report identically through the loader, which is why the version has to be read to tell them apart. RestoreFromBackup wrote over assemblies this process had already loaded and mapped. That segfaulted the process on Linux and Windows denies the write, so the rollback never completed either way. Move the loaded file aside first and sweep the leavings on a later startup. Serilog.dll and three more assemblies Libation cannot start without were not in the upgrade manifest, so an overlay could lose one and still verify clean. Co-authored-by: rmcrackan <rmcrackan@gmail.com>
17 lines
503 B
C#
17 lines
503 B
C#
using System;
|
|
|
|
namespace LibationFileManager;
|
|
|
|
/// <summary>
|
|
/// An assembly the runtime could not bind to a usable file in Libation's install folder, with the version
|
|
/// the build was compiled against and the version actually on disk (null when the file is not there).
|
|
/// </summary>
|
|
public sealed record InstallAssemblyFailure(
|
|
string AssemblyName,
|
|
Version RequestedVersion,
|
|
Version? InstalledVersion,
|
|
string ExpectedPath)
|
|
{
|
|
public string FileName => System.IO.Path.GetFileName(ExpectedPath);
|
|
}
|