merge: 合并 dev 分支到 main 并保留本地重命名
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Project-level configuration.
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
project(BearVPN LANGUAGES CXX)
|
||||
project(HiFastVPN LANGUAGES CXX)
|
||||
|
||||
# 设置 CMake 策略以兼容旧版本插件
|
||||
# CMP0175: add_custom_command() 拒绝无效参数(用于兼容 flutter_inappwebview_windows 插件)
|
||||
@@ -22,7 +22,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FS")
|
||||
|
||||
# The name of the executable created for the application. Change this to change
|
||||
# the on-disk name of your application.
|
||||
set(BINARY_NAME "BearVPN")
|
||||
set(BINARY_NAME "HiFastVPN")
|
||||
|
||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||
# versions of CMake.
|
||||
@@ -100,7 +100,7 @@ endif()
|
||||
|
||||
set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
|
||||
set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}")
|
||||
# CLI 工具目录(用于存放 BearVPNCli.exe)
|
||||
# CLI 工具目录(用于存放 HiFastVPNCli.exe)
|
||||
set(INSTALL_BUNDLE_CLI_DIR "${CMAKE_INSTALL_PREFIX}/cli")
|
||||
|
||||
install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
|
||||
@@ -118,10 +118,10 @@ install(FILES "../libcore/bin/libcore.dll"
|
||||
COMPONENT Runtime
|
||||
OPTIONAL)
|
||||
|
||||
# 安装 BearVPNCli.exe(从 libcore/bin 复制并重命名)
|
||||
# 注意:libcore 编译的是 HiddifyCli.exe,打包脚本会自动重命名为 BearVPNCli.exe
|
||||
# 这里需要安装 BearVPNCli.exe,因为它已经被重命名了
|
||||
install(FILES "../libcore/bin/BearVPNCli.exe"
|
||||
# 安装 HiFastVPNCli.exe(从 libcore/bin 复制并重命名)
|
||||
# 注意:libcore 编译的是 HiddifyCli.exe,打包脚本会自动重命名为 HiFastVPNCli.exe
|
||||
# 这里需要安装 HiFastVPNCli.exe,因为它已经被重命名了
|
||||
install(FILES "../libcore/bin/HiFastVPNCli.exe"
|
||||
DESTINATION "${CMAKE_INSTALL_PREFIX}"
|
||||
COMPONENT Runtime
|
||||
OPTIONAL)
|
||||
|
||||
@@ -49,7 +49,7 @@ CloseApplications=force
|
||||
{% endfor %}
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if CREATE_DESKTOP_ICON != true %}unchecked{% else %}checkedonce{% endif %}
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkedonce
|
||||
Name: "launchAtStartup"; Description: "{cm:AutoStartProgram,{{DISPLAY_NAME}}}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if LAUNCH_AT_STARTUP != true %}unchecked{% else %}checkedonce{% endif %}
|
||||
[Files]
|
||||
Source: "{{SOURCE_DIR}}\\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
@@ -62,14 +62,82 @@ Name: "{userstartup}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}";
|
||||
[Run]
|
||||
Filename: "{app}\\{{EXECUTABLE_NAME}}"; Description: "{cm:LaunchProgram,{{DISPLAY_NAME}}}"; Flags: {% if PRIVILEGES_REQUIRED == 'admin' %}runascurrentuser{% endif %} nowait postinstall skipifsilent
|
||||
|
||||
[UninstallDelete]
|
||||
Type: filesandordirs; Name: "{app}"
|
||||
Type: filesandordirs; Name: "{localappdata}\\{{DISPLAY_NAME}}"
|
||||
Type: filesandordirs; Name: "{userappdata}\\{{DISPLAY_NAME}}"
|
||||
Type: filesandordirs; Name: "{tmp}\\{{DISPLAY_NAME}}"
|
||||
|
||||
[Registry]
|
||||
Root: HKCU; Subkey: "Software\\{{DISPLAY_NAME}}"; Flags: uninsdeletekey
|
||||
Root: HKLM; Subkey: "Software\\{{DISPLAY_NAME}}"; Flags: uninsdeletekey
|
||||
|
||||
[Code]
|
||||
function InitializeSetup(): Boolean;
|
||||
var
|
||||
ResultCode: Integer;
|
||||
procedure AppendLog(S: string);
|
||||
begin
|
||||
Exec('taskkill', '/F /IM BearVPN.exe', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
|
||||
Exec('net', 'stop "BearVPNTunnelService"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
|
||||
Exec('sc.exe', 'delete "BearVPNTunnelService"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
|
||||
SaveStringToFile(ExpandConstant('{tmp}\\{{DISPLAY_NAME}}_installer.log'), S + #13#10, True);
|
||||
end;
|
||||
|
||||
procedure TerminateProcesses();
|
||||
var ResultCode: Integer;
|
||||
begin
|
||||
try
|
||||
Exec('taskkill', '/F /IM {{EXECUTABLE_NAME}}', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
except
|
||||
AppendLog('terminate failed: {{EXECUTABLE_NAME}}');
|
||||
end;
|
||||
try
|
||||
Exec('taskkill', '/F /IM HiFastVPNCli.exe', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
except
|
||||
AppendLog('terminate failed: HiFastVPNCli.exe');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure StopServices();
|
||||
var ResultCode: Integer;
|
||||
begin
|
||||
try
|
||||
Exec('net', 'stop "HiFastVPNTunnelService"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
Exec('sc.exe', 'delete "HiFastVPNTunnelService"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
except
|
||||
AppendLog('service stop/delete failed: HiFastVPNTunnelService');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure CleanPaths();
|
||||
var ok: Boolean;
|
||||
begin
|
||||
try
|
||||
if DirExists(ExpandConstant('{app}')) then
|
||||
ok := DelTree(ExpandConstant('{app}'), True, True, True)
|
||||
else ok := True;
|
||||
if not ok then AppendLog('delete failed: {app}');
|
||||
except
|
||||
AppendLog('exception deleting: {app}');
|
||||
end;
|
||||
try
|
||||
if DirExists(ExpandConstant('{localappdata}\\{{DISPLAY_NAME}}')) then
|
||||
ok := DelTree(ExpandConstant('{localappdata}\\{{DISPLAY_NAME}}'), True, True, True);
|
||||
if DirExists(ExpandConstant('{userappdata}\\{{DISPLAY_NAME}}')) then
|
||||
ok := DelTree(ExpandConstant('{userappdata}\\{{DISPLAY_NAME}}'), True, True, True);
|
||||
if DirExists(ExpandConstant('{tmp}\\{{DISPLAY_NAME}}')) then
|
||||
ok := DelTree(ExpandConstant('{tmp}\\{{DISPLAY_NAME}}'), True, True, True);
|
||||
except
|
||||
AppendLog('exception deleting user data');
|
||||
end;
|
||||
end;
|
||||
|
||||
function InitializeSetup(): Boolean;
|
||||
begin
|
||||
TerminateProcesses();
|
||||
StopServices();
|
||||
Result := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
function InitializeUninstall(): Boolean;
|
||||
begin
|
||||
TerminateProcesses();
|
||||
StopServices();
|
||||
CleanPaths();
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
app_id: 6L903538-42B1-4596-G479-BJ779F21A65E
|
||||
publisher: BearVPN
|
||||
publisher: HiFastVPN
|
||||
publisher_url: https://github.com/hiddify/hiddify-next
|
||||
display_name: BearVPN
|
||||
executable_name: BearVPN.exe
|
||||
output_base_file_name: BearVPN.exe
|
||||
display_name: HiFastVPN
|
||||
executable_name: HiFastVPN.exe
|
||||
output_base_file_name: HiFastVPN.exe
|
||||
create_desktop_icon: true
|
||||
install_dir_name: "{autopf64}\\BearVPN"
|
||||
install_dir_name: "{autopf64}\\HiFastVPN"
|
||||
setup_icon_file: ..\..\windows\runner\resources\app_icon.ico
|
||||
locales:
|
||||
- ar
|
||||
|
||||
@@ -89,13 +89,13 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "BearVPN" "\0"
|
||||
VALUE "FileDescription", "BearVPN" "\0"
|
||||
VALUE "CompanyName", "HiFastVPN" "\0"
|
||||
VALUE "FileDescription", "HiFastVPN" "\0"
|
||||
VALUE "FileVersion", VERSION_AS_STRING "\0"
|
||||
VALUE "InternalName", "app.baer.com" "\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2024 BearVPN. All rights reserved." "\0"
|
||||
VALUE "OriginalFilename", "BearVPN.exe" "\0"
|
||||
VALUE "ProductName", "BearVPN" "\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2024 HiFastVPN. All rights reserved." "\0"
|
||||
VALUE "OriginalFilename", "HiFastVPN.exe" "\0"
|
||||
VALUE "ProductName", "HiFastVPN" "\0"
|
||||
VALUE "ProductVersion", VERSION_AS_STRING "\0"
|
||||
END
|
||||
END
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
|
||||
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
||||
_In_ wchar_t *command_line, _In_ int show_command) {
|
||||
HANDLE hMutexInstance = CreateMutex(NULL, TRUE, L"BearVPNMutex");
|
||||
HWND handle = FindWindowA(NULL, "BearVPN");
|
||||
HANDLE hMutexInstance = CreateMutex(NULL, TRUE, L"HiFastVPNMutex");
|
||||
HWND handle = FindWindowA(NULL, "HiFastVPN");
|
||||
|
||||
if (GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||
flutter::DartProject project(L"data");
|
||||
std::vector<std::string> command_line_arguments = GetCommandLineArguments();
|
||||
project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
|
||||
FlutterWindow window(project);
|
||||
if (window.SendAppLinkToInstance(L"BearVPN")) {
|
||||
if (window.SendAppLinkToInstance(L"HiFastVPN")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
||||
FlutterWindow window(project);
|
||||
Win32Window::Point origin(10, 10);
|
||||
Win32Window::Size size(1280, 720);
|
||||
if (!window.Create(L"BearVPN", origin, size)) {
|
||||
if (!window.Create(L"HiFastVPN", origin, size)) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
window.SetQuitOnClose(true);
|
||||
|
||||
+2
-2
@@ -11,7 +11,7 @@ AppPublisher={#MyAppPublisher}
|
||||
DefaultDirName={autopf}\{#MyAppName}
|
||||
DefaultGroupName={#MyAppName}
|
||||
OutputDir=installer
|
||||
OutputBaseFilename=BearVPN_Setup
|
||||
OutputBaseFilename=HiFastVPN_Setup
|
||||
Compression=lzma
|
||||
SolidCompression=yes
|
||||
WizardStyle=modern
|
||||
@@ -34,4 +34,4 @@ Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||
|
||||
Reference in New Issue
Block a user