Nuget Package Location

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?

Hi, @klegson

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”

Gotcha, so NuGetServerUrl does not have a conflict with the <add key="packagesInstallationFolder" value="C:\Nuget" /> entry in my uipath.config file?

I noticed on the Service Mode robots documentation that it says:

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?

@klegson

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!

@klegson

ideally network folder needs separate path for each machine..I agree it still duplicates

but it needs to be seaprate as users from different machines use it there might be conflicts as the robot runs from the context for the folder

but network path help because the data is not on the VM and it would be fast enough

cheers

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.