Robot実行時のライブラリ取扱いについて

Studioで作成したプロジェクト(自作ライブラリを依存関係として含む)をパブリッシュして、他PCへ .nupkgファイルを移動してRobotにて実行したのですが、途中でエラーが発生して止まってしまいました。
エラー内容から類推して、自作ライブラリもパブリッシュを実施して、他PCへ.nupkgファイルをコピーしたら動くようになりました。

プロジェクトをパブリッシュしたら、依存関係にあるライブラリも含めて内包する形で.nupkgファイルにまとまるという認識だったのですが、
上記の結果を踏まえて考えると、ライブラリに関しては依存関係にあろうが別途パブリッシュして.nupkgをプロジェクト本体と同様にRobotの実行環境へ移してやる必要があるということで合っていますでしょうか?

また、ライブラリに限らず、Main.xamlとは異なるフォルダに保存された、invorkで呼び出す別の .xamlファイルは、プロジェクトのパブリッシュ時に含まれるのでしょうか?
含まれないとした場合には、ライブラリと同様の対応でよろしいのでしょうか?

以上、よろしくお願い申し上げます。

1 Like

PUBLISHすると、そのProjectが構成されているProject.json、Main.Xaml、フォルダ構成が圧縮されて.nupkgファイルとなります。

自作ライブラリは、同梱されません。自作ライブラリを使っているかどうかは、Project.jsonに記載があるかどうかで判断されます。

実行PCでは、そのProject内のProject.jsonを見て、必要なファイルが揃っているかを確認し、足りなければOrchestrator、オフィシャルサイトなどからダウンロードします。

ですので、実行PC側で、必要ライブラリがUiPATH的な参照が出来るように配置しなければなりません(Orchestratorが便利なのは言うまでもありませんね(^_^.))

また、INVOKEする.xamlファイルは、INVOKE時のPATH指定を参照しにいきますので、そのProject内にあればINVOKE可能ですし、開発時の独自フォルダを参照していれば、実行環境にもその独自フォルダを再現しなければなりません。

共有フォルダに配置して、そこを参照するようにする!ってのも手ですが、ネットトラフィックが過多の場合はROBOTがなかなか動いてくれなくなる可能性もありますね。

@HANACCHI
お世話になります。

解説ありがとうございました。
仕様について大変よく分かりました。

将来的な管理手間を考えると、共通する動作はライブラリとして
一元管理していきたい+Orchestratorは導入できそうにないので、
上記を参考にしてベストな運用方法を検討してみます。

ちなみに共有フォルダに関しては、先週までPublish先を共有フォルダに
設定しておりましたが、現在はBoxに移行しようといろいろ試しております。
BoxDriveというCドライブとBoxをミラーリングするソフトウェアが使えそうですが、
ファイルパスの途中にPCのユーザー名が入るのが難点ですね。

以上、ありがとうございました。

BOXDriveですか。なかなか渋い方法ですね。

パソコンのログインに依存するフォルダの情報は、「特殊フォルダーのパスを取得」アクティビティで、Desktopとか、MyDocumentsとかのフォルダ情報が取得出来ます。
ですので、そのアクティビティの結果を加工して、¥BOX¥~~ってフォルダを再構成すれば実現出来ますね。

@HANACCHI
お世話になります。

重ね重ねありがとうございます。
そのアクティビティは存じ上げておりませんでした。試してみます。
ひとまず、昨日帰り際に検索して下のようにしたら実行環境でも認識されました。
“c:\User” + System.Enviroment.UserName + “\box\hogehoge.txt”

Uipathに関しては社内で相談できる人間がいないため、こういったコミュニティで
サポートしていただけるのは非常に心強いです。いつか答えれる側になれればと思います。
ご教示ありがとうございました。

1 Like

自分でTRYするってのも重要ですね。頑張ってください!

課題が、
パブリッシュしたライブラリーをOrchestratorを使わないで自動配布したいのであれば、
Studioのドキュメントの「アクティビティパッケージの管理」記載がされています。

ロボットをインストールしているコンピュータの
“C:\Program Files (x86)\UiPath\Studio\NuGet.Config”
に共有フォルダを指定することができます。

add keyで追加します。
%E6%8C%87%E5%AE%9A

よろしくお願いします。

@gha
お世話になります。

C:\Program Files\UiPath\Studio\NuGet.Config内を下記のように変更
してROBOT再起動してみましたが、Robotに反映されませんでした。

  <packageSources>
    <!-- Add this repository to the list of available repositories -->
    <add key="Local" value=".\Packages" />
    <add key="Official" value="https://www.myget.org/F/workflow/" />
    <add key="Go!" value="https://gallery.uipath.com/api/v2" />
    <add key="Test" value="file:///C:/Users/Ultrathon/RPA/Publish" />
  </packageSources>

