feat(client): improve SDK packaging and registry config
This commit is contained in:
+23
-23
@@ -112,12 +112,12 @@ static bool launchUpdater(const std::wstring& updater, const std::vector<std::ws
|
||||
|
||||
int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
|
||||
{
|
||||
int argc = 0;
|
||||
LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (!argv || argc < 11) {
|
||||
MessageBoxW(nullptr, L"Bootstrap 参数不完整。", L"更新接管失败", MB_ICONERROR);
|
||||
if (argv) LocalFree(argv);
|
||||
return 2;
|
||||
int argc = 0;
|
||||
LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (!argv || argc < 11) {
|
||||
MessageBoxW(nullptr, L"Bootstrap arguments are incomplete.", L"Update Handoff Failed", MB_ICONERROR);
|
||||
if (argv) LocalFree(argv);
|
||||
return 2;
|
||||
}
|
||||
const fs::path planFile = argv[1];
|
||||
const fs::path installDir = argv[2];
|
||||
@@ -140,16 +140,16 @@ int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
|
||||
std::vector<fs::path> paths;
|
||||
std::string line;
|
||||
while (std::getline(input, line)) {
|
||||
if (!line.empty() && line.back() == '\r') line.pop_back();
|
||||
if (line.size() < 3 || line[1] != '\t' || (line[0] != 'C' && line[0] != 'D')) {
|
||||
MessageBoxW(nullptr, L"更新计划操作格式无效。", L"更新接管失败", MB_ICONERROR);
|
||||
return 3;
|
||||
}
|
||||
const fs::path relative(fromUtf8(line.substr(2)));
|
||||
if (!safeRelative(relative)) {
|
||||
MessageBoxW(nullptr, L"更新计划包含不安全路径。", L"更新接管失败", MB_ICONERROR);
|
||||
return 3;
|
||||
}
|
||||
if (!line.empty() && line.back() == '\r') line.pop_back();
|
||||
if (line.size() < 3 || line[1] != '\t' || (line[0] != 'C' && line[0] != 'D')) {
|
||||
MessageBoxW(nullptr, L"The update plan operation format is invalid.", L"Update Handoff Failed", MB_ICONERROR);
|
||||
return 3;
|
||||
}
|
||||
const fs::path relative(fromUtf8(line.substr(2)));
|
||||
if (!safeRelative(relative)) {
|
||||
MessageBoxW(nullptr, L"The update plan contains an unsafe path.", L"Update Handoff Failed", MB_ICONERROR);
|
||||
return 3;
|
||||
}
|
||||
items.push_back({static_cast<wchar_t>(line[0]), relative});
|
||||
paths.push_back(relative);
|
||||
}
|
||||
@@ -180,12 +180,12 @@ int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
|
||||
if (!success) rolledBack = rollback(installDir, backupDir, paths);
|
||||
}
|
||||
|
||||
const std::wstring result = success ? L"success" : (rolledBack ? L"rolledback" : L"rollback-failed");
|
||||
if (!launchUpdater(updater, updateArgs, result)) {
|
||||
std::wstring message = L"无法重新启动 Updater.exe。";
|
||||
if (!failedPath.empty()) message += L"\n失败文件:" + failedPath.wstring();
|
||||
MessageBoxW(nullptr, message.c_str(), L"更新接管失败", MB_ICONERROR);
|
||||
return 4;
|
||||
}
|
||||
const std::wstring result = success ? L"success" : (rolledBack ? L"rolledback" : L"rollback-failed");
|
||||
if (!launchUpdater(updater, updateArgs, result)) {
|
||||
std::wstring message = L"Cannot restart Updater.exe.";
|
||||
if (!failedPath.empty()) message += L"\nFailed file: " + failedPath.wstring();
|
||||
MessageBoxW(nullptr, message.c_str(), L"Update Handoff Failed", MB_ICONERROR);
|
||||
return 4;
|
||||
}
|
||||
return (success || rolledBack) ? 0 : 5;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user