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

Windows 端不再支持安装时选择安装路径 #6385

Closed
88250 opened this issue Oct 28, 2022 · 53 comments
Closed

Windows 端不再支持安装时选择安装路径 #6385

88250 opened this issue Oct 28, 2022 · 53 comments
Assignees
Milestone

Comments

@88250
Copy link
Member

88250 commented Oct 28, 2022

避免因为安装路径选择不当导致数据丢失。

如果需要自定义安装目录可以通过 /D 参数,细节可参考 #6390 感谢 @Zuoqiu-Yingyi 贡献方案。

@88250 88250 added this to the 2.4.8 milestone Oct 28, 2022
@88250 88250 self-assigned this Oct 28, 2022
@Zuoqiu-Yingyi
Copy link
Contributor

可以设置为覆盖安装(升级)时不能重新选择安装路径

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

可以设置为覆盖安装(升级)时不能重新选择安装路径

都不支持选择。

@88250 88250 changed the title 不再支持安装时选择安装路径和用户 Windows 端不再支持安装时选择安装路径和用户 Oct 28, 2022
@Zuoqiu-Yingyi
Copy link
Contributor

@88250 那能使用命令行参数自定义安装目录吗

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

暂时不考虑了。

@Zuoqiu-Yingyi
Copy link
Contributor

不让选择安装目录会被当做流氓软件的...

@leolee9086
Copy link

这个 好像是有被误解的风险啊

@mozhux
Copy link

mozhux commented Oct 28, 2022

这个要不还是限制工作空间目录不能设置为安装目录吧,就是在选择的时候校验报错。限制安装路径的话会被说的,而且windows商店版本身就是限制的,但是也不可避免工作空间选到安装路径去啊

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

工作空间切换的时候已经判断过了。

@mozhux
Copy link

mozhux commented Oct 28, 2022

工作空间切换的时候已经判断过了。

那也不能因为极个别用户的误操作就直接砍了选择安装路径吧。我倒是觉得更新覆盖安装这种默认不给选择是合理的,首次安装的时候为啥不能呢?

@Tlonglan
Copy link

所以这是要强制安装在C盘吗?让本不充足的C盘空间变得更加紧巴巴:joy:

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

工作空间切换的时候已经判断过了。

那也不能因为极个别用户的误操作就直接砍了选择安装路径吧。我倒是觉得更新覆盖安装这种默认不给选择是合理的,首次安装的时候为啥不能呢?

不是极个别用户了,差不多时有发生。首次安装也会因为是卸载后安装到工作空间路径。

@Zuoqiu-Yingyi
Copy link
Contributor

不是极个别用户了,差不多时有发生。首次安装也会因为是卸载后安装到工作空间路径。

现在的方案是因噎废食, 建议找个更好的方案

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

不是极个别用户了,差不多时有发生。首次安装也会因为是卸载后安装到工作空间路径。

现在的方案是因噎废食, 建议找个更好的方案

找了很长时间了,没有找到,欢迎建议或者直接 PR 改进。

@Temacc0531
Copy link

Temacc0531 commented Oct 28, 2022

同样觉得这个决定不太妥当,希望再慎重考虑下

@Zuoqiu-Yingyi
Copy link
Contributor

找了很长时间了,没有找到,欢迎建议或者直接 PR 改进。

可以在自定义的目录下搜索 data 目录, 如果存在的话即可判断用户将安装目录放置在了工作区上级, 这时可以警告并终止安装

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

说实话,这问题我们已经考虑了一年了。能有更好的方案的话就不会这样决定了。

特别是对于普通用户,在不熟悉工作原理的情况下让其没有选择可选项是最稳妥的,数据安全是第一位需要考虑的。

@mozhux
Copy link

mozhux commented Oct 28, 2022

不清楚原理,但不知道是否可以借鉴Foxmail这种软件的安装模式?升级安装后的运行文件都是单独新的文件夹,数据文件还是单独在的并不会说覆盖安装了就会把相应的邮件清空了。

@Zuoqiu-Yingyi
Copy link
Contributor

说实话,这问题我们已经考虑了一年了。能有更好的方案的话就不会这样决定了。

特别是对于普通用户,在不熟悉工作原理的情况下让其没有选择可选项是最稳妥的,数据安全是第一位需要考虑的。

