diff --git a/Windows/CS/Framework4.0/Updater/build.rs b/Windows/CS/Framework4.0/Updater/build.rs index 9ed447a..ee342b8 100644 --- a/Windows/CS/Framework4.0/Updater/build.rs +++ b/Windows/CS/Framework4.0/Updater/build.rs @@ -3,13 +3,23 @@ use winresource::VersionInfo; extern crate winresource; fn main() { + let version_str = "1.0.0.2"; + let mut res = winresource::WindowsResource::new(); // 字符串表(文件属性对话框显示的值) - res.set("FileVersion", "1.0.0.1"); - res.set("ProductVersion", "1.0.0.1"); + res.set("FileVersion", version_str); + res.set("ProductVersion", version_str); + + // 从字符串自动解析版本号到二进制结构 + let mut parts = version_str.split('.'); + let major: u64 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0); + let minor: u64 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0); + let patch: u64 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0); + let pre: u64 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0); + // 二进制结构(VERSIONINFO 的 FILEVERSION / PRODUCTVERSION) // 格式: Major<<48 | Minor<<32 | Patch<<16 | Pre - let ver: u64 = (1u64 << 48) | (0 << 32) | (0 << 16) | 1; + let ver: u64 = (major << 48) | (minor << 32) | (patch << 16) | pre; res.set_version_info(VersionInfo::FILEVERSION, ver); res.set_version_info(VersionInfo::PRODUCTVERSION, ver); res.compile().unwrap(); diff --git a/Windows/CS/Framework4.0/Updater/src/main.rs b/Windows/CS/Framework4.0/Updater/src/main.rs index c7e7161..92ff5c1 100644 --- a/Windows/CS/Framework4.0/Updater/src/main.rs +++ b/Windows/CS/Framework4.0/Updater/src/main.rs @@ -1,3 +1,5 @@ +#![windows_subsystem = "windows"] + use rand::Rng; use std::collections::{HashMap, HashSet}; use std::sync::{Arc, Mutex}; @@ -2708,17 +2710,13 @@ async fn main() { // 加载 Updater 自身配置(debug_mode) let config = load_updater_config(); - // 非 debug 模式下释放控制台,后台静默运行 - if !config.debug_mode { + // debug 模式下分配控制台窗口 + if config.debug_mode { #[cfg(windows)] { use windows::Win32::System::Console; - use windows::Win32::Foundation::HWND; unsafe { - let console = Console::GetConsoleWindow(); - if console != HWND::default() { - let _ = Console::FreeConsole(); - } + let _ = Console::AllocConsole(); } } }