Compare commits

...

53 Commits
6.26 ... 6.29

Author SHA1 Message Date
2dust
3c2da0a225 up 6.29 2023-09-24 16:17:54 +08:00
2dust
528400579a Merge pull request #4255 from crazypeace/master
解决当订阅数量较多时,占用窗口空间太大的问题
2023-09-22 14:57:07 +08:00
2dust
521ce1a487 Merge pull request #4235 from YheonYeung/patch-1
修正繁中用詞
2023-09-22 14:56:17 +08:00
crazypeace
34c6c953ac 考虑在更大的屏幕上可以接受更高尺寸的占用
https://zelikk.blogspot.com/2023/09/v2rayn-lstgroup-maxheight.html
2023-09-09 15:59:08 +08:00
crazypeace
40fbbc7c58 设置 订阅/分组 显示空间的最大高度
避免占用过大的窗口面积
https://github.com/2dust/v2rayN/issues/4224
2023-09-09 15:00:59 +08:00
YheonYeung
534c329970 Update ResUI.zh-Hant.resx 2023-09-01 23:42:07 +08:00
YheonYeung
328d728257 Update ResUI.zh-Hant.resx 2023-09-01 23:39:16 +08:00
YheonYeung
fae6d42758 Update ResUI.zh-Hant.resx 2023-09-01 23:33:39 +08:00
YheonYeung
27693f6d23 Update ResUI.zh-Hant.resx 2023-09-01 23:31:24 +08:00
YheonYeung
89c4bab5b9 Update ResUI.zh-Hant.resx 2023-09-01 23:29:19 +08:00
YheonYeung
9d2ff04838 Update ResUI.zh-Hant.resx 2023-09-01 23:27:15 +08:00
YheonYeung
cf00243107 Update ResUI.zh-Hant.resx 2023-09-01 23:25:12 +08:00
YheonYeung
e8019ba7a5 修正繁中用詞 2023-09-01 23:21:10 +08:00
2dust
4f30e3f0e3 Merge pull request #4149 from eltociear/patch-1
fix typo in MainForm.cs
2023-08-02 10:15:55 +08:00
Ikko Eltociear Ashimine
047d08470f fix typo in MainForm.cs
entryOuputPath -> entryOutputPath
2023-08-02 00:33:10 +09:00
2dust
9643695389 Merge pull request #4144 from chika0801/master
修正 juicity 启动参数少了 run
2023-07-31 09:21:33 +08:00
chika0801
5cabec86e7 修正 juicity 启动参数少了 run
它的客户端启动参数是 ./juicity-client run -c config.json

https://github.com/juicity/juicity/blob/main/cmd/client/README.md#run
2023-07-30 21:33:12 +08:00
2dust
f2d0e37255 Merge pull request #4141 from chika0801/master
添加 juicity 作为自定义 core
2023-07-30 18:26:36 +08:00
chika0801
9560851a3f add juicity 2023-07-30 16:37:44 +08:00
chika0801
4aeec1caa1 add juicity 2023-07-30 16:36:48 +08:00
chika0801
ae45b1ef44 Update Global.cs 2023-07-30 16:33:11 +08:00
2dust
aad1b087c9 Up 6.28 2023-07-30 14:30:20 +08:00
2dust
b69c581fa1 Merge pull request #4123 from openGiraffes/master
繁体字典添加
2023-07-30 11:08:24 +08:00
2dust
9eb4d90cd6 Merge pull request #4122 from yu0A/master
Fix timestamps in log TextBox
2023-07-30 11:08:14 +08:00
Ding
958567c2c5 繁體支持 2023-07-24 10:55:45 +08:00
yu0A
f1fc4583ed fix #4121 2023-07-23 21:20:36 +08:00
Ding
f7bfd5f766 upload part1 2023-07-21 17:57:16 +08:00
2dust
aadc3c216a Merge pull request #4055 from meaqese/meaqese-patch-1
Russian lang improvements
2023-07-10 15:27:43 +08:00
2dust
6fd2499daf Merge pull request #4048 from crazypeace/master
解决窗口尺寸大于屏幕尺寸的问题 #
2023-07-10 15:26:20 +08:00
meaqese
f0405f1c5d imporvements 2 2023-07-04 21:16:01 +03:00
crazypeace
1914cb3994 Delete dotnet-desktop.yml 2023-07-03 01:50:27 +08:00
crazypeace
ab38fb572d Update dotnet-desktop.yml 2023-07-02 19:52:42 +08:00
crazypeace
46d7128a6e Update dotnet-desktop.yml 2023-07-02 19:49:09 +08:00
crazypeace
0821884ff3 Create dotnet-desktop.yml 2023-07-02 19:45:15 +08:00
crazypeace
62233281ef 与上游一致 2023-07-02 12:40:01 +08:00
crazypeace
39504502af Update AddServerWindow.xaml.cs 2023-07-02 12:22:17 +08:00
crazypeace
f97530a671 设置窗口的尺寸不大于屏幕的尺寸 2023-07-02 12:15:51 +08:00
crazypeace
0fe7d5e598 Update AddServerWindow.xaml.cs 2023-07-01 04:53:42 +08:00
crazypeace
527362dc9f 初始化窗口宽和高的最大值, 依据工作区的宽和高.
解决在笔记本屏幕上因为DPI较高导致窗口显示不全的问题.
2023-06-30 13:29:43 +08:00
meaqese
1023426c8d Russian imporvements 2023-06-18 12:34:53 +03:00
2dust
4458fd7541 Up 6.27 2023-06-18 16:44:03 +08:00
2dust
f0b03f59ff Up PackageReference 2023-06-18 16:33:18 +08:00
2dust
d5b17b3cfb Update MainWindowViewModel.cs 2023-06-18 16:23:03 +08:00
2dust
9664d1d77f Fix update the pre version 2023-06-18 16:18:50 +08:00
2dust
d329646a52 Merge pull request #3989 from hvvvvvvv/v2rayN_2
Update HotkeyHandler.cs
2023-06-18 09:43:50 +08:00
2dust
8eafe72bb0 Merge pull request #3943 from hsbtr/master
feat: pac rule add chat.openai.com
2023-06-18 09:43:31 +08:00
2dust
c38a0bde65 Optimize interface 2023-06-18 09:42:45 +08:00
2dust
eef5d3cc16 Update DNSSettingWindow.xaml.cs
https://github.com/2dust/v2rayN/issues/3992
2023-06-18 08:49:04 +08:00
咸鱼而已
59ada594a5 Merge pull request #1 from hvvvvvvv/hvvvvvvv-patch-1
Update HotkeyHandler.cs
2023-06-15 17:12:03 +08:00
咸鱼而已
5ec1d18143 Update HotkeyHandler.cs
fix bug
2023-06-15 16:58:04 +08:00
2dust
fd1e1bb6bf AddServerView CanResize 2023-06-11 19:57:00 +08:00
2dust
5d545d8a85 bug fixes 2023-06-08 20:36:13 +08:00
liuyan
e38bc45527 feat: pac rule add chat.openai.com 2023-06-05 17:42:06 +08:00
34 changed files with 1405 additions and 84 deletions