更好的方案就是自己写 NSIS 脚本...

@Zuoqiu-Yingyi
Copy link
Contributor

@88250 NSIS 脚本的 IfFileExists 命令可以使用通配符检测某个目录/文件是否存在

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

存在了安装不了没法解决。

@Temacc0531
Copy link

那希望能加个命令行参数自定义安装目录吧,这样普通用户也不会触发到

@Zuoqiu-Yingyi
Copy link
Contributor

存在了安装不了没法解决。

弹窗提醒用户更换安装目录呀, 毕竟安装程序要解决的问题是避免安装到工作空间造成数据丢失, 存在了安装不了就是用户需要解决的问题了

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

存在了安装不了没法解决。

弹窗提醒用户更换安装目录呀, 毕竟安装程序要解决的问题是避免安装到工作空间造成数据丢失, 存在了安装不了就是用户需要解决的问题了

这个问题如果这样看的话那实际上根本没有问题嘛,之前该提示也提示了,没人看提示内容的。就算禁止安装,也没有人看为啥禁止安装的,只会反馈说安装不了。

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

那希望能加个命令行参数自定义安装目录吧,这样普通用户也不会触发到

只要开了口就有风险,除非自己改代码打包。

@Zuoqiu-Yingyi
Copy link
Contributor

无法安装然后就告辞了……

用户真的不是文盲, 告辞前还是会瞅瞅警告的😂

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

不讨论了,提示并禁止安装的方案不 ok。

@Temacc0531
Copy link

建议把现在的工作空间更名为文档空间或资料空间,现在的工作空间有被误解为软件工作空间(目录)的意思

@Zuoqiu-Yingyi
Copy link
Contributor

不讨论了,提示并禁止安装的方案不 ok。

禁止自定义安装目录更不 ok

@Zuoqiu-Yingyi
Copy link
Contributor

不讨论了,提示并禁止安装的方案不 ok。

就像许多软件自定义安装目录时必须选择一个空目录, 选择非空目录弹窗警告并阻止安装一样, 有什么问题吗

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

不讨论了,提示并禁止安装的方案不 ok。

就像许多软件自定义安装目录时必须选择一个空目录, 选择非空目录弹窗警告并阻止安装一样, 有什么问题吗

很多软件也是不允许选择安装路径的,有什么问题吗

@Zuoqiu-Yingyi
Copy link
Contributor

很多软件也是不允许选择安装路径的,有什么问题吗

有, 我选择不使用这些流氓软件

@andyer1511
Copy link

andyer1511 commented Oct 28, 2022

建议把现在的工作空间更名为文档空间或资料空间,现在的工作空间有被误解为软件工作空间(目录)的意思

我也觉得大部分安装错的,是对工作空间的理解有偏差。
还有一个不容易理解的地方就是面包屑,比如面包屑改为文档内内容块导航栏更合适。

@88250
Copy link
Member Author

88250 commented Oct 28, 2022

很多软件也是不允许选择安装路径的,有什么问题吗

有, 我选择不使用这些流氓软件

😂

@andyer1511
Copy link

很多软件也是不允许选择安装路径的,有什么问题吗

有, 我选择不使用这些流氓软件

😂

可以理解。也有很多人的电脑都用了挺多年的。人都是懒惰的,就算新买了固态,也不会费劲的把系统迁移到新固态。而是添加为新盘符,如果默认安装C盘,那对这部分人的打开软件速度的用户体验会下降一大截。

@aptexd
Copy link

aptexd commented Oct 28, 2022

“因噎废食”还是要谨慎呀
虽然我全固态硬盘以后,全部软件都是默认路径

@woniuxia
Copy link

当前已经指定路径的数据,如何处理?
帮忙迁移?

@UFDXD
Copy link

UFDXD commented Oct 28, 2022

小心那些自媒体笔记软件对比一句,“不支持自定义路径”,让潜在用户流失

@UFDXD
Copy link

UFDXD commented Oct 28, 2022

@88250 还是弄个链滴投标贴让大家决定一下吧,不然突然新更改让用户反感。

@xy0124
Copy link

xy0124 commented Oct 28, 2022

