Following the guidance on this page, I have updated my package download location to be C:\Nuget to avoid duplication of package dependencies among multiple robot accounts.
I also noticed %ProgramData%\UiPath\UiPath.settings has an entry for "NuGetServerUrl" that’s currently set to "%ProgramData%\\UiPath\\Packages". What is the purpose/function of this parameter?
Secondly, instead of downloading packages to C:\Nuget, could I instead download the packages to a shared network folder that all robots across all machines have access to? That would remove all redundancy, but I wasn’t sure how this might impact performance/responsiveness. Is this acceptable, or should I avoid it?
Yes, you can use a shared network folder for packages instead of local, just set the path in UiPath.config and watch out for network speed and permissions. The NuGetServerUrl setting is mainly for the default local package feed location
A. NuGetServerUrl: Its a Default package repository for UiPath Robot which is used for package restore, package download, workflow publishing (when not using Orchestrator)
B. Yes, but use with care. A shared network folder is fine as a central NuGet feed (read-only .nupkg files), provided you manage access, performance, availability and caching. For large fleets or production-grade reliability, a proper HTTP NuGet server (Orchestrator, Artifactory, Nexus, Azure Artifacts) is usually preferable.
In “%ProgramData%\UiPath\UiPath.settings”
“NuGetServerUrl”: “\\fileserver\uipackages”
Service mode robot installed on separate machines must have its own folder on the network.
I assume “service mode” is what my unattended robots are running as? And does this mean they would still need separate folders within my shared network folder? That seems like it would defeat the purpose of avoiding duplication, unless I’m misunderstanding.
Is this a use case for our custom, proprietary libraries to be distributed? Right now, we upload a library to our Tenant Feed, but that library has to be reuploaded to every environment (dev/test/prod) for all automations to be able to see it. Would hosting it in Azure Artifacts resolve that issue?
No conflict at all - NuGetServerUrl is just the feed Robot checks for packages (leave it local) packagesInstallationFolder is where they actually download/store (set that to your shared path like C:\Nuget or network).
Service mode (your unattended robots) needs separate subfolders per robot/machine on the network share to avoid lock conflicts, like \shared\packages\Machine1, \shared\packages\Machine2. That way you still share most packages across machines without full duplication.
Set it in UiPath.config: < add key=“packagesInstallationFolder” value=“\network\shared\packages%MACHINENAME%%USERNAME%” />, restart service, done. Test it!