默认情况下,安装 Unity 编辑器需要管理员权限。
从 2023.1 版本开始,您可以在 Windows 上允许标准用户在没有提升权限的情况下安装 Unity 编辑器。
启用后,此功能可以减少管理员的参与,他们只需要安装 Unity 安装程序检测到的 缺少的依赖项(例如 Visual C++ 运行时库)。这些依赖项很少改变,因此标准用户在安装其他 Unity 编辑器实例时不需要管理员的干预。
确保您对 C:\ProgramData\Unity\config
文件夹具有写入权限。
编辑 JSON 文件时请务必遵循以下做法
Get-Content
和 ConvertFrom-Json
cmdlet,如 此示例 所示。要允许标准用户安装 Unity 编辑器,请执行以下操作
确保以下路径存在。如有必要,创建其中的任何文件夹
C:\ProgramData\Unity\config
确保以下文件存在。如有必要,创建它
C:\ProgramData\Unity\config\services-config.json
如果您需要创建该文件,请确保它至少包含以下内容
{
}
在 services-config.json
中的括号之间添加以下条目
"hubDisableElevate": true
可选:要允许同一台计算机上的多个用户共享 Unity 编辑器二进制文件而不重复安装同一个版本,请创建一个所有 Unity 编辑器的公共目标文件夹,例如 C:\UnityEditors
。重要提示:请确保您为所有用户授予对该文件夹的读取和写入权限。
可选:如果您在上一步骤中创建了公共文件夹,请将 machineWideSecondaryInstallLocation
键添加到 services-config.json
,以使 Unity Hub 使用该文件夹。使用上一步骤中的文件夹,该条目如下所示
"machineWideSecondaryInstallLocation": "C:\\UnityEditors"
退出 Unity Hub 并确保它已停止,而不仅仅是最小化到任务栏。
使用上述步骤中的值,示例 services-config.json
文件如下所示
{
"hubDisableElevate": true,
"machineWideSecondaryInstallLocation": "C:\\UnityEditors"
}
现在,标准用户的计算机能够在没有管理员干预的情况下安装 Unity 编辑器,除非存在依赖项。管理员必须安装任何依赖项。
以下是一个标准用户可能会看到的依赖项警告示例
如果标准用户收到有关缺少依赖项的警告,安装程序会将依赖项列表写入文本文件。警告会标识该文本文件的位置。管理员必须安装这些依赖项,标准用户才能稳定地使用 Unity。
以下是一个 Unity 安装程序可能生成的缺少依赖项列表示例
Dependency: Visual C++ 2010 runtime (x64)
Download location: https://www.microsoft.com/en-ca/download/details.aspx?id=26999
Local Installer: C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\MissingDependencies\vcredist_x64_2010.exe
Dependency: Visual C++ 2013 runtime (x64)
Download location: https://www.microsoft.com/en-ca/download/details.aspx?id=40784
Local Installer: C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\MissingDependencies\vcredist_x64_2013.exe
Dependency: Visual C++ 2015 runtime (x64)
Download location: https://www.microsoft.com/en-ca/download/details.aspx?id=48145
Local Installer: C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\MissingDependencies\vcredist_x64_2015.exe
Make sure that the following rules are set:
netsh advfirewall firewall delete rule name=all program='C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\Editor\Unity.exe'
netsh advfirewall firewall delete rule name=all program='C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\Editor\Data\Tools\nodejs\node.exe'
netsh advfirewall firewall add rule name='Unity 2023.1.0a5 Editor' dir=in action=allow program='C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\Editor\Unity.exe' profile=domain protocol=any
netsh advfirewall firewall add rule name='Unity 2023.1.0a5 Editor' dir=in action=block program='C:\Users\nonadmin\AppData\Local\Unity 2023.1.0a5\Editor\Unity.exe' profile=public protocol=any