软件安装的引导文字做修改很重要,软件安装的位置是:安装路径“;
本地的笔记资料“工作空间”修改为“我的笔记”或者“笔记资料”等等,避免出现空间这类的词语有一种潜意识的导向性,让人误会是软件安装的位置。

@LinYunerr
Copy link

我建议是在安装过程页面写一下为什么不能改的原因,这样也会让大家更好理解一些,毕竟不是所有人都会看更新issues的

@mdzz2048
Copy link
Contributor

mdzz2048 commented Oct 28, 2022

能不能考虑把安装界面做成类似QQ这样的?在安装的时候就给用户进行安装路径和工作空间的区分。
就算没用过思源这样区分安装路径和工作空间的,用QQ的安装路径和文件保存位置理解起来也比较简单。

image

@Hyd19
Copy link

Hyd19 commented Oct 28, 2022

存在了安装不了没法解决。

弹窗提醒用户更换安装目录呀, 毕竟安装程序要解决的问题是避免安装到工作空间造成数据丢失, 存在了安装不了就是用户需要解决的问题了

这个问题如果这样看的话那实际上根本没有问题嘛,之前该提示也提示了,没人看提示内容的。就算禁止安装,也没有人看为啥禁止安装的,只会反馈说安装不了。

其实恰恰是能够正常安装,所以很多人才会不看提醒,直接确定、下一步,然后造成不可挽回的损失。如果无法安装了,再弹窗,反而会认认真真看一遍提醒。

@UFDXD
Copy link

UFDXD commented Oct 28, 2022

存在了安装不了没法解决。

弹窗提醒用户更换安装目录呀, 毕竟安装程序要解决的问题是避免安装到工作空间造成数据丢失, 存在了安装不了就是用户需要解决的问题了

这个问题如果这样看的话那实际上根本没有问题嘛,之前该提示也提示了,没人看提示内容的。就算禁止安装,也没有人看为啥禁止安装的,只会反馈说安装不了。

其实恰恰是能够正常安装,所以很多人才会不看提醒,直接确定、下一步,然后造成不可挽回的损失。如果无法安装了,再弹窗,反而会认认真真看一遍提醒。

弄个倒计时读秒弹窗,强制看就行了(让他没有直接下一步)

@tcmtom
Copy link

tcmtom commented Oct 28, 2022

支持强制提醒,支持让用户选择
反对强制默认安装路径

@iamqiz
Copy link
Contributor

iamqiz commented Oct 28, 2022

附议,不能选择安装目录的软件,太令人反感了 ,不是每个人的C盘都很大,都是固态硬盘
这种大决策我觉得还是要事先投票收集下大家的意见比较好

@svchord
Copy link

svchord commented Oct 28, 2022

不知道这样能不能行:

安装的第一步选择安装目录,第二步选择工作空间目录(该步骤可以勾选已存在的工作空间),然后如果工作空间目录在安装目录下,就无法点击下一步,并在安装页面上显示红色提示(而不是弹窗)。

这样有两个好处:

  1. 更简单易懂地保证路径没问题——只需要对比多个目录路径就好了(包括已选择的目录路径和已存在的工作空间路径),不需要用命令查询安装目录下是否有工作空间目录。
  2. 解决用户看到警告弹窗时产生的警惕心理。

@iSyser
Copy link

iSyser commented Oct 28, 2022

对于一个旧版本来说,可以软件安装在 D 盘,数据却在默认的安装路径上,此时如果软件更新强制安装在默认路径上,反而造成了数据丢失的风险。因此 D 大的强行禁掉安装路径选择,仍然避免不了数据迁移。

可就此简单方案进行技术、用户交互等等方面的讨论
部署分为“安装”、“修改”、“卸载”三类。

讨论之前,我们约定有关软件路径的设置,存储在 %LocalAppData%/siyuan 或者注册表等方便部署程序存取的位置,下文以 %LocalAppData%/siyuan 为例。

安装

安装是指全新的部署,此前计算机中并无残留的配置、文件。

