From 6a98ee377dd6c75784fcd57c973349ffc6a99eb5 Mon Sep 17 00:00:00 2001 From: JieXu Date: Fri, 12 Sep 2025 00:29:06 +0800 Subject: [PATCH] Update CheckUpdateViewModel.cs --- .../ViewModels/CheckUpdateViewModel.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index 9dd43a75..e287c84e 100644 --- a/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -61,8 +61,38 @@ public class CheckUpdateViewModel : MyReactiveObject CheckUpdateModels.Add(GetCheckUpdateModel(_geo)); } + private static bool IsPackagedInstall() + { + try + { + if (Utils.IsWindows()) + return false; + if (!string.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("APPIMAGE"))) + return true; + var sp = Utils.StartupPath()?.Replace('\\', '/'); + if (!string.IsNullOrEmpty(sp) && sp.StartsWith("/opt/v2rayN", StringComparison.Ordinal)) + return true; + var procPath = System.Environment.ProcessPath; + var procDir = string.IsNullOrEmpty(procPath) ? "" : System.IO.Path.GetDirectoryName(procPath)?.Replace('\\', '/'); + if (!string.IsNullOrEmpty(procDir) && procDir.StartsWith("/opt/v2rayN", StringComparison.Ordinal)) + return true; + } + catch { } + return false; + } + private CheckUpdateModel GetCheckUpdateModel(string coreType) { + if (coreType == _v2rayN && IsPackagedInstall()) + { + return new() + { + IsSelected = false, + CoreType = coreType, + Remarks = ResUI.menuCheckUpdate + " (Not Support)", + }; + } + return new() { IsSelected = _config.CheckUpdateItem.SelectedCoreTypes?.Contains(coreType) ?? true, @@ -104,6 +134,11 @@ public class CheckUpdateViewModel : MyReactiveObject } else if (item.CoreType == _v2rayN) { + if (IsPackagedInstall()) + { + await UpdateView(_v2rayN, "Not Support"); + continue; + } await CheckUpdateN(EnableCheckPreReleaseUpdate); } else if (item.CoreType == ECoreType.Xray.ToString())