View File

@@ -5982,7 +5982,8 @@ var rules = [
"zyzc9.com", "zyzc9.com",
"zzcartoon.com", "zzcartoon.com",
"zzcloud.me", "zzcloud.me",
"zzux.com" "zzux.com",
"chat.openai.com"
] ]
] ]
]; ];

View File

@@ -9,8 +9,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.23.2" /> <PackageReference Include="Google.Protobuf" Version="3.23.3" />
<PackageReference Include="Grpc.Net.Client" Version="2.53.0" /> <PackageReference Include="Grpc.Net.Client" Version="2.54.0" />
<PackageReference Include="Grpc.Tools" Version="2.54.0"> <PackageReference Include="Grpc.Tools" Version="2.54.0">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

View File

@@ -70,5 +70,15 @@ namespace v2rayN.Base
return value; return value;
} }
} }
public static string UpperFirstChar(this string value)
{
if (string.IsNullOrEmpty(value))
{
return string.Empty;
}
return char.ToUpper(value[0]) + value.Substring(1);
}
} }
} }

View File

@@ -22,6 +22,7 @@
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat"; public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
public const string singboxGeoUrl = "https://github.com/soffchen/sing-{0}/releases/latest/download/{0}.db"; public const string singboxGeoUrl = "https://github.com/soffchen/sing-{0}/releases/latest/download/{0}.db";
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204"; public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
public const string juicityCoreUrl = "https://github.com/juicity/juicity/releases";
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/"; public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw="; public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
@@ -149,7 +150,7 @@
public static readonly List<string> allowInsecures = new() { "true", "false", "" }; public static readonly List<string> allowInsecures = new() { "true", "false", "" };
public static readonly List<string> domainStrategy4Freedoms = new() { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" }; public static readonly List<string> domainStrategy4Freedoms = new() { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" };
public static readonly List<string> Languages = new() { "zh-Hans", "en", "fa-Ir", "ru" }; public static readonly List<string> Languages = new() { "zh-Hans", "zh-Hant", "en", "fa-Ir", "ru" };
public static readonly List<string> alpns = new() { "h2", "http/1.1", "h2,http/1.1", "" }; public static readonly List<string> alpns = new() { "h2", "http/1.1", "h2,http/1.1", "" };
public static readonly List<string> LogLevel = new() { "debug", "info", "warning", "error", "none" }; public static readonly List<string> LogLevel = new() { "debug", "info", "warning", "error", "none" };
public static readonly List<string> InboundTags = new() { "socks", "http", "socks2", "http2" }; public static readonly List<string> InboundTags = new() { "socks", "http", "socks2", "http2" };
@@ -170,4 +171,4 @@
#endregion global variable #endregion global variable
} }
} }

View File

