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