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

添加便携模式 #125

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

添加便携模式 #125

wants to merge 1 commit into from

Conversation

spr-equinox
Copy link

尝试实现 #48

自己十分需要这个功能,就摸索着写来看,第一次写,感觉实现很差

在获取数据路径时,检查可执行文件路径下是否有名为 portable 的文件夹,有且有权限写入,则将数据路径替换为此文件夹

潜在问题:

  • 每次申请路径都要检查一遍,效率低下
  • fse.accessSync 貌似没起作用,只检查了文件夹有无,没法检查权限
  • Program Files的文件要管理员权限写入,所以不能在这个路径下启用便携模式(除非以管理员启动)

@spr-equinox spr-equinox force-pushed the main branch 2 times, most recently from bb8fc2e to a752041 Compare January 11, 2025 13:25
尝试实现 ximu3#48

在获取数据路径时,检查可执行文件路径下是否有名为 portable 的文件夹,有且有权限写入,则将数据路径替换为此文件夹

潜在问题:
- 每次申请路径都要检查一遍,效率低下
- fse.accessSync 貌似没起作用,只检查了文件夹有无,没法检查权限
- Program Files的文件要管理员权限写入,所以不能在这个路径下启用便携模式(除非以管理员启动)
@ximu3
Copy link
Owner

ximu3 commented Jan 11, 2025

便携模式迟迟没更新出来的原因主要是因为目前electron-builder打包出来的更新程序是全覆盖更新,如果数据库在根目录下会导致更新后数据库丢失。

@ximu3
Copy link
Owner

ximu3 commented Jan 11, 2025

便携模式迟迟没更新出来的原因主要是因为目前electron-builder打包出来的更新程序是全覆盖更新,如果数据库在根目录下会导致更新后数据库丢失。

抛砖引玉,目前我能想出的解决方案是写一个更新脚本,在用户更新时先判断是否为便携模式,如果是就把数据库转移到temp中,更新完再转移回去。
不过我还没尝试过这种方法,不知道能不能在更新程序全覆盖根目录前嵌入脚本。

@spr-equinox
Copy link
Author

spr-equinox commented Jan 11, 2025

感觉便携模式就用不着setup来安装,一般都是直接解压的,考虑打包个zip的?
有点像绿色版的处理方式

@ximu3
Copy link
Owner

ximu3 commented Jan 11, 2025

感觉便携模式就用不着setup来安装,一般都是直接解压的,考虑打包个zip的?

这样的话更新会很不方便,就不能在软件内自动更新了。

@spr-equinox
Copy link
Author

spr-equinox commented Jan 11, 2025

便携模式,理论上拷到其他设备上要能直接用
就不能写入注册表、系统信息之类的
拷到其他设备后,setup判断不了安装位置,也做不到自动更新,除非有传个什么参,这个我不太了解

@ximu3
Copy link
Owner

ximu3 commented Jan 11, 2025

如果不需要自动更新的话,那这个实现思路挺好的,我先合并,然后抽空再完善一下,目前更新需求有点多,可能会晚一些。

@ximu3
Copy link
Owner

ximu3 commented Jan 11, 2025

如果不需要自动更新的话,那这个实现思路挺好的,我先合并,然后抽空再完善一下,目前更新需求有点多,可能会晚一些。

看了下代码,文件IO有点多,会影响性能,可能还是得调整下。

@spr-equinox
Copy link
Author

看了下代码,文件IO有点多,会影响性能,可能还是得调整下。

是,应该只判断一次的,但没想到好的实现
还有检查权限也是坏的

观察了一下没有注册表update的行为,直接没有确认地给我装到Program Files去了

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

Successfully merging this pull request may close these issues.

2 participants