@@ -369,6 +369,10 @@ namespace v2rayN.Handler
{ {
return -1; return -1;
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -590,7 +594,7 @@ namespace v2rayN.Handler
profileItem.configType = EConfigType.Custom; profileItem.configType = EConfigType.Custom;
if (Utils.IsNullOrEmpty(profileItem.remarks)) if (Utils.IsNullOrEmpty(profileItem.remarks))
{ {
profileItem.remarks = $"import custom@{DateTime.Now.ToShortDateString()}"; profileItem.remarks = $"import custom@{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}";
} }
AddServerCommon(ref config, profileItem, true); AddServerCommon(ref config, profileItem, true);
@@ -636,6 +640,10 @@ namespace v2rayN.Handler
{ {
return -1; return -1;
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -675,6 +683,10 @@ namespace v2rayN.Handler
{ {
profileItem.streamSecurity = Global.StreamSecurity; profileItem.streamSecurity = Global.StreamSecurity;
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -800,6 +812,10 @@ namespace v2rayN.Handler
{ {
profileItem.flow = Global.flows.First(); profileItem.flow = Global.flows.First();
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);

View File

@@ -152,7 +152,7 @@ namespace v2rayN.Handler
private void CoreStart(ProfileItem node) private void CoreStart(ProfileItem node)
{ {
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString())); ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")));
ECoreType coreType; ECoreType coreType;
if (node.configType != EConfigType.Custom && _config.tunModeItem.enableTun) if (node.configType != EConfigType.Custom && _config.tunModeItem.enableTun)
@@ -201,7 +201,7 @@ namespace v2rayN.Handler
private int CoreStartViaString(string configStr) private int CoreStartViaString(string configStr)
{ {
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString())); ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")));
try try
{ {

View File

@@ -113,9 +113,9 @@ namespace v2rayN.Handler
var mdif = (KeyModifiers)_fsModifiers; var mdif = (KeyModifiers)_fsModifiers;
var key = KeyInterop.KeyFromVirtualKey(_vkey); var key = KeyInterop.KeyFromVirtualKey(_vkey);
if ((mdif | KeyModifiers.Ctrl) == KeyModifiers.Ctrl) _hotkeyStr.Append($"{KeyModifiers.Ctrl}+"); if ((mdif & KeyModifiers.Ctrl) == KeyModifiers.Ctrl) _hotkeyStr.Append($"{KeyModifiers.Ctrl}+");
if ((mdif | KeyModifiers.Alt) == KeyModifiers.Alt) _hotkeyStr.Append($"{KeyModifiers.Alt}+"); if ((mdif & KeyModifiers.Alt) == KeyModifiers.Alt) _hotkeyStr.Append($"{KeyModifiers.Alt}+");
if ((mdif | KeyModifiers.Shift) == KeyModifiers.Shift) _hotkeyStr.Append($"{KeyModifiers.Shift}+"); if ((mdif & KeyModifiers.Shift) == KeyModifiers.Shift) _hotkeyStr.Append($"{KeyModifiers.Shift}+");
_hotkeyStr.Append(key.ToString()); _hotkeyStr.Append(key.ToString());
foreach (var name in _hotkeyTriggerDic[hotkeycode]) foreach (var name in _hotkeyTriggerDic[hotkeycode])

View File

@@ -353,8 +353,16 @@ namespace v2rayN.Handler
match = "sing-box", match = "sing-box",
versionArg = "version", versionArg = "version",
}); });
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.juicity,
coreExes = new List<string> { "juicity-client", "juicity" },
arguments = "run -c config.json",
coreUrl = Global.juicityCoreUrl
});
} }
#endregion Core Type #endregion Core Type
} }
} }

View File

@@ -26,7 +26,7 @@ namespace v2rayN.Handler
public void SendMessage(string msg, bool time) public void SendMessage(string msg, bool time)
{ {
msg = $"{DateTime.Now} {msg}"; msg = $"{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} {msg}";
MessageBus.Current.SendMessage(msg, "MsgView"); MessageBus.Current.SendMessage(msg, "MsgView");
} }
} }

View File

@@ -629,7 +629,7 @@ namespace v2rayN.Handler
server.security = details.Groups["method"].Value; server.security = details.Groups["method"].Value;
server.id = details.Groups["password"].Value; server.id = details.Groups["password"].Value;
server.address = details.Groups["hostname"].Value; server.address = details.Groups["hostname"].Value;
server.port = int.Parse(details.Groups["port"].Value); server.port = Utils.ToInt(details.Groups["port"].Value);
return server; return server;
} }

View File

@@ -514,7 +514,7 @@ namespace v2rayN.Handler
throw new ArgumentException("Type"); throw new ArgumentException("Type");
} }
if (curVersion >= version) if (curVersion >= version && version != new SemanticVersion(0, 0, 0))
{ {
AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message)); AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message));
return; return;

View File

