diff --git a/Directory.Build.props b/Directory.Build.props index 476fafe..fe67d70 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,16 +1,17 @@ - + - 0.0.44 + 0.0.44 diff --git a/installer/Ezvpn.Installer.wixproj b/installer/Ezvpn.Installer.wixproj index 77550bc..7dd251c 100644 --- a/installer/Ezvpn.Installer.wixproj +++ b/installer/Ezvpn.Installer.wixproj @@ -16,9 +16,9 @@ user sees. --> 0.1.0.0 - $(EzvpnVersion) + (via ARPDISPLAYVERSION). Sourced from EzvpnAppVersion (Directory.Build.props) + so it matches the app version shown inside the app. --> + $(EzvpnAppVersion) diff --git a/native/native.targets b/native/native.targets index c00f83d..ed36d3b 100644 --- a/native/native.targets +++ b/native/native.targets @@ -27,9 +27,13 @@ + The tag (minus "v") is also surfaced as EzvpnCoreVersion, which Ezvpn.App + stamps into its assembly metadata so the UI can name the core it ships + next to the app's own version (EzvpnAppVersion in Directory.Build.props, + which is independent of this pin). A local core build (EZVPN_LOCAL_DLL) + still reports the pinned number: the local DLL carries none. --> v0.0.44 + $(EzvpnReleaseTag.TrimStart('v')) https://github.com/flexaccessdev/ezvpn/releases/download/$(EzvpnReleaseTag)/ezvpn-windows.dll.zip 8266f394ec55b0bffcd6ed283f2778fdd43c7c130fd1f92a8a6903fde406111e diff --git a/scripts/bump-dll.ps1 b/scripts/bump-dll.ps1 index 98aa35a..e379085 100644 --- a/scripts/bump-dll.ps1 +++ b/scripts/bump-dll.ps1 @@ -6,9 +6,10 @@ The Windows analog of ezvpn-apple's scripts/bump-xcframework.sh. Downloads the release's ezvpn-windows.dll.zip, computes its SHA256, and rewrites the EzvpnReleaseTag + EzvpnDllZipSha256 in native\native.targets so the app build - downloads that exact DLL by default (no local core build needed). It also updates - EzvpnVersion in Directory.Build.props to the same tag (minus the leading "v") so - the version shown in the app UI and in Add/Remove Programs tracks the bundled DLL. + downloads that exact DLL by default (no local core build needed). The app's own + version (EzvpnAppVersion in Directory.Build.props) is independent of the DLL pin + and is not touched; the UI shows the pinned core version next to it via the + EzvpnCoreVersion property native.targets derives from the tag. wintun.dll is pinned separately in native.targets and is not touched here. .PARAMETER Tag @@ -30,10 +31,7 @@ $Asset = 'ezvpn-windows.dll.zip' $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $Targets = Join-Path $ScriptDir '..\native\native.targets' -$BuildProps = Join-Path $ScriptDir '..\Directory.Build.props' - if (-not (Test-Path $Targets)) { throw "native.targets not found at $Targets" } -if (-not (Test-Path $BuildProps)) { throw "Directory.Build.props not found at $BuildProps" } if (-not $Tag) { if (-not (Get-Command gh -ErrorAction SilentlyContinue)) { @@ -68,19 +66,7 @@ if ($content -notmatch [regex]::Escape("$Sha]*>).*?()', "`${1}$Version`${2}" -if ($props -notmatch [regex]::Escape(">$Version")) { - throw "failed to rewrite EzvpnVersion in $BuildProps" -} -Set-Content -Path $BuildProps -Value $props -NoNewline - Write-Host "Pinned native.targets:" Write-Host " tag: $Tag" Write-Host " checksum: $Sha" Write-Host " url: $Url" -Write-Host "Synced Directory.Build.props:" -Write-Host " version: $Version" diff --git a/src/Ezvpn.App/AppInfo.cs b/src/Ezvpn.App/AppInfo.cs index 76a6522..3f58c30 100644 --- a/src/Ezvpn.App/AppInfo.cs +++ b/src/Ezvpn.App/AppInfo.cs @@ -3,16 +3,28 @@ namespace Ezvpn.App; /// -/// App-level metadata surfaced in the UI. The version comes from the assembly's -/// informational version (set by <Version> in Ezvpn.App.csproj, overridable -/// from CI); any build-metadata suffix (e.g. "+<commit>" added by SourceLink) -/// is trimmed off. +/// App-level metadata surfaced in the UI. The app version comes from the +/// assembly's informational version (set by <Version> in Ezvpn.App.csproj from +/// EzvpnAppVersion, overridable from CI); any build-metadata suffix (e.g. +/// "+<commit>" added by SourceLink) is trimmed off. The core version is the +/// pinned ezvpn.dll release (native.targets EzvpnReleaseTag), stamped into the +/// assembly as the "EzvpnCoreVersion" metadata entry. The two move independently. /// public static class AppInfo { /// The app version formatted for display, e.g. "v0.1.0". public static string Version { get; } = ComputeVersion(); + /// + /// The pinned ezvpn core release formatted for display, e.g. "v0.0.44". A + /// local core build (EZVPN_LOCAL_DLL) still reports the pinned number — the + /// local DLL carries none. + /// + public static string CoreVersion { get; } = ComputeCoreVersion(); + + /// Both numbers on one line, e.g. "v0.1.0 · core v0.0.44". + public static string Summary { get; } = $"{Version} · core {CoreVersion}"; + private static string ComputeVersion() { var informational = Assembly.GetExecutingAssembly() @@ -24,4 +36,13 @@ private static string ComputeVersion() return "v" + version; } + + private static string ComputeCoreVersion() + { + var core = Assembly.GetExecutingAssembly() + .GetCustomAttributes() + .FirstOrDefault(a => a.Key == "EzvpnCoreVersion")?.Value; + + return core is { Length: > 0 } ? "v" + core : "unknown"; + } } diff --git a/src/Ezvpn.App/Ezvpn.App.csproj b/src/Ezvpn.App/Ezvpn.App.csproj index 1542065..81b8459 100644 --- a/src/Ezvpn.App/Ezvpn.App.csproj +++ b/src/Ezvpn.App/Ezvpn.App.csproj @@ -7,9 +7,9 @@ Ezvpn.App app.manifest - $(EzvpnVersion) + $(EzvpnAppVersion) x64;arm64 win-x64;win-arm64 + + + + +