今天在另一台机子上装Unity Editor,又遇到了Validation Failed,但这次不是在下载阶段,而是安装阶段,搜索网络上现有解决方案:
① 管理员身份运行(【解决】Unity Hub 安装目标平台模块失败。警示“Install failed: Validation Failed”信息。-CSDN博客)亲测无效
② 修改powershell的path环境变量,让1.0优先于7(WORKAROUND: ⚠️Install failed: Validation Failed (Hub 3.8.x and earlier) - Unity Engine - Unity Discussions)亲测无效
③ 设置下载位置路径为安装位置的子路径(【Unity学习日记(三)】安装编辑器出现validation failed错误-CSDN博客)亲测无效
④ stackOverflow上有人指出实在不行就手动安装,但后续添加组件很麻烦,不建议(Unity Hub "Install failed: Validation failed" message whenever I try to install Unity Editor - Stack Overflow)
于是只能回归本质,检查了log:
发现执行的安装命令是一串乱码,这就很奇怪了,log的编码已经是UTF-8,是不是powershell本身的默认编码方式(代码页,Code Page)与Hub执行所使用的命令数据编码不兼容,从而导致执行失败的呢?
powershell输入 chcp 检查当前Code Page:
PS C:\Users\ZzDaniel> chcp
活动代码页: 936
可以看到默认是936(GBK),永久修改powershell的代码页为65001(UTF-8)可以用两种方法,如果第一种无效,可以试试第二种:
方法一:改注册表
找到“Computer\HKEY_CURRENT_USER\Console”,在其中的cmd.exe、powershell.exe下找到CodePage,改为65001,如果没有这个键,就新建一个同名的 DWORD(32位值),输入十进制的65001或十六进制的fde9。重启powershell输入chcp检查是否生效。
(引自:windows 控制台 cmd/PowerShell 中文显示乱码,解决方法_powershell 中文乱码-CSDN博客)
方法二:设置中修改全局字符集
如果上一种方法无效,chcp返回还是936,则可以试试这个终极方法。打开设置 -> 时间和语言 -> 语言 -> 管理语言设置 -> 更改系统区域设置 -> Beta版:使用 Unicode UTF-8 提供全球语言支持。确定后,提示重启计算机,会配置一段时间,重启后即改为UTF-8。
改好代码页后,再次启动Unity Hub执行安装,终于成功
总结:导致问题的跟本原因是指令执行异常,和“验证”毫无关系,考虑到Unity Hub是国际版(3.8.0),安装的编辑器也是国际版不带c1的版本,可能Hub内的安装指令就没有考虑在GBK上是否能正常执行,出现问题也算情有可原。这也可以解释为什么有的人会遇到,有的人遇不到(Unity Hub版本不同),就连大洋彼岸的官方也没搞清楚到底咋回事儿。总之,该问题暂时解决,希望能帮到遭遇相同问题,而其他解决方法都无效的各位。