@@ -160,7 +160,7 @@ namespace v2rayN.Mode
public class TunModeItem public class TunModeItem
{ {
public bool enableTun { get; set; } public bool enableTun { get; set; }
public bool strictRoute { get; set; } public bool strictRoute { get; set; } = true;
public string stack { get; set; } public string stack { get; set; }
public int mtu { get; set; } public int mtu { get; set; }
public bool enableExInbound { get; set; } public bool enableExInbound { get; set; }

View File

@@ -12,6 +12,7 @@
naiveproxy = 22, naiveproxy = 22,
tuic = 23, tuic = 23,
sing_box = 24, sing_box = 24,
juicity = 25,
v2rayN = 99 v2rayN = 99
} }
} }

View File

@@ -317,7 +317,7 @@
<value>Сканирование URL-адреса импорта успешна.</value> <value>Сканирование URL-адреса импорта успешна.</value>
</data> </data>
<data name="TestMeOutput" xml:space="preserve"> <data name="TestMeOutput" xml:space="preserve">
<value>Пинг текущей службы: {0} мс</value> <value>Задержка текущего сервера: {0} мс</value>
</data> </data>
<data name="OperationSuccess" xml:space="preserve"> <data name="OperationSuccess" xml:space="preserve">
<value>Операция успешна</value> <value>Операция успешна</value>
@@ -335,7 +335,7 @@
<value>Примечания</value> <value>Примечания</value>
</data> </data>
<data name="LvUrl" xml:space="preserve"> <data name="LvUrl" xml:space="preserve">
<value>Url(Необязательно)</value> <value>URL (необязательно)</value>
</data> </data>
<data name="LvCount" xml:space="preserve"> <data name="LvCount" xml:space="preserve">
<value>Количество</value> <value>Количество</value>
@@ -506,7 +506,7 @@
<value>Тёмный режим</value> <value>Тёмный режим</value>
</data> </data>
<data name="TbSettingsFollowSystemTheme" xml:space="preserve"> <data name="TbSettingsFollowSystemTheme" xml:space="preserve">
<value>следить за системной темой</value> <value>Следить за системной темой</value>
</data> </data>
<data name="TbSettingsLanguage" xml:space="preserve"> <data name="TbSettingsLanguage" xml:space="preserve">
<value>Язык (требуется перезапуск)</value> <value>Язык (требуется перезапуск)</value>
@@ -533,19 +533,19 @@
<value>Очистить всю статистику</value> <value>Очистить всю статистику</value>
</data> </data>
<data name="menuPingServer" xml:space="preserve"> <data name="menuPingServer" xml:space="preserve">
<value>Проверить пинг серверов (Ctrl+P)</value> <value>Тест на задержку сервера (Ctrl+P)</value>
</data> </data>
<data name="menuRealPingServer" xml:space="preserve"> <data name="menuRealPingServer" xml:space="preserve">
<value>Тест на реальную задержку серверов (Ctrl+R)</value> <value>Тест на реальную задержку сервера (Ctrl+R)</value>
</data> </data>
<data name="menuSortServerResult" xml:space="preserve"> <data name="menuSortServerResult" xml:space="preserve">
<value>Сортировать по результату теста</value> <value>Сортировать по результату теста</value>
</data> </data>
<data name="menuSpeedServer" xml:space="preserve"> <data name="menuSpeedServer" xml:space="preserve">
<value>Проверить скорость загрузки серверов (Ctrl+T)</value> <value>Тест на скорость загрузки сервера (Ctrl+T)</value>
</data> </data>
<data name="menuTcpingServer" xml:space="preserve"> <data name="menuTcpingServer" xml:space="preserve">
<value>Тестировать сервера с tcping (Ctrl+O)</value> <value>Тест задержки с tcping (Ctrl+O)</value>
</data> </data>
<data name="menuTestMe" xml:space="preserve"> <data name="menuTestMe" xml:space="preserve">
<value>Проверить текущий статус службы</value> <value>Проверить текущий статус службы</value>
@@ -644,7 +644,7 @@
<value>Тип камуфляжа</value> <value>Тип камуфляжа</value>
</data> </data>
<data name="TbId" xml:space="preserve"> <data name="TbId" xml:space="preserve">
<value>UUID(id)</value> <value>UUID (id)</value>
</data> </data>
<data name="TbNetwork" xml:space="preserve"> <data name="TbNetwork" xml:space="preserve">
<value>Транспортный протокол сети</value> <value>Транспортный протокол сети</value>
@@ -656,7 +656,7 @@
<value>Порт</value> <value>Порт</value>
</data> </data>
<data name="TbRemarks" xml:space="preserve"> <data name="TbRemarks" xml:space="preserve">
<value>Псевдоним (примечания)</value> <value>Примечание</value>
</data> </data>
<data name="TbRequestHost" xml:space="preserve"> <data name="TbRequestHost" xml:space="preserve">
<value>Маскирующий домен (хост)</value> <value>Маскирующий домен (хост)</value>
@@ -719,16 +719,22 @@
<value>Разрешить подключения из локальной сети</value> <value>Разрешить подключения из локальной сети</value>
</data> </data>
<data name="TbSettingsAutoHideStartup" xml:space="preserve"> <data name="TbSettingsAutoHideStartup" xml:space="preserve">
<value>Auto hide startup</value> <value>Автоскрытие при автозапуске</value>
</data> </data>
<data name="TbSettingsAutoUpdateInterval" xml:space="preserve"> <data name="TbSettingsAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления Geo в часах</value> <value>Интервал автоматического обновления Geo в часах</value>
</data> </data>
<data name="LvAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления в минутах</value>
</data>
<data name="TbSettingsCore" xml:space="preserve"> <data name="TbSettingsCore" xml:space="preserve">
<value>Ядро: базовые настройки</value> <value>Ядро: базовые настройки</value>
</data> </data>
<data name="TbSettingsCoreDns" xml:space="preserve"> <data name="TbSettingsCoreDns" xml:space="preserve">
<value>V2ray DNS settings</value> <value>Настройки DNS V2ray</value>
</data>
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
<value>Настройки DNS sing-box</value>
</data> </data>
<data name="TbSettingsCoreKcp" xml:space="preserve"> <data name="TbSettingsCoreKcp" xml:space="preserve">
<value>Ядро: настройки KCP</value> <value>Ядро: настройки KCP</value>
@@ -806,7 +812,7 @@
<value>Включить протокол безопасности TLS v1.3 (обновление подписки)</value> <value>Включить протокол безопасности TLS v1.3 (обновление подписки)</value>
</data> </data>
<data name="TbSettingsTrayMenuServersLimit" xml:space="preserve"> <data name="TbSettingsTrayMenuServersLimit" xml:space="preserve">
<value>Tray right-click menu servers display limit</value> <value>Лимит серверов в меню трея</value>
</data> </data>
<data name="TbSettingsUdpEnabled" xml:space="preserve"> <data name="TbSettingsUdpEnabled" xml:space="preserve">
<value>Включить UDP</value> <value>Включить UDP</value>
@@ -950,7 +956,7 @@
<value>Поддержка DnsObject</value> <value>Поддержка DnsObject</value>
</data> </data>
<data name="SubUrlTips" xml:space="preserve"> <data name="SubUrlTips" xml:space="preserve">
<value>Group please leave blank here</value> <value>Необязательное поле</value>
</data> </data>
<data name="TipChangeRouting" xml:space="preserve"> <data name="TipChangeRouting" xml:space="preserve">
<value>Настройки маршрутизации изменены</value> <value>Настройки маршрутизации изменены</value>
@@ -962,7 +968,7 @@
<value>Только маршрут</value> <value>Только маршрут</value>
</data> </data>
<data name="menuMixedTestServer" xml:space="preserve"> <data name="menuMixedTestServer" xml:space="preserve">
<value>Тест задержки и скорости (Ctrl+E)</value> <value>Тест задержки и скорости всех серверов (Ctrl+E)</value>
</data> </data>
<data name="LvTestDelay" xml:space="preserve"> <data name="LvTestDelay" xml:space="preserve">
<value>Задержка (ms)</value> <value>Задержка (ms)</value>
@@ -983,7 +989,7 @@
<value>Импортировать старый конфиг guiNConfig</value> <value>Импортировать старый конфиг guiNConfig</value>
</data> </data>
<data name="TbEnableTunAs" xml:space="preserve"> <data name="TbEnableTunAs" xml:space="preserve">
<value>Включить интерфейс</value> <value>Режим VPN</value>
</data> </data>
<data name="TbSettingsNewPort4LAN" xml:space="preserve"> <data name="TbSettingsNewPort4LAN" xml:space="preserve">
<value>Новый порт для локальной сети</value> <value>Новый порт для локальной сети</value>
@@ -1051,4 +1057,19 @@
<data name="TbSettingsEnableHWA" xml:space="preserve"> <data name="TbSettingsEnableHWA" xml:space="preserve">
<value>Включить аппаратное ускорение (требуется перезагрузка)</value> <value>Включить аппаратное ускорение (требуется перезагрузка)</value>
</data> </data>
</root> <data name="menuRebootAsAdmin" xml:space="preserve">
<value>Перезагрузить как администратор</value>
</data>
<data name="menuDNSSetting" xml:space="preserve">
<value>Настройки DNS</value>
</data>
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
<value>Включить логгирование в файл</value>
</data>
<data name="TbSettingsSpeedTestTimeout" xml:space="preserve">
<value>Таймаут одиночного спидтеста</value>
</data>
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
<value>URL спидтеста</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -45,7 +45,7 @@ namespace v2rayN.Tool
this.major = 0; this.major = 0;
this.minor = 0; this.minor = 0;
this.patch = 0; this.patch = 0;
this.version = "0.0.0"; //this.version = "0.0.0";
} }
} }