エンタープライズ版なのでこちらのケースにあたるということでしょうか?↓

エンタープライズインストールの場合、カスタムアクティビティフィードは
そのユーザーの Studio から開始したワークフローでのみで使用できます。
 Orchestrator またはエージェント (ロボットトレイ) から同じマシンでジョブを
開始すると、ロボットは適切なパッケージを取得できなくなります。 
これを回避するには、以下の方法に代わり  **ActivitiesFeed**  プロパティの
  `UiPath.settings`  ファイルにカスタムフィードを追加する必要があります。

であれば、Uipath.settingsの "NuGetServerUrl"にRobotの参照先を設定すれば
よいのかなと認識しておりますがいかがでしょうか?

また、お教えいただいた「アクティビティパッケージの管理」を読むと、こちらの設定はStudio側がデフォルトパッケージ群を参照する場所ではないかと思うのですが、Robotにも適用されるのでしょうか?

Uipath Studioガイドを小一時間読んでみたのですが、いまいちNugetについて
ぼんやりとしか分かっておらず質問ばかりしてしまい、恐縮です。

以上、よろしくお願い申し上げます。

私の認識が間違っているかもしれませんが当社では以下のように設定しています。
・コンピュータには、UiPath Robot EE版のみ導入

NuGet.Configには、作成したライブラリーのパッケージが保存されている他サーバー上の共有フォルダーを指定。

Uipath.settingsの "NuGetServerUrl"には、
ロボットトレイから実行するワークフローのパッケージをフォルダを指定。

今回の課題の認識は、
ワークフローで参照しているライブラリーのパッケージを自動取得したいというケースと理解していますが正しいでしょうか?

また、実際に実行するワークフローおよびライブラリーのパッケージは、
C:\Users\ログインユーザー名.nuget\packagesに導入されます。

ご確認ください。

【file://】なしに、
直ドライブから記述してみましたか?

それと配付するのでしたら、ユーザログインに関連するフォルダにするのは、得策ではないと思います。

こんにちは。
すでに解決してたらゴメンなさいですが、1年くらい前の情報なので多少古い可能性もありますが、

UiPathのカスタムアクティビティの配布について(Orchestrator接続なし版)

UiPathのカスタムアクティビティの配布について(Orchestrator接続あり版)

という整理をしたことがあります。おてすきの際ご確認くださいませ

2 Likes

@gha
お世話になります。

ライブラリーとワークフローのパッケージ参照先を混同しておりました。

おっしゃる通りです。
要点整理していただいてありがとうございます。
理解できました。

以上、よろしくお願い申し上げます。

承知しました。。

もう解決されましたか?

まだ解決されていなければ、以下3つをお試し下さい。
・コンピュータを再起動(EE版ロボットのデフォルトはWindowsサービスモードのため)
・HANACCHIさんが言われていた「file://」を外し、PCを再起動
・C:\Program Files\UiPath\Studio\NuGet.Configをもとに戻し、%USERPROFILE%\AppData\Roaming\NuGet\NuGet.Configに追加。(ライセンスによるかもしれません)

@HANACCHI
お世話になります。

記述を修正したところ、ライブラリフォルダを認識するようになりました。

社内共有サーバがないためBoxDrive経由でしかファイル共有が
できないのです。BoxDriveがCドライブにミラーリングフォルダを作成するため、
今のところこのような対処をしております。

@gha
お世話になります。

返信遅くなり申し訳ございません。
上2つを実施したところ、ライブラリパブリッシュフォルダを無事認識してくれる
ようになりました。(ロボットはタスクマネージャからプロセスツリーを殺すことで
反映してくれました)
ありがとうございました。

1 Like

それは余計な心配でしたね。失礼いたしました。

1 Like

解決できて何よりです。

2 Likes

@masatomix
お世話になります。

Studio が取り込んだnupkgは、Robo(Attended/UnAttended Robo) とは別管理になってることが分かりました。そして、カスタムアクティビティを参照しているシナリオを Publishしてもそのnupkgにはカスタムアクティビティのnupkgは含まれていないので、別途でファイルを配置しないといけないってこともわかりましたね。

まさにこれが知りたかったことでした。
資料ありがとうございます。

以上、よろしくお願い申し上げます。

@HANACCHI 様、 @gha 様、 @masatomix
分かりやすく解説していただきありがとうございました。
無事解決できました。

2 Likes

とんでもございません
ありがとうございました