diff --git a/src/v2/CHANGELOG.md b/src/v2/CHANGELOG.md index 5fe0e33..2507770 100644 --- a/src/v2/CHANGELOG.md +++ b/src/v2/CHANGELOG.md @@ -4,13 +4,21 @@ - 没有特别说明的版本都是修复问题 +## 2.28.1 + +- 修复黑名单机制的版本迁移 + - 对于旧版本更新到新版本,还是沿用黑名单机制,白名单机制需要重新设置 +- 将 `托盘菜单` 中的 `忽略更新` 修改 `设置更新检测` +- 修复虚拟机系统环境中,获取目录路径错乱的问题 +- 修复设置状态自动切换时,意外写入的一个配置项 app_add + ## 2.28.0 > [!warning] > > `v2.28.0` 会默认使用白名单机制 > -> 由于配置迁移的问题,旧版本更新后,需要根据情况手动调整。 +> 由于配置迁移的问题,旧版本更新后,需要根据情况手动调整。(在 `v2.28.1` 中已修复) > > - 使用新的白名单机制: `托盘菜单` => `符号显示黑/白名单` => `设置「白」名单` > - 继续使用黑名单机制: `托盘菜单` => `符号显示黑/白名单` => `使用「黑」名单` diff --git a/src/v2/InputTip.JAB.JetBrains.exe b/src/v2/InputTip.JAB.JetBrains.exe index 1f0f092..39bc0f9 100644 Binary files a/src/v2/InputTip.JAB.JetBrains.exe and b/src/v2/InputTip.JAB.JetBrains.exe differ diff --git a/src/v2/InputTip.ahk b/src/v2/InputTip.ahk index a2c8579..b9ea9f2 100644 --- a/src/v2/InputTip.ahk +++ b/src/v2/InputTip.ahk @@ -52,11 +52,21 @@ if (A_IsCompiled) { checkIni() ; 检查配置文件 ; 检查更新 -ignoreUpdate := readIni("ignoreUpdate", 0) +try { + ignoreUpdate := IniRead("InputTip.ini", "Config-v2", "ignoreUpdate") + if (ignoreUpdate) { + checkUpdateDelay := readIni("checkUpdateDelay", 0) + } else { + checkUpdateDelay := readIni("checkUpdateDelay", 1440) + } + IniDelete("InputTip.ini", "Config-v2", "ignoreUpdate") +} + +checkUpdateDelay := readIni("checkUpdateDelay", 1440) #Include .\utils\var.ahk -checkUpdate() +checkUpdate(1) checkUpdateDone() diff --git a/src/v2/utils/check-version.ahk b/src/v2/utils/check-version.ahk index 8f97f55..804f902 100644 --- a/src/v2/utils/check-version.ahk +++ b/src/v2/utils/check-version.ahk @@ -78,131 +78,155 @@ checkVersion(currentVersion, callback, urls := [ /** * 检查更新并弹出确认框 */ -checkUpdate() { - if (!ignoreUpdate) { - if (A_IsCompiled) { - checkVersion(currentVersion, updateConfirm) - updateConfirm(newVersion, url) { - createGui(fn).Show() - fn(x, y, w, h) { - g := Gui("AlwaysOnTop", "InputTip - 版本更新") - g.SetFont(fz, "微软雅黑") - bw := w - g.MarginX * 2 - g.AddText(, "InputTip 有版本更新: ") - g.AddText("yp cff5050", currentVersion) - g.AddText("yp", ">") - g.AddText("yp cRed", newVersion) - g.AddText("xs", "---------------------------------------------------------") - g.AddLink("xs", '版本更新日志: 官网 Github Gitee') - g.AddText("cRed", "点击确认更新后,会自动下载新版本替代旧版本并重启`n") - y := g.AddButton("xs w" bw, "确认更新") - y.OnEvent("Click", yes) - y.Focus() - yes(*) { - g.Destroy() - releases := [ - "https://inputtip.pages.dev/releases/v2/InputTip.exe", - "https://gitee.com/abgox/InputTip/releases/download/v" newVersion "/InputTip.exe", - "https://github.com/abgox/InputTip/releases/download/v" newVersion "/InputTip.exe" - ] - done := false - for v in releases { - try { - Download(v, A_AppData "\abgox-InputTip.exe") - ; 尝试获取版本号,成功获取则表示下载没有问题 - done := FileGetVersion(A_AppData "\abgox-InputTip.exe") - break - } - } - if (done) { - if (enableJetBrainsSupport) { +checkUpdate(init := 0) { + if (checkUpdateDelay) { + if (init) { + checkUpdateTimer() + } + SetTimer(checkUpdateTimer, checkUpdateDelay * 1000 * 60) + checkUpdateTimer() { + if (!checkUpdateDelay) { + SetTimer(checkUpdateTimer, 0) + return + } + if (A_IsCompiled) { + checkVersion(currentVersion, updateConfirm) + updateConfirm(newVersion, url) { + if (WinExist("InputTip - 有新版本啦,快点击更新体验新版本吧! ")) { + SetTimer(checkUpdateTimer, 0) + return + } + createGui(fn).Show() + fn(x, y, w, h) { + g := Gui("AlwaysOnTop", "InputTip - 有新版本啦,快点击更新体验新版本吧! ") + g.SetFont(fz, "微软雅黑") + bw := w - g.MarginX * 2 + g.AddText(, "InputTip 有版本更新: ") + g.AddText("yp cff5050", currentVersion) + g.AddText("yp", ">") + g.AddText("yp cRed", newVersion) + g.AddText("xs", "---------------------------------------------------------") + g.AddLink("xs", '版本更新日志: 官网 Github Gitee') + g.AddText("cRed", "点击确认更新后,会自动下载新版本替代旧版本并重启`n") + y := g.AddButton("xs w" bw, "确认更新") + y.OnEvent("Click", yes) + y.Focus() + yes(*) { + g.Destroy() + releases := [ + "https://inputtip.pages.dev/releases/v2/InputTip.exe", + "https://gitee.com/abgox/InputTip/releases/download/v" newVersion "/InputTip.exe", + "https://github.com/abgox/InputTip/releases/download/v" newVersion "/InputTip.exe" + ] + done := false + for v in releases { try { - RunWait('taskkill /f /t /im InputTip.JAB.JetBrains.exe', , "Hide") - FileDelete("InputTip.JAB.JetBrains.exe") + Download(v, A_AppData "\abgox-InputTip.exe") + ; 尝试获取版本号,成功获取则表示下载没有问题 + done := FileGetVersion(A_AppData "\abgox-InputTip.exe") + break } } - try { - Run("powershell -NoProfile -Command $i=1;while (Get-Process | Where-Object { $_.Path -eq '" A_ScriptFullPath "' }) { Start-Sleep -Milliseconds 500;i++;if($i -gt 30){break}};Move-Item -Force '" A_AppData "\abgox-InputTip.exe' '" A_ScriptDir "\" A_ScriptName "';''| Out-File '" A_AppData "\.abgox-InputTip-update-version.txt' -Force;Start-Process '" A_ScriptDir "\" A_ScriptName "'", , "Hide") - ExitApp() - } catch { - done := false + if (done) { + if (enableJetBrainsSupport) { + try { + RunWait('taskkill /f /t /im InputTip.JAB.JetBrains.exe', , "Hide") + FileDelete("InputTip.JAB.JetBrains.exe") + } + } + try { + Run("powershell -NoProfile -Command $i=1;while (Get-Process | Where-Object { $_.Path -eq '" A_ScriptFullPath "' }) { Start-Sleep -Milliseconds 500;i++;if($i -gt 30){break}};Move-Item -Force '" A_AppData "\abgox-InputTip.exe' '" A_ScriptDir "\" A_ScriptName "';''| Out-File '" A_AppData "\.abgox-InputTip-update-version.txt' -Force;Start-Process '" A_ScriptDir "\" A_ScriptName "'", , "Hide") + ExitApp() + } catch { + done := false + } } - } - if (!done) { - createGui(fn).Show() - fn(x, y, w, h) { - g := Gui("AlwaysOnTop") - g.SetFont(fz, "微软雅黑") - bw := w - g.MarginX * 2 - g.AddText("cRed", "InputTip 新版本下载错误!") - g.AddText("xs cRed", "请手动下载最新版本的 InputTip.exe 文件并替换。") - g.AddText(, "--------------------------------------------------") - g.AddText("xs", "官网:") - g.AddLink("yp", 'https://inputtip.pages.dev') - g.AddText("xs", "Github:") - g.AddLink("yp", 'https://github.com/abgox/InputTip') - g.AddText("xs", "Gitee: :") - g.AddLink("yp", 'https://gitee.com/abgox/InputTip') - y := g.AddButton("xs w" bw, "我知道了") - y.OnEvent("Click", yes) - y.Focus() - g.OnEvent("Close", yes) - yes(*) { - g.Destroy() - try { - FileDelete(A_AppData "\abgox-InputTip.exe") + if (!done) { + createGui(fn).Show() + fn(x, y, w, h) { + g := Gui("AlwaysOnTop") + g.SetFont(fz, "微软雅黑") + bw := w - g.MarginX * 2 + g.AddText("cRed", "InputTip 新版本下载错误!") + g.AddText("xs cRed", "请手动下载最新版本的 InputTip.exe 文件并替换。") + g.AddText(, "--------------------------------------------------") + g.AddText("xs", "官网:") + g.AddLink("yp", 'https://inputtip.pages.dev') + g.AddText("xs", "Github:") + g.AddLink("yp", 'https://github.com/abgox/InputTip') + g.AddText("xs", "Gitee: :") + g.AddLink("yp", 'https://gitee.com/abgox/InputTip') + y := g.AddButton("xs w" bw, "我知道了") + y.OnEvent("Click", yes) + y.Focus() + g.OnEvent("Close", yes) + yes(*) { + g.Destroy() + checkUpdate() + try { + FileDelete(A_AppData "\abgox-InputTip.exe") + } } + return g } - return g } } + g.AddButton("xs w" bw, "忽略更新").OnEvent("Click", no) + no(*) { + g.Destroy() + global checkUpdateDelay := 0 + writeIni("checkUpdateDelay", 0) + showMsg(["忽略版本更新成功!", "如果你在使用过程中有任何问题,首先需要确定是否为最新版本。", "如果更新到最新版本,问题依然存在,请前往 Github 发起一个 issue", "Github 和其他相关地址可以在软件托盘菜单的 「关于」 中找到"], "我知道了") + } + g.OnEvent("Close", close) + close(*) { + g.Destroy() + checkUpdate() + } + return g } - g.AddButton("xs w" bw, "忽略更新").OnEvent("Click", no) - no(*) { - g.Destroy() - global ignoreUpdate := 1 - writeIni("ignoreUpdate", 1) - A_TrayMenu.Check("忽略更新") - showMsg(["忽略版本更新成功!", "即使有新版本,下次启动时也不会再提示更新。", "如果你在使用过程中有任何问题,首先需要确定是否为最新版本。", "如果更新到最新版本,问题依然存在,请前往 Github 发起一个 issue", "Github 和其他相关地址可以在软件托盘菜单的 「关于」 中找到"], "我知道了") - } - return g } - } - } else { - checkVersion(currentVersion, updatePrompt) - updatePrompt(newVersion, url) { - createGui(fn).Show() - fn(x, y, w, h) { - g := Gui("AlwaysOnTop") - g.SetFont(fz, "微软雅黑") - bw := w - g.MarginX * 2 - g.AddText(, "- 你正在通过项目源代码启动 InputTip") - g.AddText("xs", "- InputTip 有版本更新:") - g.AddText("yp cff5050", "v" currentVersion) - g.AddText("yp ", ">") - g.AddText("yp cRed", "v" newVersion) - g.AddText("xs", "- 你应该使用") - g.AddText("yp cRed", "git pull") - g.AddText("yp", "拉取最新的代码更改,并重启 " A_ScriptName) - g.AddText("xs", "---------------------------------------------------------------------") - g.AddLink("xs", '项目仓库地址: Github Gitee') - g.AddLink("xs", '版本更新日志: 官网 Github Gitee') - y := g.AddButton("w" bw, "我知道了") - y.OnEvent("Click", yes) - y.Focus() - yes(*) { - g.Destroy() + } else { + checkVersion(currentVersion, updatePrompt) + updatePrompt(newVersion, url) { + if (WinExist("InputTip - 有新版本啦,快点击更新体验新版本吧! ")) { + SetTimer(checkUpdateTimer, 0) + return } - g.AddButton("xs w" bw, "忽略更新").OnEvent("Click", no) - no(*) { - g.Destroy() - global ignoreUpdate := 1 - writeIni("ignoreUpdate", 1) - A_TrayMenu.Check("忽略更新") - showMsg(["忽略版本更新成功!", "即使有新版本,下次启动时也不会再提示更新。", "如果你在使用过程中有任何问题,首先需要确定是否为最新版本。", "如果更新到最新版本,问题依然存在,请前往 Github 发起一个 issue", "Github 和其他相关地址可以在软件托盘菜单的 「关于」 中找到"], "我知道了") + createGui(fn).Show() + fn(x, y, w, h) { + g := Gui("AlwaysOnTop", "InputTip - 有新版本啦,快点击更新体验新版本吧! ") + g.SetFont(fz, "微软雅黑") + bw := w - g.MarginX * 2 + g.AddText(, "- 你正在通过项目源代码启动 InputTip") + g.AddText("xs", "- InputTip 有版本更新:") + g.AddText("yp cff5050", "v" currentVersion) + g.AddText("yp ", ">") + g.AddText("yp cRed", "v" newVersion) + g.AddText("xs", "- 你应该使用") + g.AddText("yp cRed", "git pull") + g.AddText("yp", "拉取最新的代码更改,并重启 " A_ScriptName) + g.AddText("xs", "---------------------------------------------------------------------") + g.AddLink("xs", '项目仓库地址: Github Gitee') + g.AddLink("xs", '版本更新日志: 官网 Github Gitee') + y := g.AddButton("w" bw, "我知道了") + y.OnEvent("Click", yes) + y.Focus() + g.OnEvent("Close", yes) + yes(*) { + g.Destroy() + checkUpdate() + } + g.AddButton("xs w" bw, "忽略更新").OnEvent("Click", no) + no(*) { + g.Destroy() + global checkUpdateDelay := 0 + writeIni("checkUpdateDelay", 0) + showMsg(["忽略版本更新成功!", "如果你在使用过程中有任何问题,首先需要确定是否为最新版本。", "如果更新到最新版本,问题依然存在,请前往 Github 发起一个 issue", "Github 和其他相关地址可以在软件托盘菜单的 「关于」 中找到"], "我知道了") + } + return g } - return g } } } diff --git a/src/v2/utils/options.ahk b/src/v2/utils/options.ahk index d2d44d5..0ee312c 100644 --- a/src/v2/utils/options.ahk +++ b/src/v2/utils/options.ahk @@ -13,5 +13,5 @@ InstallMouseHook CoordMode 'Mouse', 'Screen' SetStoreCapsLockMode 0 -;@AHK2Exe-SetVersion 2.28.0 -currentVersion := "2.28.0" +;@AHK2Exe-SetVersion 2.28.1 +currentVersion := "2.28.1" diff --git a/src/v2/utils/tray-menu.ahk b/src/v2/utils/tray-menu.ahk index e9a2b74..90229bb 100644 --- a/src/v2/utils/tray-menu.ahk +++ b/src/v2/utils/tray-menu.ahk @@ -1,13 +1,5 @@ makeTrayMenu() { A_TrayMenu.Delete() - A_TrayMenu.Add("忽略更新", fn_ignore_update) - fn_ignore_update(item, *) { - global ignoreUpdate := !ignoreUpdate - writeIni("ignoreUpdate", ignoreUpdate) - A_TrayMenu.ToggleCheck(item) - checkUpdate() - } - ignoreUpdate ? A_TrayMenu.Check("忽略更新") : 0 A_TrayMenu.Add("开机自启动", fn_startup) fn_startup(item, *) { global isStartUp @@ -80,6 +72,29 @@ makeTrayMenu() { if (isStartUp) { A_TrayMenu.Check("开机自启动") } + A_TrayMenu.Add("设置更新检测", fn_check_update) + fn_check_update(item, *) { + createGui(fn).Show() + fn(x, y, w, h) { + g := Gui("AlwaysOnTop", "InputTip - 设置更新检测") + g.SetFont(fz, "微软雅黑") + g.AddText("cRed", "- 单位是分钟,默认是 1440 分钟,即一天。`n- 如果不为 0,在系统启动后,会立即检测一次。`n- 如果为 0,则表示不自动检测更新。`n") + g.AddText("xs", "每隔多少分钟检测一次更新: ") + _c := g.AddEdit("yp Number vcheckUpdateDelay") + _c.Value := readIni("checkUpdateDelay", 1440) + _c.OnEvent("Change", fn_change_delay) + fn_change_delay(item, *) { + if (item.value != "") { + writeIni("checkUpdateDelay", item.value) + global checkUpdateDelay := item.value + if (checkUpdateDelay) { + checkUpdate() + } + } + } + return g + } + } A_TrayMenu.Add("设置输入法模式", fn_input_mode) fn_input_mode(item, *) { createGui(fn).Show() @@ -319,7 +334,7 @@ makeTrayMenu() { bw := w - g.MarginX * 2 g.AddText("cRed", "「白」名单机制: 只有在白名单中的应用进程窗口会显示符号。`n「黑」名单机制: 只有不在黑名单中的应用进程窗口会显示符号。") - g.AddText(, "1. 建议使用白名单机制,这样可以精确控制哪些应用进程窗口需要显示符号。`n2. 使用白名单机制,可以减少大量特殊窗口的兼容性问题。`n3. 如果选择了白名单机制,请及时添加你需要使用的应用进程到白名单中") + g.AddText(, "1. 建议使用白名单机制,这样可以精确控制哪些应用进程窗口需要显示符号。`n2. 使用白名单机制,可以减少大量特殊窗口的兼容性问题。`n3. 如果选择了白名单机制,请及时添加你需要使用的应用进程到白名单中。") g.AddText(, "-------------------------------------------------------------------------------------") g.AddText(, "选择显示符号的名单机制: ") @@ -1291,16 +1306,17 @@ makeTrayMenu() { _handle(to) { g_1.Destroy() gc.%"LV_" from%.Delete(RowNumber) - config := "app_" from - value := readIni(config, "") - res := "" - for v in StrSplit(value, ":") { - if (Trim(v) && v != RowText) { - res .= ":" v + if (from != "add") { + config := "app_" from + value := readIni(config, "") + res := "" + for v in StrSplit(value, ":") { + if (Trim(v) && v != RowText) { + res .= ":" v + } } + writeIni(config, SubStr(res, 2)) } - writeIni(config, SubStr(res, 2)) - gc.%"LV_" to%.Add(, RowText) config := "app_" to value := readIni(config, "") @@ -1917,10 +1933,10 @@ getCursorDir() { loopDir(path) { Loop Files path "\*", "DR" { if (A_LoopFileAttrib ~= "D") { - loopDir A_LoopFileShortPath - if (!hasChildDir(A_LoopFileShortPath)) { - if (!InStr(dirList, ":" A_LoopFileShortPath ":") && !InStr(defaultList, ":" A_LoopFileShortPath ":")) { - dirList .= A_LoopFileShortPath ":" + loopDir A_LoopFilePath + if (!hasChildDir(A_LoopFilePath)) { + if (!InStr(dirList, ":" A_LoopFilePath ":") && !InStr(defaultList, ":" A_LoopFilePath ":")) { + dirList .= A_LoopFilePath ":" } } } @@ -1942,9 +1958,9 @@ getPicDir() { picList := ":" defaultList := ":InputTipSymbol\default\Caps.png:InputTipSymbol\default\EN.png:InputTipSymbol\default\CN.png:" Loop Files "InputTipSymbol\*", "R" { - if (A_LoopFileExt = "png" && A_LoopFileShortPath != "InputTipSymbol\default\offer.png") { - if (!InStr(picList, ":" A_LoopFileShortPath ":") && !InStr(defaultList, ":" A_LoopFileShortPath ":")) { - picList .= A_LoopFileShortPath ":" + if (A_LoopFileExt = "png" && A_LoopFilePath != "InputTipSymbol\default\offer.png") { + if (!InStr(picList, ":" A_LoopFilePath ":") && !InStr(defaultList, ":" A_LoopFilePath ":")) { + picList .= A_LoopFilePath ":" } } } diff --git a/src/v2/utils/var.ahk b/src/v2/utils/var.ahk index d826329..7669320 100644 --- a/src/v2/utils/var.ahk +++ b/src/v2/utils/var.ahk @@ -40,12 +40,11 @@ statusModeEN := readIni("statusModeEN", "", "InputMethod") conversionModeEN := readIni("conversionModeEN", "", "InputMethod") checkTimeout := readIni("checkTimeout", 500, "InputMethod") - ; 是否使用 Shift 键切换输入法状态 useShift := readIni("useShift", 1) -; 是否启用白名单 -useWhiteList := readIni("useWhiteList", 1) +; 是否使用白名单机制 +useWhiteList := readIni("useWhiteList", 0) ; 是否改变鼠标样式 changeCursor := readIni("changeCursor", 0) diff --git a/src/v2/utils/verify-file.ahk b/src/v2/utils/verify-file.ahk index fd0e37c..d5098bd 100644 --- a/src/v2/utils/verify-file.ahk +++ b/src/v2/utils/verify-file.ahk @@ -61,6 +61,9 @@ checkIni() { writeIni("JetBrains_list", "WebStorm64.exe:DataGrip64.exe:PhpStorm64.exe:PyCharm64.exe:Rider64.exe:CLion64.exe:RubyMine64.exe:GoLand64.exe:Idea64.exe:DataSpell64.exe") } } else { + ; 是否使用白名单机制,如果是第一次使用,就直接使用白名单机制 + useWhiteList := readIni("useWhiteList", 1) + isContinue := true createGui(fn1).Show() fn1(x, y, w, h) { @@ -125,7 +128,7 @@ checkIni() { g.AddText("cRed", "对于符号显示,InputTip 现在默认使用白名单机制。") g.AddText("cRed", "白名单机制: 只有在白名单中的应用进程窗口会显示符号。") - g.AddText(, "建议立即添加应用进程到白名单中") + g.AddText(, "建议立即添加应用进程到白名单中。") g.AddButton("w" bw, "【是】现在就添加应用进程").OnEvent("Click", add_white_list) g.AddButton("w" bw, "【否】不了,等一下再添加").OnEvent("Click", no) add_white_list(*) { diff --git a/src/v2/version.txt b/src/v2/version.txt index 90efbd4..9738a24 100644 --- a/src/v2/version.txt +++ b/src/v2/version.txt @@ -1 +1 @@ -2.28.0 +2.28.1