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,109 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace R0PatchGenerator
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Console.WriteLine("========================================");
|
||||
Console.WriteLine(" R0对战平台 增量包生成器");
|
||||
Console.WriteLine("========================================");
|
||||
Console.WriteLine();
|
||||
|
||||
if (args.Length < 3)
|
||||
{
|
||||
PrintUsage();
|
||||
return;
|
||||
}
|
||||
|
||||
string oldVersionPath = args[0];
|
||||
string newVersionPath = args[1];
|
||||
string outputPath = args[2];
|
||||
|
||||
// 可选参数:版本号
|
||||
string fromVersion = args.Length > 3 ? args[3] : "unknown";
|
||||
string toVersion = args.Length > 4 ? args[4] : "unknown";
|
||||
|
||||
Console.WriteLine("源版本目录: " + oldVersionPath);
|
||||
Console.WriteLine("目标版本目录: " + newVersionPath);
|
||||
Console.WriteLine("输出路径: " + outputPath);
|
||||
Console.WriteLine("从版本: " + fromVersion);
|
||||
Console.WriteLine("到版本: " + toVersion);
|
||||
Console.WriteLine();
|
||||
|
||||
if (!Directory.Exists(oldVersionPath))
|
||||
{
|
||||
Console.WriteLine("错误: 源版本目录不存在!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Directory.Exists(newVersionPath))
|
||||
{
|
||||
Console.WriteLine("错误: 目标版本目录不存在!");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
PatchGenerator generator = new PatchGenerator();
|
||||
bool success = generator.GeneratePatch(oldVersionPath, newVersionPath, outputPath, fromVersion, toVersion);
|
||||
|
||||
if (success)
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("增量包生成成功!");
|
||||
Console.WriteLine("输出文件: " + outputPath);
|
||||
|
||||
FileInfo fi = new FileInfo(outputPath);
|
||||
Console.WriteLine("文件大小: " + FormatFileSize(fi.Length));
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("增量包生成失败!");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("错误: " + ex.Message);
|
||||
Console.WriteLine(ex.StackTrace);
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintUsage()
|
||||
{
|
||||
Console.WriteLine("用法:");
|
||||
Console.WriteLine(" R0PatchGenerator.exe <旧版本目录> <新版本目录> <输出文件.zip> [从版本] [到版本]");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("示例:");
|
||||
Console.WriteLine(" R0PatchGenerator.exe \"C:\\versions\\1.0.0\" \"C:\\versions\\1.0.1\" \"patch_1.0.0_to_1.0.1.zip\" 1.0.0 1.0.1");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("说明:");
|
||||
Console.WriteLine(" - 旧版本目录: 包含旧版本完整文件的目录");
|
||||
Console.WriteLine(" - 新版本目录: 包含新版本完整文件的目录");
|
||||
Console.WriteLine(" - 输出文件: 生成的增量包文件路径(.zip格式)");
|
||||
Console.WriteLine(" - 从版本/到版本: 可选,用于生成版本信息");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("增量包内容:");
|
||||
Console.WriteLine(" - patch.json: 更新清单文件");
|
||||
Console.WriteLine(" - patches/: 差异文件目录(使用HDiffPatch格式)");
|
||||
Console.WriteLine(" - new/: 新增文件目录");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("注意: 需要将 hdiffz.exe 放在同一目录下");
|
||||
}
|
||||
|
||||
static string FormatFileSize(long bytes)
|
||||
{
|
||||
if (bytes >= 1073741824)
|
||||
return String.Format("{0:F2} GB", bytes / 1073741824.0);
|
||||
if (bytes >= 1048576)
|
||||
return String.Format("{0:F2} MB", bytes / 1048576.0);
|
||||
if (bytes >= 1024)
|
||||
return String.Format("{0:F2} KB", bytes / 1024.0);
|
||||
return String.Format("{0} B", bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user