Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

“开机自启”无法启用 #27

Closed
netsonicyxf opened this issue Oct 15, 2023 · 13 comments
Closed

“开机自启”无法启用 #27

netsonicyxf opened this issue Oct 15, 2023 · 13 comments

Comments

@netsonicyxf
Copy link

Win10,管理员权限运行,启用“开机自启”,显示
添加快捷方式失败
请以管理员权限运行软件,重新操作

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 15, 2023

用管理员权限打开软件,才可以添加开机启动项。

右键 Umi-OCR.exe → 以管理员身份运行 → 重新添加开机自启

@netsonicyxf
Copy link
Author

如顶楼所述,已经试过“管理员权限运行,启用“开机自启””‘——失败

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 16, 2023

很抱歉,之前误解了你的意思。

那么请查看一下:

  1. Umi-OCR 可以创建桌面快捷方式吗?
  2. 你电脑上是否存在此路径? C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
  3. 如果存在上述路径,尝试将桌面快捷方式拷贝进该目录。能否成功?
  4. 打开命令提示符(win+R,输入cmd,回车)。在命令行输入 echo %ProgramData%。显示的值是否为C:\ProgramData

@zhengbolun1218
Copy link

win11 22H2 有同样的问题。可以创建桌面快捷方式,但是以管理员权限运行后,仍然无法添加开机自启和开始菜单。

@hiroi-sora
Copy link
Owner

@zhengbolun1218 如果可以,麻烦测试一下楼上的步骤,看看 Startup 目录是否正常。

@netsonicyxf
Copy link
Author

@hiroi-sora
可以手动把快捷方式放到“启动”文件夹实现开机启动,但程序里设置就不行

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 17, 2023

好的。如果可以,请做以下测试:

  1. 用记事本打开文件 UmiOCR-data\py_src\utils\shortcut.py
    你会看到一个 createShortcut 函数:
    @staticmethod  # 创建快捷方式,返回成功与否
    def createShortcut(position):
        lnkName = "Umi-OCR.lnk"
        appPath = os.environ["APP_PATH"]
        lnkPath = ShortcutApi.__getPath(position)
        lnkPath = os.path.join(lnkPath, lnkName)
        res = QFile.link(appPath, lnkPath)
        return res
  1. 将该函数,替换为下述内容:
    @staticmethod  # 创建快捷方式,返回成功与否
    def createShortcut(position):
        lnkName = "Umi-OCR"
        appPath = os.environ["APP_PATH"]
        lnkPathBase = ShortcutApi.__getPath(position)
        lnkPathBase = os.path.join(lnkPathBase, lnkName)
        lnkPath = lnkPathBase + ".lnk"
        i = 1
        while os.path.exists(lnkPath):  # 快捷方式已存在
            lnkPath = lnkPathBase + f" ({i}).lnk"  # 添加序号
            i += 1
        appFile = QFile(appPath)
        res = appFile.link(lnkPath)
        if not res:
            os.MessageBox(
                f"appPath:\n{appPath}\nlnkPath:\n{lnkPath}\n报错:\n{appFile.errorString()}",
                info="无法生成快捷方式",
            )
        return res
  1. 重新以管理员权限启动软件,并添加开机自启。此时如果操作失败,会弹出一个弹窗,展示报错信息。
    请将该弹窗截图给我。这个信息查明问题非常有用。

@zhengbolun1218
Copy link

替换后,已成功设置选项。可以开机自启

@hiroi-sora
Copy link
Owner

hiroi-sora commented Oct 17, 2023

我大概明白了。可能是文件名重复引起。

你可能以前用过旧版Umi-OCR并添加过开机自启,已经存在一个快捷方式。此时用新版Umi再添加新的快捷方式,就会存在文件冲突。

在一些系统中(我的测试环境),遇到冲突时,会让新的快捷方式文件强制覆盖掉旧的文件。但在你们的系统中,也许遇到冲突时会禁止执行操作。

我刚刚优化了创建代码,如果 Umi-OCR.lnk 已存在,则会创建 Umi-OCR (1).lnk 等带序号的快捷方式,避免文件名重复。

感谢测试~

@netsonicyxf
Copy link
Author

预览版 dev 20231018
管理员权限启动,启用“开机自启”,还是显示添加快捷方式失败

@hiroi-sora
Copy link
Owner

麻烦失败弹窗截个图,我看看

@netsonicyxf
Copy link
Author

刚试了下,又可以启用“开机自启”了。

@e71828
Copy link

e71828 commented Oct 28, 2023

哈哈,😄我们一般不关机。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants