Closed
Description
避免因为安装路径选择不当导致数据丢失。
如果需要自定义安装目录可以通过 /D
参数,细节可参考 #6390 感谢 @Zuoqiu-Yingyi 贡献方案。
Metadata
Metadata
Assignees
Type
Projects
Relationships
Development
No branches or pull requests
避免因为安装路径选择不当导致数据丢失。
如果需要自定义安装目录可以通过 /D
参数,细节可参考 #6390 感谢 @Zuoqiu-Yingyi 贡献方案。
Activity
Zuoqiu-Yingyi commentedon Oct 28, 2022
可以设置为覆盖安装(升级)时不能重新选择安装路径
88250 commentedon Oct 28, 2022
都不支持选择。
[-]不再支持安装时选择安装路径和用户[/-][+]Windows 端不再支持安装时选择安装路径和用户[/+]Zuoqiu-Yingyi commentedon Oct 28, 2022
@88250 那能使用命令行参数自定义安装目录吗
88250 commentedon Oct 28, 2022
暂时不考虑了。
🎨 Windows 端不再支持安装时选择安装路径和用户 Fix #6385
Zuoqiu-Yingyi commentedon Oct 28, 2022
不让选择安装目录会被当做流氓软件的...
leolee9086 commentedon Oct 28, 2022
这个 好像是有被误解的风险啊
mozhux commentedon Oct 28, 2022
这个要不还是限制工作空间目录不能设置为安装目录吧,就是在选择的时候校验报错。限制安装路径的话会被说的,而且windows商店版本身就是限制的,但是也不可避免工作空间选到安装路径去啊
88250 commentedon Oct 28, 2022
工作空间切换的时候已经判断过了。
mozhux commentedon Oct 28, 2022
那也不能因为极个别用户的误操作就直接砍了选择安装路径吧。我倒是觉得更新覆盖安装这种默认不给选择是合理的,首次安装的时候为啥不能呢?
33 remaining items
LinYunerr commentedon Oct 28, 2022
我建议是在安装过程页面写一下为什么不能改的原因,这样也会让大家更好理解一些,毕竟不是所有人都会看更新issues的
mdzz2048 commentedon Oct 28, 2022
能不能考虑把安装界面做成类似QQ这样的?在安装的时候就给用户进行安装路径和工作空间的区分。
就算没用过思源这样区分安装路径和工作空间的,用QQ的安装路径和文件保存位置理解起来也比较简单。
Hyd19 commentedon Oct 28, 2022
其实恰恰是能够正常安装,所以很多人才会不看提醒,直接确定、下一步,然后造成不可挽回的损失。如果无法安装了,再弹窗,反而会认认真真看一遍提醒。
UFDXD commentedon Oct 28, 2022
弄个倒计时读秒弹窗,强制看就行了(让他没有直接下一步)
tcmtom commentedon Oct 28, 2022
支持强制提醒,支持让用户选择
反对强制默认安装路径
iamqiz commentedon Oct 28, 2022
附议,不能选择安装目录的软件,太令人反感了 ,不是每个人的C盘都很大,都是固态硬盘
这种大决策我觉得还是要事先投票收集下大家的意见比较好
svchord commentedon Oct 28, 2022
不知道这样能不能行:
安装的第一步选择安装目录,第二步选择工作空间目录(该步骤可以勾选已存在的工作空间),然后如果工作空间目录在安装目录下,就无法点击下一步,并在安装页面上显示红色提示(而不是弹窗)。
这样有两个好处:
iSyser commentedon Oct 28, 2022
对于一个旧版本来说,可以软件安装在 D 盘,数据却在默认的安装路径上,此时如果软件更新强制安装在默认路径上,反而造成了数据丢失的风险。因此 D 大的强行禁掉安装路径选择,仍然避免不了数据迁移。
可就此简单方案进行技术、用户交互等等方面的讨论
部署分为“安装”、“修改”、“卸载”三类。
讨论之前,我们约定有关软件路径的设置,存储在
%LocalAppData%/siyuan
或者注册表等方便部署程序存取的位置,下文以%LocalAppData%/siyuan
为例。安装
安装是指全新的部署,此前计算机中并无残留的配置、文件。
给定默认的安装路径,为
"%ProgramFiles(x86)%/siyuan"
,给定默认的工作空间路径,为"%UserProfile%/siyuan"
。当用户修改任意一者时,判断其中一者是否为另一者的子集(请注意展开环境变量、符号链接等等,判断最终的真实地址),若是,则禁用“下一步”按钮,添加“恢复默认路径”按钮,此时,窗口中仅有五个元素处于可用状态,分别是此时,“下一步”已禁用,对于初阶用户,只能点击恢复默认路径以继续安装流程;而对于更进阶的用户,可以再次修改两者路径,直到两者不处于包含、父子关系。
安装时,请将此两者路径写入
%LocalAppData%/siyuan
中备用。此之前、之后的流程不变。修改
如更新、修复、在有残留文件的情况下安装等过程。
对于执行本文件所描述的操作的最初版本之前的版本,我们需要对特定版本进行特定的操作,以提取到软件的安装路径、工作空间路径。
对于此版本之后的版本,检查存储于
%LocalAppData%/siyuan
中的数据,找到当前已安装版本的路径及工作空间。至此,无论旧版本还是新版本,我们都已经找到安装路径和工作空间路径。对比,若任一者的
真实目录
都不是另一者的子集,即两者不是父子关系,则继续进行更新等流程,因此,对于此版本之后的版本,更新依然是可以无人值守的。若两者是父子关系,对 UI 作类似上述变化,但此时工作空间的数据实际存在于其中,因此我们不能简单的恢复默认路径,这样会造成数据丢失的假象。我们分以下两种情况讨论:
当前的工作空间路径在“默认安装路径”之内
此时,软件一定安装在默认路径。UI 给出“工作空间迁移到默认路径”,这按钮会导致数据迁移立即进行。
当前的工作空间路径不在默认安装路径之内
此时,仅给出“恢复默认安装路径”按钮,而不给出“恢复默认工作空间路径”。这个选择是为了避免对数据迁移消耗太多时间,实际上数据不需要迁移。安装时,我们抹去旧版本的注册信息,用新的替代。再执行删除(手动卸载旧版)操作,此操作需要排除工作空间的路径内容。
至此,我们安全地完成了旧版本的升级,且在新版本情况下,除非用户手动修改存储于
%LocalAppData%/siyuan
中的数据,否则不可能因升级而造成数据丢失。卸载
新版本的卸载可以询问用户是否保留配置、数据。配置是指存储于
%LocalAppData%/siyuan
中的数据,数据时指工作空间中的数据。也可以不询问,而选择完全保留此两者。这无关紧要,因为安装过程已足够严密。这个流程是比较简单的,没有遇到问题时,和原先的安装、更新流程一致,遇到路径不合法时,对于普通用户而言,仅多了两个按钮,“迁移数据”,或者“恢复默认安装路径”。迁移数据调用 Windows 的接口,弹出可视的进度窗口,这样用户也知道正在做什么。
这两个按钮需要醒目些,如果无法做到,可以让其他元素不醒目些,如明暗对比、模糊与清晰对比,甚至,可以把它移动到原先“下一步”按钮所在的位置,这样看起来,就好像是正常升级流程的一部分,如果你口中的无脑用户一直无脑点,这个按钮就会被点到的。
Zuoqiu-Yingyi commentedon Oct 28, 2022
经过测试, 静默安装至默认路径在更新时依旧会卸载并清空原安装路径的内容, 且默认路径即为上次安装路径, 因此若用户工作空间设置在了安装目录下级, 依旧会丢失数据


静默安装前:
静默安装后:
[-]Windows 端不再支持安装时选择安装路径和用户[/-][+]Windows 端不再支持安装时选择安装路径[/+]88250 commentedon Oct 28, 2022
一些变更改进已经由 @Zuoqiu-Yingyi 提供实现,细节可参考 #6390 感谢各位的讨论和支持。