Initial commit: R0Installer source, patch generator, API backend and build scripts
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
-- R0Installer 云端配置数据库
|
||||
-- 使用 MySQL 5.7+ / MariaDB 10.2+
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS `r0_installer` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE `r0_installer`;
|
||||
|
||||
-- 项目表
|
||||
CREATE TABLE IF NOT EXISTS `projects` (
|
||||
`id` INT PRIMARY KEY AUTO_INCREMENT,
|
||||
`project_id` VARCHAR(50) NOT NULL UNIQUE,
|
||||
`display_name` VARCHAR(100) NOT NULL,
|
||||
`description` TEXT,
|
||||
`icon_url` VARCHAR(500) DEFAULT '',
|
||||
`enabled` TINYINT(1) DEFAULT 1,
|
||||
`config_json` JSON NOT NULL,
|
||||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 安装器全局配置表
|
||||
CREATE TABLE IF NOT EXISTS `installer_config` (
|
||||
`id` INT PRIMARY KEY AUTO_INCREMENT,
|
||||
`config_key` VARCHAR(50) NOT NULL UNIQUE DEFAULT 'global',
|
||||
`installer_version` VARCHAR(20) DEFAULT '2.0',
|
||||
`min_client_version` VARCHAR(20) DEFAULT '1.0.0.0',
|
||||
`filename_rules` JSON NOT NULL,
|
||||
`command_rules` JSON NOT NULL,
|
||||
`default_project` VARCHAR(50) DEFAULT 'r0_arena',
|
||||
`default_mode` VARCHAR(20) DEFAULT 'full',
|
||||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 项目版本表
|
||||
CREATE TABLE IF NOT EXISTS `project_versions` (
|
||||
`id` INT PRIMARY KEY AUTO_INCREMENT,
|
||||
`project_id` VARCHAR(50) NOT NULL,
|
||||
`version` VARCHAR(50) NOT NULL,
|
||||
`download_url` VARCHAR(500) NOT NULL,
|
||||
`file_size` BIGINT DEFAULT 0,
|
||||
`changelog` TEXT,
|
||||
`threads` INT DEFAULT 8,
|
||||
`extra_downloads` JSON DEFAULT NULL,
|
||||
`runtime_urls` JSON DEFAULT NULL,
|
||||
`is_latest` TINYINT(1) DEFAULT 0,
|
||||
`silent_update` TINYINT(1) DEFAULT 0, -- 1=更新到该版本时静默更新(不弹界面),0=显示更新界面
|
||||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY `uk_project_version` (`project_id`, `version`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 已有数据库升级:为旧的 project_versions 表补充 silent_update 列(首次部署可忽略本行;
|
||||
-- MySQL 8 不支持 ADD COLUMN IF NOT EXISTS,若列已存在会报错,可直接跳过执行)。
|
||||
-- ALTER TABLE `project_versions` ADD COLUMN `silent_update` TINYINT(1) DEFAULT 0 AFTER `is_latest`;
|
||||
|
||||
-- 增量更新包表
|
||||
CREATE TABLE IF NOT EXISTS `project_patches` (
|
||||
`id` INT PRIMARY KEY AUTO_INCREMENT,
|
||||
`project_id` VARCHAR(50) NOT NULL,
|
||||
`from_version` VARCHAR(50) NOT NULL,
|
||||
`to_version` VARCHAR(50) NOT NULL,
|
||||
`download_url` VARCHAR(500) NOT NULL,
|
||||
`file_size` BIGINT DEFAULT 0,
|
||||
`changelog` TEXT,
|
||||
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY `uk_patch` (`project_id`, `from_version`, `to_version`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ========== 初始数据 ==========
|
||||
|
||||
-- 安装器全局配置
|
||||
INSERT INTO `installer_config` (`config_key`, `installer_version`, `min_client_version`, `filename_rules`, `command_rules`, `default_project`, `default_mode`)
|
||||
VALUES ('global', '2.0', '1.0.0.0',
|
||||
'[{"pattern":"R0ClientInstaller","match_type":"starts_with","case_sensitive":false,"project_id":"r0_arena","install_mode":"client_only","description":"仅安装R0对战平台客户端"},{"pattern":"R0AcInstaller","match_type":"starts_with","case_sensitive":false,"project_id":"r0_arena","install_mode":"ac_only","description":"仅安装R0对战平台环境和反作弊"},{"pattern":"R0Installer","match_type":"starts_with","case_sensitive":false,"project_id":"r0_arena","install_mode":"full","description":"完整安装R0对战平台"}]',
|
||||
'[{"command":"update","project_id":"r0_arena","update_target":"update","description":"R0对战平台主程序更新"},{"command":"update_ac","project_id":"r0_arena","update_target":"update_ac","description":"R0对战平台反作弊更新"}]',
|
||||
'r0_arena', 'full');
|
||||
|
||||
-- R0对战平台项目
|
||||
INSERT INTO `projects` (`project_id`, `display_name`, `description`, `enabled`, `config_json`)
|
||||
VALUES ('r0_arena', 'R0对战平台', 'R0对战平台客户端', 1,
|
||||
'{
|
||||
"install": {
|
||||
"window_title": "R0对战平台安装程序",
|
||||
"steps": [
|
||||
{"step_id": "runtime", "display_name": "环境检查", "type": "runtime_check", "enabled": true},
|
||||
{"step_id": "anticheat", "display_name": "反作弊安装", "type": "download_and_run", "enabled": true, "download_url_field": "download_url_ac_cdn", "temp_filename_template": "r0_guard_v{version}.exe", "installer_args": "", "wait_for_exit": true},
|
||||
{"step_id": "main", "display_name": "主程序安装", "type": "download_and_run", "enabled": true, "download_url_field": "download_url_cdn", "temp_filename_template": "r0_arena_v{version}.exe", "installer_args": "", "wait_for_exit": false}
|
||||
]
|
||||
},
|
||||
"update": {
|
||||
"window_title": "R0对战平台更新程序",
|
||||
"command": "update",
|
||||
"check_api": "/v3/update/check?project=r0_arena&v={0}",
|
||||
"processes_to_close": ["r0_arena", "R0对战平台"],
|
||||
"launch_after_update": "R0对战平台.exe",
|
||||
"temp_filename_template": "r0_arena_v{version}.exe",
|
||||
"hold_file": null,
|
||||
"supports_incremental": true
|
||||
},
|
||||
"update_ac": {
|
||||
"window_title": "R0反作弊更新程序",
|
||||
"command": "update_ac",
|
||||
"check_api": "/v3/update/check?project=r0_guard&v={0}",
|
||||
"processes_to_close": ["R0Guard"],
|
||||
"launch_after_update": "R0Guard.exe",
|
||||
"temp_filename_template": "r0_guard_v{version}.exe",
|
||||
"hold_file": "ac.hold_install",
|
||||
"supports_incremental": true
|
||||
},
|
||||
"runtime_requirements": [
|
||||
{
|
||||
"runtime_id": "vc_redist",
|
||||
"display_name": "VC++运行库",
|
||||
"enabled": true,
|
||||
"always_install": true,
|
||||
"detection": {"type": "registry", "keys": ["SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\14.0\\\\VC\\\\Runtimes\\\\x86","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\14.0\\\\VC\\\\Runtimes\\\\x64","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\15.0\\\\VC\\\\Runtimes\\\\x86","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\15.0\\\\VC\\\\Runtimes\\\\x64","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\16.0\\\\VC\\\\Runtimes\\\\x86","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\16.0\\\\VC\\\\Runtimes\\\\x64","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\17.0\\\\VC\\\\Runtimes\\\\x86","SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\17.0\\\\VC\\\\Runtimes\\\\x64"], "value_name": "Installed", "expected_value": 1},
|
||||
"download_url_x86": "https://cdn.r0csgo.com/runtime/VC_redist.x86.exe",
|
||||
"download_url_x64": "https://cdn.r0csgo.com/runtime/VC_redist.x64.exe",
|
||||
"temp_filename_template": "VC_redist.{arch}.exe",
|
||||
"install_args": "/install /passive /norestart"
|
||||
},
|
||||
{
|
||||
"runtime_id": "dotnet_desktop",
|
||||
"display_name": ".NET运行库",
|
||||
"enabled": false,
|
||||
"always_install": false,
|
||||
"detection": {"type": "dotnet_runtime", "runtime_name": "Microsoft.WindowsDesktop.App", "version": "8.0.21"},
|
||||
"download_url_x86": "https://cdn.r0csgo.com/runtime/windowsdesktop-runtime-8.0.21-win-x86.exe",
|
||||
"download_url_x64": "https://cdn.r0csgo.com/runtime/windowsdesktop-runtime-8.0.21-win-x64.exe",
|
||||
"temp_filename_template": "windowsdesktop-runtime-{version}-win-{arch}.exe",
|
||||
"install_args": "/install /passive /norestart"
|
||||
},
|
||||
{
|
||||
"runtime_id": "aspnet_core",
|
||||
"display_name": "ASP.NET Core运行库",
|
||||
"enabled": false,
|
||||
"always_install": false,
|
||||
"detection": {"type": "dotnet_runtime", "runtime_name": "Microsoft.AspNetCore.App", "version": "8.0.21"},
|
||||
"download_url_x86": "https://cdn.r0csgo.com/runtime/aspnetcore-runtime-8.0.21-win-x86.exe",
|
||||
"download_url_x64": "https://cdn.r0csgo.com/runtime/aspnetcore-runtime-8.0.21-win-x64.exe",
|
||||
"temp_filename_template": "aspnetcore-runtime-{version}-win-{arch}.exe",
|
||||
"install_args": "/install /passive /norestart"
|
||||
}
|
||||
],
|
||||
"download_config": {
|
||||
"chunk_size": 10485760,
|
||||
"max_threads": 8,
|
||||
"retry_count": 3,
|
||||
"timeout_ms": 30000,
|
||||
"user_agent": "r0_installer"
|
||||
}
|
||||
}');
|
||||
|
||||
-- 示例版本
|
||||
INSERT INTO `project_versions` (`project_id`, `version`, `download_url`, `file_size`, `changelog`, `threads`, `extra_downloads`, `runtime_urls`, `is_latest`)
|
||||
VALUES ('r0_arena', '3.0.5', 'https://cdn.r0csgo.com/releases/r0_arena_v3.0.5.exe', 0, '最新版本', 8,
|
||||
'{"download_url_ac_cdn": "https://cdn.r0csgo.com/releases/r0_guard_v2.1.0.exe"}',
|
||||
'{"VC_REDISTRIB_X86_URL":"https://cdn.r0csgo.com/runtime/VC_redist.x86.exe","VC_REDISTRIB_X64_URL":"https://cdn.r0csgo.com/runtime/VC_redist.x64.exe"}',
|
||||
1);
|
||||
Reference in New Issue
Block a user