UiPath Community Editionで自動ログインを使う方法

## 前提があるんです

　最初はぱぱーっと方法だけ書こうかと思ったんですが、副作用が色々起きうるので、原理や事情の説明からします。おっさんの長話に付き合ってください。

### 自動ログイン、やりたいよね

　UiPath Community Editionでは、OrchestratorからのUnAttended Robotについて、初期設定では

- すでにログインしているユーザーの、画面ロックを解除して動作 → **できる**
- Windows起動直後（ログイン前）で放置されている状態での自動ログイン → **できない**

　という特徴があります。（Enterprise Editionでは両方ともできます）

　これは別にライセンス上の制限ではなく、UiPath Enterprise Editionと、UiPath Community Editionの、インストール方式の違いによる制約になります。

### なぜできないのか

　当たり前ですが、基本的にはWindowsで、ユーザーがログインする前には、そのユーザー権限でアプリは起動できません。何しろユーザーが居ないからです。
　そこでUiPath Enterprise Editionでは、ユーザーではなくサービスとして登録することで、Windowsユーザーが居ない状態でもRobotが待機状態になります。

　ところで、UiPath Enterprise Editionは、デフォルトのインストール先は、`C:\Program Files (x86)\UiPath\Studio`になります。これは、そのWindows環境で、どのユーザーも特に縛りがなく参照できる場所です。
　他方、Community Editionのインストール先は、`C:\Users\（ユーザー名）\AppData\Local\UiPath`になります。
（上記は両方とも、厳密には環境変数を参照して決定されますが、本筋ではないので省きます）

　なぜこんな違いがあるのかというと、Community Editionは自動でバージョンアップを行う機能があります。しかし、`C:\Program Files (x86)`配下のフォルダは、書き込みに管理者権限が必要になります。そうすると自動アップデートがかかるたびに管理者権限が要求されることになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/68a9ed61-34d3-577e-13b0-d32cd4d215b3.png)
　よくあるコレっすよ、コレ。

　そこでUiPath Community Editionは、ログインユーザー（≒起動ユーザー）が自由に書き込める場所にインストールすることで、上記の制限を回避しています。
　UiPath Community Editionで自動起動できない問題の根っこは、逆にこの設定による弱点が原因です。ユーザー固有のディレクトリディレクトリであるということは、他のユーザーからの読み込み・書き込みは、色々制限がかかるということでもあります。

　故に、そんな場所にあるものをサービスとして登録すると、他のユーザーでの起動時に整合性に問題が出る可能性があるんですね。
　つまりですね、**ここから先に書く手順は、複数ユーザーが同じWindows PCを使っている環境でやると、色々と不具合を引き起こす可能性があります**というところを、重々ご承知ください。

　あともう1つ。
　上にも書きましたが、UiPath Community Editionは、自動でバージョンアップがかかります。当然、バージョンアップごとにモジュールは変化します（更新されます）
　サービスとしての登録の解除・再登録は自動バージョンアップではやってくれないので、**自動バージョンアップがかかったら、即座に設定をやりなおす必要があります**、というのを忘れないでください。
　忘れたらどうなるか、正直わかりません。まあPCが壊れたりとかはないと思いますが、Windowsの起動時にエラーが出るとか、UiPath StudioやUiPath Robotが起動しなくなるぐらいはざらに発生する可能性があります。しょうがないよね、サービス関連の処理がおかしくなるから。

### つまりですね
　上につらつら書いた事情や、設定のリスクをきちんと理解してやってくださいね。壊れたって言われても筆者は責任とれないゾ。

## 具体的な手順

　手順そのものはそんなには難しくないです、多分。
　あとここに書いてるのは、**UiPath Studio Community Edition 19.10.2**の仕様です。そのうち変わるかもしれないので、そこはご了承ください。
（知ってる限り、2018.2ぐらいからほとんど変わってない部分なので、そうそう変わらないとは思うけど）

　というか、基本的には、[ここ](https://docs.uipath.com/robot/lang-ja/v2018.4/docs/converting-robot-deployment-type)に書いてあることの応用です。

　まず前提（下記のパターン1～3共通）として、**管理者権限で**コマンドプロンプトを起動してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/93981038-86c0-86a6-88f7-a763afdb15c8.png)

　そして、`CD %LOCALAPPDATA%\UiPath` します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/24386fee-2ff2-15f1-b34d-705809e1f126.png)

 あと、それとは別に、エクスプローラで`C:\Users\（ユーザー名）\AppData\Local\UiPath`を開いておいてください。

### パターン1: とりあえず初回（Community Editionインストール後）

以下のコマンドを実行します。
`TaskKill /F /IM UiPath.Agent.exe`
`TaskKill /F /IM UiPath.Service.UserHost.exe`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/f514fa1d-fee0-c4f5-5c61-6122f20ff27c.png)
　失敗（見つかりませんでした）のエラーが出ることがありますが、気にしなくていいです。

　次に、`CD app-xx.xx` を入力します。xx.xxは、その時点での最新版のフォルダ（上記エクスプローラーで開いて確認する）です。ベータフィードだと `app-xx.xx-bata000` みたいな形式の可能性がありますが、その場合もその通りに入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/7530a672-8c65-9926-5a0f-49081aab71d2.png)

　うまくディレクトリを移動できたら、`UiPath.Service.Host install`を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/dfd3da22-aabb-c683-f025-2ae87bd5c61a.png)
　うまくいくとこんな感じになります。

　あとは、Windowsのサービス管理を立ち上げて、UiRobotSvcがインストールされていることを確認し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552763/5b3f2201-6c10-644b-577e-82fb569b47dc.png)
　スタートアップの種類は「自動（遅延開始）」に設定してやると良いと思います（自動でそうなってる筈ですが）
　あと、上記手順では初回の起動がされないので、「開始」ボタンを押してやりましょう。特にエラーが出ず起動したら成功です。わーわーぱちぱち。


### パターン2: UiPath Community Editionの自動バージョンアップが走ったあと

　ここから先は面倒なのでコマンドしか書きません。一度やったことだからだいたいわかるよねって感じ。

　まず、コマンドプロンプトで、 `Net Stop UiRobotSvc` して、稼働中のサービスを止めます。

　次に、**古いバージョン（現在サービスを稼働させているバージョン）**のフォルダに`CD app-xx.xx` で移動して、`UiPath.Service.Host.exe uninstall` で登録を解除します。
　最後に、**新しいバージョン（更新されたバージョン）**のフォルダに`CD ..\app-xx.xx`で移動して、`UiPath.Service.Host install` しましょう。（最後の手順から先は、パターン1と同じです）

　**上にも書きましたが、自動バージョンアップごとにこの作業を忘れないようにしないと、どんな不具合が出るかわかりません。自己責任でやるんですよ！いいですね！**

### パターン3: サービスを削除する
　自動起動を使わなくなったとか、**パソコンからUiPath Studio Community Editionをアンインストールする**とかになったら、この手順が必要です。

　まず、コマンドプロンプトで、 `Net Stop UiRobotSvc` して、稼働中のサービスを止めます。

　次に、**古いバージョン（現在サービスを稼働させているバージョン）**のフォルダに`CD app-xx.xx` で移動して、`UiPath.Service.Host.exe uninstall` で登録を解除します。要するにパターン2の途中（サービスの削除だけ）で止める感じです。

## 最後に
　繰り返しますが**自己責任**でお願いします。ライセンス的にNGな要素はない筈ですが、公式に案内されている使い方じゃないので、何かあったら自分で解決しないといけないYO！