主に管理下にあるmacOSに最新バーションのアプリケーションをインストールするスクリプトであるInstallomatorは、実はswiftDialogを用いてアプリケーションのインストール状況を表示する機能をサポートしています。

今回はこの方法をJamf Proで実現する場合を例に紹介します。

どうすれば進捗を表示できるのか

Installomatorで進捗を表示するには、以下の流れで処理を進める必要があります。

  1. swiftDialogを起動
  2. Installomatorを実行
  3. swiftDialogを終了

これを1つのJamfポリシーで実現していきます。

また、swiftDialogがデバイスにインストールされていることが前提となっているため、事前にInstallomatorなどでswiftDialogをインストールしておきましょう。

進捗表示のための準備

今回は、Google Chromeをインストールすると仮定して紹介します。 また、InstallomatorスクリプトはすでにJamf Proに登録されているものとします。

swiftDialogを起動するスクリプトの登録

まずは、swiftDialogを起動するスクリプトを登録します。

swiftDialogを起動するスクリプトはInstallomatorのリポジトリに用意されています。

  1. [設定] > [コンピュータの管理] > [スクリプト]から新規スクリプトの作成に進みます。

    Jamf Proの新規スクリプト作成の一般タブ

  2. 次に、スクリプトタブをクリックして、GitHubから取得してきた00_Prepare_SwiftDialog.shを登録します。

    Jamf Proの新規スクリプト作成のスクリプトタブの設定

  3. 任意ですが、オプションタブをクリックして、優先度やパラメータ名を設定します。パラメータ名は本家のスクリプト内のコメントから取得したものを使用していますが、任意の名前でも問題ありません。
    • 優先度:
    • パラメータ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

    Jamf Proの新規スクリプト作成のオプションタブの設定

  4. [保存]してスクリプトの登録は完了です。

ポリシーの設定

  1. [コンピュータ] > [ポリシー]から新規ポリシーを作成に進みます。
  2. 任意ですが、今回は表示名と実行頻度を設定します。
    • 表示名: Google Chrome
    • 実行頻度: Ongoing
      • Self Serviceから何度も実行できるようにするため選択してます。

    JamfポリシーのGeneral設定

  3. スクリプトの項目を選択し、Installomatorおよび先程登録したswiftDialogを起動するスクリプトを追加します。

    Jamfポリシーのスクリプト選択

  4. Installomatorのパラメータを設定します。
    • 優先度:
    • パラメータ4: googlechromepkg

    JamfポリシーのスクリプトのInstallomatorの設定

  5. Prepare swiftDialogのパラメータを設定します。
    • 優先度:
      • 優先度をに設定することで、Installomatorのスクリプトよりも先に実行されます。
    • パラメータ6: https://use2.ics.services.jamfcloud.com/icon/hash_94f8d7f60fe82fb234065e05cccf385b1a4f9763ea1b4a3d9737e6a980fd0eae
      • ここでは、Self Serviceで使われているGoogle ChromeのアイコンのURLを指定しています。
  6. ファイルとプロセスの項目を選択し、設定します。
    • コマンドを実行: echo -e "progress: complete\nprogresstext: Done" >> /var/tmp/dialog.log; sleep 0.5; echo "quit:" >> /var/tmp/dialog.log;

    Jamfポリシーのファイルとプロセスの設定

  7. [保存]してポリシーの設定は完了です。

実際の動作

Self Serviceからポリシーを実行すると、以下のように進捗が表示されます。

Self Serviceから実行した際の、インストールの進捗

終わりに

今回は、Installomatorでアプリケーションのインストールの進捗を表示する方法を紹介しました。

実は今回紹介した方法は、Installomatorの公式で用意してくれている方法とは若干異なる方法を取っています。

公式の方法はスクリプトの実行順番のためにスクリプト名の文字コードの昇順で実行される仕様を使って実現しています。 実はJamf Proのポリシーは、基本的には画面で表示されている、項目順に処理が実行される仕様です。 ただ、スクリプトの優先度がの場合、項目順の前に実行されます。

つまり、

  1. スクリプトの優先度ののスクリプト名の文字コードの昇順
  2. パッケージ、ソフトウェアアップデート、スクリプト(の優先度が)などを実行して、Microsoftデバイスコンプライアンスまで項目順

のように実行される仕様です。

今回に関しては、ファイル名で実行順序を制御するのは、管理が煩雑になる可能性があると考え、ポリシー内のみで完結するように「スクリプト」の優先度と「ファイルとプロセス」のみで実現してみました。

また、00_Prepare_SwiftDialog.shの引数に、Jamfポリシーのトリガー名を指定するようにして、swiftDialogがインストールされていない場合は、swiftDialogのインストールが実施されるようにスクリプトを改変しても良いかもしれません。