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

WIN10下选择默认下载目录,下载完成时提示 无法打开 C:\Windows\system32\Downloads #575

Closed
edwinhuish opened this issue Mar 21, 2020 · 14 comments

Comments

@edwinhuish
Copy link

edwinhuish commented Mar 21, 2020

错误描述
我的WIN10的默认下载目录我设置为 E:\Downloads,每次下载完成后,点击下载完成提示信息本应打开下载目录,却弹出一个错误提示:“无法打开目录 C:\Windows\system32\Downloads”

如何重现
重现步骤,如:

  1. 新下载安装好的Motrix
  2. 设置为系统默认的下载目录(或者不设置?因为INPUT上都是显示 Downloads,根本看不出是否有变动。)
  3. 下载任意文件,等待完成
  4. 点击完成的提示,弹出错误提示:“无法打开目录 C:\Windows\system32\Downloads”

预期的行为
理应正常打开下载目录,并选中下载的文件

截图

运行环境

  • 操作系统类型: Windows
  • 具体版本: WIN10, 1909 [内部版本:18363.720]
  • Motrix 版本: 1.4.1
  • 安装包类型:exe

更多信息
有理由怀疑是下面的 diffConfig 所造成的问题。
通过追踪代码发现 diffConfig 是通过对比 VUEX 保存的值和 form 表单的值筛选出差异。
但是,经过用控制台调试发现,this.formOriginal 一直都是开启 Motrix 时的值,每次提交form并没有触发更新。

PS: 本准备自己调试好后提PR的,奈何自己的水平不够,只能提issues

submitForm (formName) {
  this.$refs[formName].validate((valid) => {
    if (!valid) {
      console.log('error submit!!')
      return false
    }

    const { runMode, openAtLogin, autoHideWindow } = this.form
    const changed = diffConfig(this.formOriginal, this.form)
    const data = {
      ...changed
    }
    console.log('changed====》', data)

    this.$store.dispatch('preference/save', data)
      .then(() => {
        this.$store.dispatch('app/fetchEngineOptions')
        this.syncFormConfig()
        this.$msg.success(this.$t('preferences.save-success-message'))
      })
      .catch(() => {
        this.$msg.success(this.$t('preferences.save-fail-message'))
      })

    if (this.isRenderer()) {
      this.$electron.ipcRenderer.send('command',
        'application:open-at-login', openAtLogin)

      this.$electron.ipcRenderer.send('command',
        'application:toggle-dock', runMode === APP_RUN_MODE.STANDARD)

      this.$electron.ipcRenderer.send('command',
        'application:auto-hide-window', autoHideWindow)

      if (checkIsNeedRestart(changed)) {
        this.$electron.ipcRenderer.send('command',
          'application:relaunch')
      }
    }
  })
}
@agalwood
Copy link
Owner

用编辑器打开 system.json 看下 dir 的值是啥,如果无法通过偏好设置界面修改,试下直接修改 dir 能否修正你这个问题

system.json 的位置参见这个 #530 (comment)

@edwinhuish
Copy link
Author

通过查看 system.json 以及控制台,实测打开 Motrix 后,第一次修改操作是正常的,后面的修改操作都无法进行。

初始值:

image

随便修改一个值:

image
image

然后尝试修改回 Downloads:

image
image

@edwinhuish
Copy link
Author

edwinhuish commented Mar 22, 2020

刚刚安装造成的完成提示路径问题,暂时无法呈现,貌似因为已经成功设定路径了。之前不知道怎么打开控制台以及config.json,故没有调试。

不过神奇的是,下载文件路径是正确的,就是完成提示才有BUG

@agalwood
Copy link
Owner

dir 修改回 Download 目录不触发 changed 的问题我在 macOS 上没有复现。

如果你有空的话可以帮忙调试一下 showTaskCompleteNotify 里的 path 是否有问题,

如果你重置偏好设置,你的 dir 的值是什么?

dir 的默认值我是调用 Electron 的 app.getPath('downloads') 获取的,不知道 Electron 有没有适配 Windows 修改系统默认的下载目录的情况。

@edwinhuish
Copy link
Author

首先如何重置偏好设置?

另外,我也想源码调试,问题是这个zip一直下载不下来,无论是开全局梯子还是PAC,都一样下不来。唯一的办法是进入build后的控制台去断点,问题你得先告诉我怎么重置设置??

image

@edwinhuish
Copy link
Author

在软件里的进阶设置找到了重置设定,但是重置后的设定是正确的,进行下载测试也是正常的。容我先卸载后重装一次试试。

@agalwood
Copy link
Owner

Electron 下载不下来的问题可以使用这个法子
electron/electron#8466 (comment)

node ./node_modules/electron/install.js

@edwinhuish
Copy link
Author

断点进去看到PATH还是正确的,也正常弹出了文件目录。 但是同时 Motrix 提示错误??如下面2个图片,第一个是控制台断点显示path正常,第二个是 Motrix 提示错误。

image

image

@edwinhuish
Copy link
Author

源码调试发现和你 release 里的exe不一致:

  1. 来回修改下载目录并没有出现无法修改的BUG。(原设置停留在刚打开Motrix时的设置)
  2. 修改一些设置,比如隐藏菜单栏,会自动重启Motrix,release的exe却不会。直到手动重启Motrix才看到区别。

估计这两个问题都在于VUEX无法得到更新所导致的。 另外之前那个无法打开C:\Windows\system32\Downloads 的BUG没有重现。

@edwinhuish
Copy link
Author

发现一个小BUG:

src/renderer/components/Subnav/PreferenceSubnav.vue 里的 catch 方法报错了,对VUE不是很熟,貌似 this.$router.push 并没有返回值,所以导致catch出错,注释掉就好了。
image

image

@edwinhuish
Copy link
Author

断点 utils.js 函数发现 result 为 undefined

image

@agalwood
Copy link
Owner

master 源码是领先上一个 release 好多提交了,这大半年忙,一直拖着没发布

@edwinhuish
Copy link
Author

OK, 期待你的新release

@agalwood
Copy link
Owner

请更新 Motrix 到 v1.5.x 版本
https://github.com/agalwood/Motrix/releases

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

2 participants