View File

@@ -1529,7 +1529,7 @@ namespace v2rayN.ViewModels
private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange) private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange)
{ {
SysProxyHandle.UpdateSysProxy(_config, _config.tunModeItem.enableTun ? true : false); SysProxyHandle.UpdateSysProxy(_config, _config.tunModeItem.enableTun ? true : false);
_noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy, true); _noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy + _config.sysProxyType.ToString(), true);
Application.Current.Dispatcher.Invoke((Action)(() => Application.Current.Dispatcher.Invoke((Action)(() =>
{ {

View File

@@ -11,6 +11,17 @@ namespace v2rayN.Views
public AddServer2Window(ProfileItem profileItem) public AddServer2Window(ProfileItem profileItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
ViewModel = new AddServer2ViewModel(profileItem, this); ViewModel = new AddServer2ViewModel(profileItem, this);

View File

@@ -15,7 +15,7 @@
x:TypeArguments="vms:AddServerViewModel" x:TypeArguments="vms:AddServerViewModel"
Background="{DynamicResource MaterialDesignPaper}" Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}" FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
ResizeMode="NoResize" ResizeMode="CanResize"
ShowInTaskbar="False" ShowInTaskbar="False"
TextElement.FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}" TextElement.FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
TextElement.Foreground="{DynamicResource MaterialDesignBody}" TextElement.Foreground="{DynamicResource MaterialDesignBody}"

View File

@@ -15,6 +15,17 @@ namespace v2rayN.Views
public AddServerWindow(ProfileItem profileItem) public AddServerWindow(ProfileItem profileItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
cmbNetwork.SelectionChanged += CmbNetwork_SelectionChanged; cmbNetwork.SelectionChanged += CmbNetwork_SelectionChanged;

View File

@@ -4,6 +4,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:v2rayN.Converters" xmlns:conv="clr-namespace:v2rayN.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:reactiveui="http://reactiveui.net" xmlns:reactiveui="http://reactiveui.net"
xmlns:resx="clr-namespace:v2rayN.Resx" xmlns:resx="clr-namespace:v2rayN.Resx"
@@ -84,13 +85,15 @@
Cursor="Hand" Cursor="Hand"
Style="{StaticResource DefButton}" /> Style="{StaticResource DefButton}" />
</StackPanel> </StackPanel>
<TextBox <TextBox
x:Name="txtnormalDNS" x:Name="txtnormalDNS"
Margin="{StaticResource SettingItemMargin}" Margin="{StaticResource SettingItemMargin}"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
materialDesign:HintAssist.Hint="Http/Socks"
AcceptsReturn="True" AcceptsReturn="True"
BorderThickness="1" BorderThickness="1"
Style="{StaticResource DefTextBox}" Style="{StaticResource MaterialDesignOutlinedTextBox}"
TextWrapping="Wrap" TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" /> VerticalScrollBarVisibility="Auto" />
</DockPanel> </DockPanel>
@@ -122,35 +125,29 @@
<ColumnDefinition Width="1*" /> <ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<GroupBox <TextBox
x:Name="txtnormalDNS2"
Grid.Column="0" Grid.Column="0"
Header="" VerticalAlignment="Stretch"
Style="{StaticResource MyGroupBox}"> materialDesign:HintAssist.Hint="Http/Socks"
<TextBox AcceptsReturn="True"
x:Name="txtnormalDNS2" BorderThickness="1"
Margin="{StaticResource SettingItemMargin}" Style="{StaticResource MaterialDesignOutlinedTextBox}"
VerticalAlignment="Stretch" TextWrapping="Wrap"
AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
BorderThickness="1"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" /> <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
<GroupBox
<TextBox
x:Name="txttunDNS2"
Grid.Column="2" Grid.Column="2"
Header="{x:Static resx:ResUI.TbSettingsTunMode}" VerticalAlignment="Stretch"
Style="{StaticResource MyGroupBox}"> materialDesign:HintAssist.Hint="{x:Static resx:ResUI.TbSettingsTunMode}"
<TextBox AcceptsReturn="True"
x:Name="txttunDNS2" BorderThickness="1"
Margin="{StaticResource SettingItemMargin}" Style="{StaticResource MaterialDesignOutlinedTextBox}"
VerticalAlignment="Stretch" TextWrapping="Wrap"
AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
BorderThickness="1"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
</Grid> </Grid>
</DockPanel> </DockPanel>
</TabItem> </TabItem>

View File

@@ -14,6 +14,17 @@ namespace v2rayN.Views
public DNSSettingWindow() public DNSSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
@@ -44,7 +55,7 @@ namespace v2rayN.Views
private void linkDnsSingboxObjectDoc_Click(object sender, RoutedEventArgs e) private void linkDnsSingboxObjectDoc_Click(object sender, RoutedEventArgs e)
{ {
Utils.ProcessStart("http://sing-box.sagernet.org/zh/configuration/dns/"); Utils.ProcessStart("https://sing-box.sagernet.org/zh/configuration/dns/");
} }
private void btnCancel_Click(object sender, RoutedEventArgs e) private void btnCancel_Click(object sender, RoutedEventArgs e)

View File

@@ -16,6 +16,17 @@ namespace v2rayN.Views
public GlobalHotkeySettingWindow() public GlobalHotkeySettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
_config.globalHotkeys ??= new List<KeyEventItem>(); _config.globalHotkeys ??= new List<KeyEventItem>();

View File

@@ -15,8 +15,6 @@
Title="v2rayN" Title="v2rayN"
Width="900" Width="900"
Height="700" Height="700"
MinWidth="900"
MinHeight="700"
x:TypeArguments="vms:MainWindowViewModel" x:TypeArguments="vms:MainWindowViewModel"
Background="{DynamicResource MaterialDesignPaper}" Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}" FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
@@ -209,7 +207,7 @@
<MenuItem <MenuItem
x:Name="menuCheckUpdateN" x:Name="menuCheckUpdateN"
Height="{StaticResource MenuItemHeight}" Height="{StaticResource MenuItemHeight}"
Header="v2rayN" /> Header="V2rayN" />
<MenuItem <MenuItem
x:Name="menuCheckUpdateV2flyCore" x:Name="menuCheckUpdateV2flyCore"
Height="{StaticResource MenuItemHeight}" Height="{StaticResource MenuItemHeight}"
@@ -235,7 +233,7 @@
<MenuItem <MenuItem
x:Name="menuCheckUpdateSingBoxCore" x:Name="menuCheckUpdateSingBoxCore"
Height="{StaticResource MenuItemHeight}" Height="{StaticResource MenuItemHeight}"
Header="sing-box Core" /> Header="Sing-box Core" />
<Separator Margin="-40,5" /> <Separator Margin="-40,5" />
<MenuItem <MenuItem
x:Name="menuCheckUpdateGeo" x:Name="menuCheckUpdateGeo"
@@ -388,7 +386,7 @@
x:Name="lstGroup" x:Name="lstGroup"
FontSize="{DynamicResource StdFontSize}" FontSize="{DynamicResource StdFontSize}"
ItemContainerStyle="{StaticResource MyChipListBoxItem}" ItemContainerStyle="{StaticResource MyChipListBoxItem}"
Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}"> Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}" MaxHeight="120">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<TextBlock Text="{Binding remarks}" /> <TextBlock Text="{Binding remarks}" />

View File

@@ -25,6 +25,19 @@ namespace v2rayN.Views
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
lstGroup.MaxHeight = Math.Floor(SystemParameters.WorkArea.Height * 0.20 / 40) * 40;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
App.Current.SessionEnding += Current_SessionEnding; App.Current.SessionEnding += Current_SessionEnding;
@@ -519,10 +532,14 @@ namespace v2rayN.Views
var coreInfos = LazyConfig.Instance.GetCoreInfos(); var coreInfos = LazyConfig.Instance.GetCoreInfos();
foreach (var it in coreInfos) foreach (var it in coreInfos)
{ {
if (it.coreType == ECoreType.v2fly)
{
continue;
}
var item = new MenuItem() var item = new MenuItem()
{ {
Tag = it.coreUrl.Replace(@"/releases", ""), Tag = it.coreUrl.Replace(@"/releases", ""),
Header = string.Format(Resx.ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")) Header = string.Format(Resx.ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")).UpperFirstChar()
}; };
item.Click += MenuItem_Click; item.Click += MenuItem_Click;
menuHelp.Items.Add(item); menuHelp.Items.Add(item);

View File

@@ -18,6 +18,17 @@ namespace v2rayN.Views
public OptionSettingWindow() public OptionSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();

View File

@@ -12,6 +12,17 @@ namespace v2rayN.Views
public RoutingRuleDetailsWindow(RulesItem rulesItem) public RoutingRuleDetailsWindow(RulesItem rulesItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
clbProtocol.SelectionChanged += ClbProtocol_SelectionChanged; clbProtocol.SelectionChanged += ClbProtocol_SelectionChanged;

View File

@@ -10,7 +10,7 @@
xmlns:resx="clr-namespace:v2rayN.Resx" xmlns:resx="clr-namespace:v2rayN.Resx"
xmlns:vms="clr-namespace:v2rayN.ViewModels" xmlns:vms="clr-namespace:v2rayN.ViewModels"
Title="{x:Static resx:ResUI.menuRoutingRuleSetting}" Title="{x:Static resx:ResUI.menuRoutingRuleSetting}"
Width="900" Width="960"
Height="700" Height="700"
x:TypeArguments="vms:RoutingRuleSettingViewModel" x:TypeArguments="vms:RoutingRuleSettingViewModel"
Background="{DynamicResource MaterialDesignPaper}" Background="{DynamicResource MaterialDesignPaper}"
@@ -280,7 +280,7 @@
Binding="{Binding outboundTag}" Binding="{Binding outboundTag}"
Header="outboundTag" /> Header="outboundTag" />
<DataGridTextColumn <DataGridTextColumn
Width="100" Width="80"
Binding="{Binding port}" Binding="{Binding port}"
Header="port" /> Header="port" />
<DataGridTextColumn <DataGridTextColumn
@@ -288,15 +288,15 @@
Binding="{Binding protocols}" Binding="{Binding protocols}"
Header="protocol" /> Header="protocol" />
<DataGridTextColumn <DataGridTextColumn
Width="120" Width="110"
Binding="{Binding inboundTags}" Binding="{Binding inboundTags}"
Header="inboundTag" /> Header="inboundTag" />
<DataGridTextColumn <DataGridTextColumn
Width="150" Width="220"
Binding="{Binding domains}" Binding="{Binding domains}"
Header="domain" /> Header="domain" />
<DataGridTextColumn <DataGridTextColumn
Width="150" Width="220"
Binding="{Binding ips}" Binding="{Binding ips}"
Header="ip" /> Header="ip" />
<DataGridTextColumn <DataGridTextColumn

View File

@@ -13,6 +13,17 @@ namespace v2rayN.Views
public RoutingRuleSettingWindow(RoutingItem routingItem) public RoutingRuleSettingWindow(RoutingItem routingItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
this.PreviewKeyDown += RoutingRuleSettingWindow_PreviewKeyDown; this.PreviewKeyDown += RoutingRuleSettingWindow_PreviewKeyDown;

View File

@@ -12,6 +12,17 @@ namespace v2rayN.Views
public RoutingSettingWindow() public RoutingSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Closing += RoutingSettingWindow_Closing; this.Closing += RoutingSettingWindow_Closing;
this.PreviewKeyDown += RoutingSettingWindow_PreviewKeyDown; this.PreviewKeyDown += RoutingSettingWindow_PreviewKeyDown;

View File

@@ -11,6 +11,17 @@ namespace v2rayN.Views
public SubEditWindow(SubItem subItem) public SubEditWindow(SubItem subItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;

View File

@@ -13,6 +13,17 @@ namespace v2rayN.Views
public SubSettingWindow() public SubSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
ViewModel = new SubSettingViewModel(this); ViewModel = new SubSettingViewModel(this);

View File

@@ -10,13 +10,13 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>v2rayN.ico</ApplicationIcon> <ApplicationIcon>v2rayN.ico</ApplicationIcon>
<Copyright>Copyright © 2017-2023 (GPLv3)</Copyright> <Copyright>Copyright © 2017-2023 (GPLv3)</Copyright>
<FileVersion>6.26</FileVersion> <FileVersion>6.29</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Downloader" Version="3.0.5" /> <PackageReference Include="Downloader" Version="3.0.6" />
<PackageReference Include="MaterialDesignThemes" Version="4.9.0" /> <PackageReference Include="MaterialDesignThemes" Version="4.9.0" />
<PackageReference Include="H.NotifyIcon.Wpf" Version="2.0.108" /> <PackageReference Include="H.NotifyIcon.Wpf" Version="2.0.118" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="QRCoder.Xaml" Version="1.4.3" /> <PackageReference Include="QRCoder.Xaml" Version="1.4.3" />
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" /> <PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
@@ -25,8 +25,8 @@
<PackageReference Include="ReactiveUI.Fody" Version="18.4.1" /> <PackageReference Include="ReactiveUI.Fody" Version="18.4.1" />
<PackageReference Include="ReactiveUI.Validation" Version="3.0.22" /> <PackageReference Include="ReactiveUI.Validation" Version="3.0.22" />
<PackageReference Include="ReactiveUI.WPF" Version="18.4.1" /> <PackageReference Include="ReactiveUI.WPF" Version="18.4.1" />
<PackageReference Include="Splat.NLog" Version="14.6.37" /> <PackageReference Include="Splat.NLog" Version="14.7.1" />
<PackageReference Include="System.Reactive" Version="5.0.0" /> <PackageReference Include="System.Reactive" Version="6.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -108,6 +108,9 @@
<EmbeddedResource Update="Resx\ResUI.zh-Hans.resx"> <EmbeddedResource Update="Resx\ResUI.zh-Hans.resx">
<Generator>PublicResXFileCodeGenerator</Generator> <Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Resx\ResUI.zh-Hant.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resx\ResUI.fa-Ir.resx"> <EmbeddedResource Update="Resx\ResUI.fa-Ir.resx">
<Generator>PublicResXFileCodeGenerator</Generator> <Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource> </EmbeddedResource>

View File

@@ -92,9 +92,9 @@ namespace v2rayUpgrade
File.Move(Application.ExecutablePath, thisAppOldFile); File.Move(Application.ExecutablePath, thisAppOldFile);
} }
string entryOuputPath = GetPath(fullName); string entryOutputPath = GetPath(fullName);
Directory.CreateDirectory(Path.GetDirectoryName(entryOuputPath)!); Directory.CreateDirectory(Path.GetDirectoryName(entryOutputPath)!);
entry.ExtractToFile(entryOuputPath, true); entry.ExtractToFile(entryOutputPath, true);
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -145,4 +145,4 @@ namespace v2rayUpgrade
return Path.Combine(startupPath, fileName); return Path.Combine(startupPath, fileName);
} }
} }
} }