Installomatorでアプリケーションのインストールの進捗を表示する
主に管理下にあるmacOSに最新バーションのアプリケーションをインストールするスクリプトであるInstallomatorは、実はswiftDialogを用いてアプリケーションのインストール状況を表示する機能をサポートしています。
今回はこの方法をJamf Proで実現する場合を例に紹介します。
どうすれば進捗を表示できるのか
Installomatorで進捗を表示するには、以下の流れで処理を進める必要があります。
- swiftDialogを起動
- Installomatorを実行
- swiftDialogを終了
これを1つのJamfポリシーで実現していきます。
また、swiftDialogがデバイスにインストールされていることが前提となっているため、事前にInstallomatorなどでswiftDialogをインストールしておきましょう。
進捗表示のための準備
今回は、Google Chromeをインストールすると仮定して紹介します。 また、InstallomatorスクリプトはすでにJamf Proに登録されているものとします。
swiftDialogを起動するスクリプトの登録
まずは、swiftDialogを起動するスクリプトを登録します。
swiftDialogを起動するスクリプトはInstallomatorのリポジトリに用意されています。
-
[設定] > [コンピュータの管理] > [スクリプト]から新規スクリプトの作成に進みます。
-
次に、スクリプトタブをクリックして、GitHubから取得してきた
00_Prepare_SwiftDialog.sh
を登録します。 - 任意ですが、オプションタブをクリックして、優先度やパラメータ名を設定します。パラメータ名は本家のスクリプト内のコメントから取得したものを使用していますが、任意の名前でも問題ありません。
- 優先度:
前
- パラメータ4:
SwiftDialog command file path [Default: /var/tmp/dialog.log]
- パラメータ5:
Text shown in the swiftDialog window above the progress bar [Default: Installing …]
- パラメータ6:
Icon as Path or URL in swiftDialog, see https://rumble.com/v119x6y-harvesting-self-service-icons.html [Default: /System/Applications/App Store.app/Contents/Resources/AppIcon.icns]
- パラメータ7:
Overlayicon as Path or URL in swiftDialog
- 優先度:
- [保存]してスクリプトの登録は完了です。
ポリシーの設定
- [コンピュータ] > [ポリシー]から新規ポリシーを作成に進みます。
- 任意ですが、今回は表示名と実行頻度を設定します。
- 表示名:
Google Chrome
- 実行頻度:
Ongoing
- Self Serviceから何度も実行できるようにするため選択してます。
- 表示名:
-
スクリプトの項目を選択し、Installomatorおよび先程登録したswiftDialogを起動するスクリプトを追加します。
- Installomatorのパラメータを設定します。
- 優先度:
後
- パラメータ4:
googlechromepkg
- 優先度:
- Prepare swiftDialogのパラメータを設定します。
- 優先度:
前
- 優先度を
前
に設定することで、Installomatorのスクリプトよりも先に実行されます。
- 優先度を
- パラメータ6:
https://use2.ics.services.jamfcloud.com/icon/hash_94f8d7f60fe82fb234065e05cccf385b1a4f9763ea1b4a3d9737e6a980fd0eae
- ここでは、Self Serviceで使われているGoogle ChromeのアイコンのURLを指定しています。
- 優先度:
- ファイルとプロセスの項目を選択し、設定します。
- コマンドを実行:
echo -e "progress: complete\nprogresstext: Done" >> /var/tmp/dialog.log; sleep 0.5; echo "quit:" >> /var/tmp/dialog.log;
- Installomatorのリポジトリに用意されている、swiftDialogを終了するスクリプトを参考にしています。
- コマンドを実行:
- [保存]してポリシーの設定は完了です。
実際の動作
Self Serviceからポリシーを実行すると、以下のように進捗が表示されます。
終わりに
今回は、Installomatorでアプリケーションのインストールの進捗を表示する方法を紹介しました。
実は今回紹介した方法は、Installomatorの公式で用意してくれている方法とは若干異なる方法を取っています。
公式の方法はスクリプトの実行順番のためにスクリプト名の文字コードの昇順で実行される仕様を使って実現しています。 実はJamf Proのポリシーは、基本的には画面で表示されている、項目順に処理が実行される仕様です。 ただ、スクリプトの優先度が前
の場合、項目順の前に実行されます。
つまり、
- スクリプトの優先度の
前
のスクリプト名の文字コードの昇順 - パッケージ、ソフトウェアアップデート、スクリプト(の優先度が
後
)などを実行して、Microsoftデバイスコンプライアンスまで項目順
のように実行される仕様です。
今回に関しては、ファイル名で実行順序を制御するのは、管理が煩雑になる可能性があると考え、ポリシー内のみで完結するように「スクリプト」の優先度と「ファイルとプロセス」のみで実現してみました。
また、00_Prepare_SwiftDialog.sh
の引数に、Jamfポリシーのトリガー名を指定するようにして、swiftDialogがインストールされていない場合は、swiftDialogのインストールが実施されるようにスクリプトを改変しても良いかもしれません。