Power Automate Desktop の更新を Power Automate Desktop で自動化する方法

# 本記事の位置付けについて（2021/05/21 更新）
2021年5月のアップデートで、Power Automate Desktop に自動的に更新を通知してくれる機能が追加されました。
ただ本記事は、インストールまで自動化してくれるという点とファイルダウンロードのアクションの利用方法など有用な点もありますので、よろしければ御覧ください。


# はじめに
Power Automate Desktop は、リリース以来、新しい機能が次々に追加されています。
しかし、2021年4月28日現在、自動更新する機能がなく、更新時には、公式サイトからのインストーラーのダウンロードおよびインストールを実施する必要があります。
Power Automate Desktopの更新は、1ヶ月に1回以上発生するため少しでも楽をしようというのが、本記事の目的です。

# おことわり
将来的にもっと簡単に更新できる機能や自動更新機能が提供されるのかなと思っています。
そのため、このフローは半分ネタとして見ていただきつつ、ネットからのデータのダウンロードとコマンドラインの実行方法の簡単な使い方に説明としてご覧いただければ幸いです。


# 事前準備
サイレントインストールを行うコマンドを用意します。以下のコマンドを記載したバッチファイルを作成するだけです。
作成したファイルは、デスクトップに保存します。

ファイル名 : PADInstall.bat 

```bat:PADInstall.bat
Setup.Microsoft.PowerAutomateDesktop.exe -Silent -Install -ACCEPTEULA
```

**補足**
上記は、PAD インストールのコマンドラインです。
インストールコマンドについての詳細は下記の公開情報をご確認ください。

https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/setup#install-power-automate-desktop-using-the-command-line


#デスクトップフローの作成
とても簡単です。3 つのアクションを設定するだけです。

また、最後に デスクトップフローのプログラムソースを記載しています。
簡単なフローなので、ぜひ下記手順にて試していただき、もし、うまく設定できないようであれば、プログラムソースを使用してみてください。

###**目次**
1. ファイル保存するフォルダを設定する "特別なフォルダーを取得" アクションの設定
2. インターネット上のファイルをダウンロードする "Web からダウンロードする" アクションの設定
3. バッチファイルを実行する "DOS コマンドの実行" アクションの設定



####1. ファイル保存するフォルダを設定する "特別なフォルダーを取得" アクションの設定
インストーラーファイルやバッチファイルを保存しているフォルダパスを定義します。

フローデザイナーの左側のアクション一覧より、"特別なフォルダーを取得" アクションをダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/e53349f6-383b-5ad4-15b6-b4450ddee218.png)

アクションが起動したら、プロパティを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/4cf65856-c01b-ca84-fdee-22e13d43887a.png)

プロパティの設定値は以下の通りです。

|項目 | プロパティ |
|:--|:--|
|特別なフォルダーの名前 | デスクトップ|

ここでは、既定の "デスクトップ" を選択します。
デスクトップが選択されていると "特別なフォルダーのパス" にデスクトップのパスが表示されます。

デスクトップのパスが、[生成された変数] にある "SpecialFolderPath" 変数に設定されます。

**補足**
この "特別なフォルダーを取得" アクションは、PCやログインするユーザーが変わった場合でも、その環境のパスを取得してくれます。
PC固有のパスを指定する場合でフローを他人に共有する時に、パスの書き換えが不要になるのでとてもいいアクションだと思います。

####2. インターネット上のファイルをダウンロードする "Web からダウンロードする" アクションの設定
Microsoft のサイトにアップロードされている Power Automate Desktop のインストーラーをダウンロードします。
対象のファイルの URL を指定するだけでダウンロードが可能です。

左側のアクション一覧より、"Web からダウンロードする" アクションをダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/ca99b84a-de89-bfe1-cb9e-ef9d77004403.png)


アクションが起動したら、プロパティを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/e5966695-3f11-faff-ef3b-3713a0dfb000.png)

プロパティの設定値は以下の通りです。

|項目 | プロパティ |
|:--|:--|
|URL | https://go.microsoft.com/fwlink/?linkid=2102613|
|メソッド | GET |
|応答を保存します | ディスクに保存します(ファイル用) |
|ファイル名 | 元のファイル名を維持します(宛先フォルダーのみを指定します) |
|宛先フォルダー | %SpecialFolderPath% |

####3. バッチファイルを実行する "DOS コマンドの実行" アクションの設定
インストールのコマンドを実行します。
事前準備で用意したバッチファイルをこのアクションで実行します。

左側のアクション一覧より、"DOS コマンドの実行" アクションをダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/eb41c31e-4df9-9395-702f-472da2481af9.png)

アクションが起動したら、プロパティを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/466772da-c00f-30af-2188-85a71774b70a.png)

プロパティの設定値は以下の通りです。

|項目 | プロパティ |
|:--|:--|
|DOSコマンドまたはアプリケーション | %SpecialFolderPath%\PADInstall.bat |
|作業フォルダー | %SpecialFolderPath% |

**補足**
作業フォルダーのプロパティは、バッチファイルのコマンドをどのパスで実行するかを指定するためのプロパティです。
インストーラーの Setup.Microsoft.PowerAutomateDesktop.exe は、デスクトップに保存しているため、デスクトップにある exe ファイルのコマンドを実行するためにデスクトップを指定しています。

要はコマンドラインで以下のコマンドを実行しているのと同じですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/77cd37cd-7664-a4ef-a166-35d8ccad1eaa.png)
#ソースコード(Robin)
下記の 3 行のコードをそのまま貼りつけ新規フローに貼り付けても実行できます。
PADInstall.bat だけは、用意してください。

```
Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.DesktopDirectory SpecialFolderPath=> SpecialFolderPath
Web.DownloadToFolder Url: $'''https://go.microsoft.com/fwlink/?linkid=2102613''' DestinationFolder: SpecialFolderPath ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False DownloadedFile=> DownloadedFile
System.RunDOSCommand DOSCommandOrApplication: $'''%SpecialFolderPath%\\PADInstall.bat ''' WorkingDirectory: SpecialFolderPath StandardOutput=> CommandOutput StandardError=> CommandErrorOutput ExitCode=> CommandExitCode
```

#実行してみます。が…。
このフローは、すべてバックグラウンドで動作するため動作の成功・失敗の説明がしづらいです。
そのため、成功した場合の動作について記載します。

1 デスクトップに Setup.Microsoft.PowerAutomateDesktop.exe が保存されます。
2 インストール時に UAC の画面が表示されます。
※このアプリがデバイスに変更を加えることを許可しますか？の画面です。
3 新しいバージョンの PAD がインストールされた場合、PAD が終了します。

もし、新しいバージョンがリリースされていない場合は、UAC の画面が表示されたあとは表示もなく、実行が終了します。

#おわりに
シンプルなフローで、PAD 単体でもボタン1つで簡単にアップデートをチェックして、更新することができます。
クラウドフローのスケジュールトリガーと連携することで定期的に更新をチェックすることができます。

PAD のインストール以外でも、定期的に Web サイトからファイルをダウンロードし、後続処理につなげるシナリオでも有用かなと思います。