移行後に NuGet パッケージにアクセスできない
現象
Robot をサービス モードからユーザー モードに変換すると、移行が完了した後 NuGet パッケージ内の XML ファイルにはアクセスできなくなり、次のエラー メッセージが表示されます。
「Access to path C:\Users\john.doe\.nuget\packages\HelloWorld\1.0.0\lib\net45\Main.xaml
is denied. (パス C:\Users\john.doe\.nuget\packages\HelloWorld\1.0.0\lib\net45\Main.xaml
へのアクセスが拒否されました。)」
原因
Robot をサービス モードでデプロイすると、Robot のサービスを実行しているローカル システム ユーザーにより、パッケージがフォルダー (例:.nuget\packages
) にダウンロードおよびインストールされます。
ユーザー モードに変換すると、そのフォルダーの NuGet パッケージにアクセスできなくなります。現在 Robot を実行するユーザーは、これらのファイルを表示または編集する権限を持たないからです。
解決方法
1. 元のフォルダーからすべてのパッケージを削除する
元のフォルダーからパッケージを削除すると、Robot は設定されたフォルダー内のプロセスをユーザーの権限で再インストールします。これにより、Robot は実行する必要があるファイルにいつでもアクセスすることができます。
2. パッケージ フォルダーを変更する
Robot をサービス モードからユーザー モードに変換する際に、パッケージのインストール フォルダーを %userprofile%\.nuget\packages
から別のパス (例: %userprofile%\.nuget\packages_new
) に変更できます。
すると、Robot は .nuget\packages
フォルダーを再作成し、そのフォルダー内のプロセスを後で使用できるようダウンロードします。
既定では、アクティビティ パッケージは %userprofile%\.nuget\packages
フォルダーにダウンロード・インストールされます。別のフォルダーを設定するには、次のいずれかの方法で行います。
- インストール中の場合、コマンド ラインから
PACKAGES_FOLDER
オプションを使用してインストールする。 -
インストール後の場合、
uipath.config
ファイルを手動で編集する。- テキスト エディターで
uipath.config
ファイルを開きます。既定では、このファイルはC:\Program Files\UiPath\Studio
にあります。 - ノード
packageSettings
に、新しいフォルダーへのパスを値として含めたキーpackagesInstallationFolder
を追加します。 -
変更を保存し、Robot を再起動します。
たとえば、ダウンロードする場所を
C:\nuget
に変更するには、uipath.config
ファイルに以下を追加します。<packageSettings> <add key="packagesInstallationFolder" value="C:\nuget" /> </packageSettings>
<packageSettings> <add key="packagesInstallationFolder" value="C:\nuget" /> </packageSettings>
- テキスト エディターで
サービス モードの Robot とユーザー モードの Robot の違いについて詳しくは、「デプロイの種類別」をご覧ください。このドキュメントでは、各種類の Robot について詳しく説明しています。