给定默认的安装路径,为 "%ProgramFiles(x86)%/siyuan",给定默认的工作空间路径,为 "%UserProfile%/siyuan"。当用户修改任意一者时,判断其中一者是否为另一者的子集(请注意展开环境变量、符号链接等等,判断最终的真实地址),若是,则禁用“下一步”按钮,添加“恢复默认路径”按钮,此时,窗口中仅有五个元素处于可用状态,分别是

  1. 窗口关闭按钮
  2. 编辑安装路径的文本域(或称编辑框),也可以再在右侧(希腊、阿拉伯、希伯来左侧)放一个选择路径的小按钮
  3. 编辑工作路径的文本域(或称编辑框),也可以再在右侧(希腊、阿拉伯、希伯来左侧)放一个选择路径的小按钮
  4. “恢复默认安装路径”的醒目按钮
  5. “恢复默认工作空间路径”的醒目按钮

此时,“下一步”已禁用,对于初阶用户,只能点击恢复默认路径以继续安装流程;而对于更进阶的用户,可以再次修改两者路径,直到两者不处于包含、父子关系。

安装时,请将此两者路径写入 %LocalAppData%/siyuan 中备用。此之前、之后的流程不变。

修改

如更新、修复、在有残留文件的情况下安装等过程。

  1. 对于执行本文件所描述的操作的最初版本之前的版本,我们需要对特定版本进行特定的操作,以提取到软件的安装路径、工作空间路径。

  2. 对于此版本之后的版本,检查存储于 %LocalAppData%/siyuan 中的数据,找到当前已安装版本的路径及工作空间。

至此,无论旧版本还是新版本,我们都已经找到安装路径和工作空间路径。对比,若任一者的 真实目录 都不是另一者的子集,即两者不是父子关系,则继续进行更新等流程,因此,对于此版本之后的版本,更新依然是可以无人值守的。

若两者是父子关系,对 UI 作类似上述变化,但此时工作空间的数据实际存在于其中,因此我们不能简单的恢复默认路径,这样会造成数据丢失的假象。我们分以下两种情况讨论:

  1. 当前的工作空间路径在“默认安装路径”之内

    此时,软件一定安装在默认路径。UI 给出“工作空间迁移到默认路径”,这按钮会导致数据迁移立即进行。

  2. 当前的工作空间路径不在默认安装路径之内

    此时,仅给出“恢复默认安装路径”按钮,而不给出“恢复默认工作空间路径”。这个选择是为了避免对数据迁移消耗太多时间,实际上数据不需要迁移。安装时,我们抹去旧版本的注册信息,用新的替代。再执行删除(手动卸载旧版)操作,此操作需要排除工作空间的路径内容。

至此,我们安全地完成了旧版本的升级,且在新版本情况下,除非用户手动修改存储于 %LocalAppData%/siyuan 中的数据,否则不可能因升级而造成数据丢失。

卸载

新版本的卸载可以询问用户是否保留配置、数据。配置是指存储于 %LocalAppData%/siyuan 中的数据,数据时指工作空间中的数据。也可以不询问,而选择完全保留此两者。这无关紧要,因为安装过程已足够严密。

这个流程是比较简单的,没有遇到问题时,和原先的安装、更新流程一致,遇到路径不合法时,对于普通用户而言,仅多了两个按钮,“迁移数据”,或者“恢复默认安装路径”。迁移数据调用 Windows 的接口,弹出可视的进度窗口,这样用户也知道正在做什么。
这两个按钮需要醒目些,如果无法做到,可以让其他元素不醒目些,如明暗对比、模糊与清晰对比,甚至,可以把它移动到原先“下一步”按钮所在的位置,这样看起来,就好像是正常升级流程的一部分,如果你口中的无脑用户一直无脑点,这个按钮就会被点到的。

@Zuoqiu-Yingyi
Copy link
Contributor

经过测试, 静默安装至默认路径在更新时依旧会卸载并清空原安装路径的内容, 且默认路径即为上次安装路径, 因此若用户工作空间设置在了安装目录下级, 依旧会丢失数据
静默安装前:
image
静默安装后:
image

@88250 88250 changed the title Windows 端不再支持安装时选择安装路径和用户 Windows 端不再支持安装时选择安装路径 Oct 28, 2022
@88250 88250 reopened this Oct 28, 2022
@88250 88250 closed this as completed Oct 28, 2022
@88250
Copy link
Member Author

88250 commented Oct 28, 2022

一些变更改进已经由 @Zuoqiu-Yingyi 提供实现,细节可参考 #6390 感谢各位的讨论和支持。

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

No branches or pull requests