Mac-アプリケーション設定の制御

### はじめに...

調査した内容を時系列にまとめた資料なので、その点ご了承ください。

## 目次

1. 実行環境
1. 実現したいこと
1. CLIによる制御
1. プロファイルを使った制御
1. 設定値の収集
1. 設定ファイルの作成
1. プロファイルの適用
1. プロファイルの動作確認
1. まとめ

--------

### 1. 実行環境

|  項目  |  情報 |
| ---- | ---- |
|  OS  |  macOS 11.3.1  |
|  HW  |  MacBook Air (11-inch, Mid 2013)   |
|  MDM環境  |  microsoft intune  |

### 2. 実現したいこと

**最終目標**

- GUIの操作なしにmacのセットアップが行える環境を整備したい


**今回の目標**

- GUIの操作なしにアプリケーションの設定を行いたい
    - 今回は、Microsoft AutoUpdateの設定を行う

### 3. CLIによる制御

調査したところ、アプリケーションの設定は、 ~/Library/Preferences/配下に保管されていること、plutilコマンドで編集できることがわかった。

ただ、対象ファイルを修正しても、アプリケーション起動時に設定が元に戻ってしまうため、今回は採用を見送りとする。

### 4. プロファイルを使った制御

CLIを諦めて、プロファイルにより制御できないか調査したところ、intuneにてアプリケーション設定を配信するための機能があったため、今回はこの機能を利用する。
※ ProfileCreatorでプロファイルを作成する方法もあるが、CLIでプロファイルを適用する方法がわからず、今回は割愛する。

![intune-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461335/29491d45-5265-a14c-06e2-585b14b8be2e.png)


### 5.  設定値の収集

plutilというコマンドを使って、設定値を収集する。流れとしては、(1) デフォルト値の収集(2)アプリ側で設定変更(3)設定変更後の値を収集となる。

#### 5-1. デフォルト値の収集

```console
plutil -p  ~/Library/Preferences/com.microsoft.autoupdate2.plist

(中略)
  "InstallLockedBy" => 0
  "InstallOnCloneEnabled" => 1
  "IOCRestoreFailCount" => "0"
  "LastUILaunchDate" => 2021-05-10 15:12:08 +0000
  "LastUpdate" => 2021-05-10 14:06:48 +0000
  "OptionalDataCollectionEnabled" => 0
  "StartDaemonOnAppLaunch" => 1
  "WindowsAzureMobileServicesInstallationId" => "C1E6B380-2E6D-4058-B18E-9B9B24F10C54"
(中略)
```

#### 5-2. アプリ側で設定変更

![intune-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461335/14773022-2fb5-c7bf-a36d-ee7b3832eeb0.png)

#### 5-1. 設定変更後の値の収集

```console
plutil -p  ~/Library/Preferences/com.microsoft.autoupdate2.plist

(中略)
  "ChannelName" => "Preview"
  "InstallLockedBy" => 0
  "InstallOnCloneEnabled" => 1
  "IOCRestoreFailCount" => "0"
  "LastUILaunchDate" => 2021-05-10 15:12:08 +0000
  "LastUpdate" => 2021-05-10 14:06:48 +0000
  "OptionalDataCollectionEnabled" => 0
  "StartDaemonOnAppLaunch" => 1
  "WindowsAzureMobileServicesInstallationId" => "C1E6B380-2E6D-4058-B18E-9B9B24F10C54"
(中略)
```

結果として、「"ChannelName" => "Preview”」が必要な設定とわかった。


### 6.  設定ファイルの作成

intuneでは、xml形式で配信する必要があるため、設定ファイルをxml形式で作成する。

```console
% cp ~/Library/Preferences/com.microsoft.autoupdate2.plist ~/Downloads/
% plutil -convert xml1 ~/Downloads/com.microsoft.autoupdate2.plist
% grep -A 1 ChannelName ~/Downloads/com.microsoft.autoupdate2.plist
	<key>ChannelName</key>
	<string>Preview</string>
% grep -A 1 ChannelName ~/Downloads/com.microsoft.autoupdate2.plist > MSupdate_Channel.plist
```

### 7.  プロファイルの適用

今回は、intuneの機能を利用するため、intuneを使って、対象端末にプロファイルを適用する。
※端末は、すでにintuneへ参加しているものとする。

Microsoft Endpoint Manager Admin Centerにログインし、
デバイス > macOS > 構成プロファイルを開き、プロファイル作成ボタンをクリック。

![intune-003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461335/e68af372-0b37-bb30-2e1d-c20755def488.png)

今回は、以下のようにポリシーを作成/適用。

![intune-004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461335/68608897-0e69-9b26-65fd-9a5d665fb65d.png)


### 8. プロファイルの確認

システム環境設定でプロファイルが適用されたこと、アプリ側で設定されたことを確認し、問題なければ設定完了。

#### 8-1. プロファイル状態

![intune-005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461335/ac485aaf-e09c-97f3-6ff1-86ba63d80042.png)

#### 8-1. アプリ状態

![intune-006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461335/84262eed-eb12-387d-24c7-536af165d66b.png)

### 9. まとめ

- MDMを使って、GUIの操作なしにアプリケーション設定をすることができた
- アプリによっては、プロファイル設定に応じて、該当の設定箇所がグレーアウトすることも確認できた