くらめその情シス:Intuneで業務用アプリを自動インストール(Windows編)

2020.07.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

どうも、情シスの徳道です。

Azure+Intuneシリーズ、まだまだ続きます。

今回はPCの自動セットアップの要であるアプリケーション(以下、アプリ)を自動インストールする設定を紹介します。このステップはややボリュームがあるので、Windows編とMac編に分けて記事にさせていただきます。

今回はWindows編です。

【この記事の目的】

PCサポートでWindows10マシンの標準インストールとするアプリの配布・インストールの設定をします。 ※弊社ではMicrosoft Office365は必須アプリではないので割愛しますが、今後このシリーズの記事で紹介予定です。

  • Google Chromeブラウザ
  • Google DriveFileStream
  • ESET Endpoint Security & ESET Security Management Center エージェント

【ご注意ください】

このシリーズでは以下の条件を満たしAzureを既に利用できていることが前提になっています。

  • Office365などでAzureでライセンス管理が利用可能であること
  • AzureADにユーザー、グループ情報があること(AzureAD Connector連携含む)
  • Azureのグローバル管理者アカウントの権限を持っていること

マエセツ:アプリインストール前に知っておくこと

Intuneでインストールできるアプリの種類

Intuneでアプリ配布できるものは以下の種類があります。

  • ストアアプリ:Microsoft StoreやGogle Play、iOSストアなど ※MacOS用のAppleストアアプリは不可
  • Microsoft 365アプリ:Office365など
  • Microsoft Edge:Windows用、Mac用があり、バージョン77以降
  • Microsoft Defender Advanced Threat Protection:MacOS用
  • その他:Webリンク、組み込みアプリ、基幹業務アプリ、Win32アプリなど

企業で必要になるアプリはストアアプリなどで完結している、ということはまだあまりないのでは?と思います。まだまだ従来タイプや内製アプリを利用するケースも多いと思われます。

今回の記事ではすべてのアプリが上記のカテゴリーの中で実際にもっとも利用するであろう「その他」アプリを中心に紹介いたします。

「その他」でインストールできるタイプのアプリの種類

「その他」アプリの中でもさらにいくつかの種類があります。

Windowsで今回の要件(ローカルPCのディスクにインストーラーを使ってインストール)するタイプは以下の2つを利用することになります。

  • 基幹業務アプリ:.msiパッケージなどで提供されるもの
  • Win32アプリ:Setup.exeやIntsall.exeなどのインストーラーを起動するもの

基幹業務(LOB)アプリ

.msiパッケージのプログラムについてはそのままIntuneに登録ができるのであまり懸念はないと思います。マイクロソフトなどから提供されるオプションプログラムや最近の64ビットアプリではこのタイプでの提供が増えてきていますね。サポートされるファイルの拡張子は公式をご覧ください。

【公式】Windows の基幹業務アプリを Microsoft Intune に追加する

Win32アプリ

一方で注意が必要なのがWin32アプリというタイプです。これはインストール用プログラムを起動するタイプで古くからある方式ですね。

こちらは複数の注意ポイントがありますので、確認しておきましょう。

  • Win32アプリとあるが実際には64ビットアプリもサポート
  • Windows10 バージョン 1607 以降が必要
  • Windows10はAzureAD参加し、自動登録でセットアップされることが必要
  • アプリのサイズは最大8GBまで

最大のポイントはインストーラーファイル群を「.intunewin」形式にツールで変換しないといけないところです。今回の記事のキモでもあります。

【公式】Intune スタンドアロン - Win32 アプリ管理

以降、各アプリごとに設定をしていきましょう。

基幹業務(LOB)アプリのIntune設定

Windows の基幹業務アプリを Microsoft Intune に追加する

まず最初にアプリのインストーラを用意します。今回はGoogle ChromeブラウザのEnterpriseパッケージを用いました。

Chrome ブラウザ エンタープライズの入手

基幹業務アプリパッケージを指定

ダウンロードしたzipファイルから解凍した .msi ファイルをIntuneに登録します。

Microsoft Endpoint Manager admin center にログオンし、「アプリ」→「すべてのアプリ」と進みます。

上のメニューで「追加」をクリックしてアプリの種類を「基幹業務アプリ」を選択します。

.msiファイルを指定します。読み込めない形式のファイルを指定するとエラーになってOKをクリックできません。

基幹業務アプリ情報を設定

必須事項はがついている項目で手入力をする必要があるのは「発行元」です。これは提供先のベンダーやユーザー名にしておきましょう。

以下、各項目の設定です。

  • アプリのインストールコンテキスト

パッケージの指定で自動選択され、変更はできません。

  • アプリのバージョンを無視する

アプリが自動的にアップデートされるタイプのアプリはこの設定を「はい」にしておきます。これはアプリ側で自動アップデート後に古いIntuneのバージョンで上書きされないようにするためです。

  • コマンドライン引数

アプリの自動インストール(msiexceの実行)に関する引数です。/iは自動設定されるため指定は不要です。 例として非表示(/quiet)、再起動しない(/restart)を指定しました。

以降はAzureテナント管理でカスタマイズされるポータルサイトで表示されるアプリとしての情報です(Azureログイン直後に表示されるWebアプリとは別のもの)。PCへのインストールセットアップには直接関係ありませんので、必要に応じて記載すればよいでしょう。

グループの割当

つづいてグループを割り当てます。構成ポリシーなどと異なり、動作するカテゴリーごとにグループを指定します。

カテゴリーの挙動を簡単に書きますと以下になります。

  • Required:アプリがインストールされる
  • Available for enrolled devices:後からポータルサイトでこのアプリをダウンロードインストールできる
  • Uninstall:アプリが検出されるとPCからアンインストールされる

今回はPCの自動セットアップに伴うインストールなので、「Required」にグループを割り当てます。

割り当てるグループはEMS E3(Intuneを含むサブスクリプションの)ライセンスを割り当てたグループです(今回の場合、前回の記事でCM MS-Intuneというユーザーグループ)。なお、ユーザーを個別割り当てすることはできません。

Requirdに設定されたグループに所属するAzureADユーザーが利用するIntune管理のPCでは、アプリをアンインストールしても再インストールされます。

(Uninstallでは逆の動作をしますので、利用禁止アプリの強制排除に使うことができるかもしれません。今後検討を予定しています。)

最後に設定の一覧を確認し、アプリを追加します。

Win32アプリのIntune設定

【公式】Intune スタンドアロン - Win32 アプリ管理

つづいてWin32アプリを設定していきます。Win32アプリは前述の通り、変換ツールを利用する必要がありますので、先ずその入手からとなります。

Microsoft Win32 コンテンツ準備ツールの準備

Microsoft Win32 コンテンツ準備ツール にアクセスしましょう。githubが開きます。

IntuneWinAppUtil.exe」をクリックし、「Download」ボタンで適当なディレクトリにコピーします。

変換作業はコマンドラインで行う必要があるため、c:\tmpなどタイプが楽な作業用フォルダを作っておくといいかもしれませんね。

次に変換するアプリの.exeファイルを含む、インストーラーファイル群を一つのフォルダにまとめます。

この時注意が必要なのは、変換対象のアプリインストーラーフォルダ内に別のアプリやファイルを含めないようにする、ということです。 特にexeファイル1個のパッケージの場合、つい1個のフォルダ内にファイルをまとめて置いてしまいがちです。

このツールは複数ファイルを.intunewinというIntune用のパッケージにまとめるため、別のアプリのインストーラーなどが混じっていると変換エラーや動作不良を起こします。またファイルサイズも増えてしまうので、インストール時にも時間がかかってしまうのです。

正しい例)  c:\tmp\drivefilestream フォルダ内に GoogleDriveFSSetup.exe のみ

誤った例)c:\tmp\apps フォルダ内に GoogleDriveFSSetup.exe と ESS_AllInOne.exe が置かれている

必要フォルダやファイルの配置は今回の例では以下のように配置してみました。

    • Microsoft Win32 コンテンツ準備ツールのフォルダ:C:\tmp
    • 変換対象ファイルを置くフォルダ:C:\tmp\drivefilestream
    • 変換対象ファイル:GoogleDriveFSSetup.exe
    • .intunewinファイルが作成されるフォルダ:c:\tmp\intunepkg

Microsoft Win32 コンテンツでパッケージファイルを変換

コマンドプロンプト、またはPowershellを開き、先ほどIntuneWinAppUtil.exeをダウンロードしたフォルダに移動します。

コマンド例).\IntuneWinAppUtil.exe -c c:\tmp\drivefilestream -s GoogleDriveFSSetup.exe -o c:\tmp\intunepkg

オプションの指定は以下です。

ーc:変換対象ファイルがあるフォルダを指定

-s:変換対象セットアップファイルの指定

-o:.intunewinファイルの出力先フォルダ

【コマンドの実行例】

PS C:\tmp> .\IntuneWinAppUtil.exe -c c:\tmp\drivefilestream -s GoogleDriveFSSetup.exe -o c:\tmp\intunepkg
INFO Validating parameters
INFO Validated parameters within 35 milliseconds
INFO Compressing the source folder 'c:\tmp\drivefilestream' to 'C:\Users\ユーザーID\AppData\Local\Temp\44a4e883-4339-4580-bb75-b727ac778e0d\IntuneWinPackage\Contents\IntunePackage.intunewin'
INFO Calculated size for folder 'c:\tmp\drivefilestream' is 216645416 within 1 milliseconds
INFO Compressed folder 'c:\tmp\drivefilestream' successfully within 7471 milliseconds
INFO Checking file type
~中略
INFO Compressed folder 'C:\Users\ユーザーID\AppData\Local\Temp\44a4e883-4339-4580-bb75-b727ac778e0d\IntuneWinPackage' successfully within 1471 milliseconds
INFO Removing temporary files
INFO Removed temporary files within 24 milliseconds
INFO File 'c:\tmp\intunepkg\GoogleDriveFSSetup.intunewin' has been generated successfully

[=================================================] 100% INFO Done!!!

PS C:tmp>

GoogleDriveFSSetup.intunewinファイルが出来上がっていればOKです。

Win32アプリパッケージを指定

出来上がった.intunewinのパッケージをIntuneに登録します。

Microsoft Endpoint Manager admin center にログオンし、「アプリ」→「すべてのアプリ」と進みます。

上のメニューで「追加」をクリックしてアプリの種類を「Win32アプリ」を選択します。

 

作成した.intunewinファイルを指定します。

Win32アプリ情報を指定

名前、説明、発行元、カテゴリなどを指定します。ここは基幹業務アプリと同じです。

Win32アプリのインストールコマンドを指定

このステップからがWin32アプリの難しいところです。

プログラムのセクションでインストールコマンドを設定します。ほとんどの場合は.intunewinに含まれるインストーラーファイルとその引数を指定します。

引数はアプリケーションごとに異なるため、プログラムのベンダーサイトやサポートに問い合わせるなどの調査が必要です。

今回はGoogleDriveFileStreamなので --silent ーーdesktop_shortcutの引数を与えています。

【参考】ドライブ ファイル ストリームをデプロイする

サイレントインストールオプションが無いアプリケーションの場合は引数なしで挙動を確認してみるといいかもしれません。

アンインストールコマンドは、一度パッケージをテストでインストールし、レジストリの以下のキーを調べると記載されていることが多いです。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

これはGoogleDriveFileStreamの例です。このように、バージョンによって異なるパスが含まれている場合があるので更新の際には確認しましょう。

 

Win32アプリの必要条件を指定

必要条件ではインストール先のマシンのOSバージョンやスペックを指定可能です。今回はOSのバージョンだけを絞り込んでみました。

大型のアプリケーションなどではディスク領域や物理メモリを指定しておくとよいかもしれません。

Win32アプリの検出規則を指定

最大の難関がこのステップ、検出規則です。このステップが何をしているのか、というとアプリが既にインストールされているかどうかのチェックです。

条件に合致すればインストーラは動作しません。その検出に使われるのが以下の項目です。また、記録される場所などもアプリケーションの構造やインストール方法によって異なります。

  • msi:アプリケーションコードを指定 → バージョンごとに異なる
  • ファイル:インストールされている実態ファイルやフォルダを指定 → バージョンやユーザー依存の場合に異なる
  • レジストリ:レジストリのキーや値を指定 → ユーザー依存の場合に異なる

どの項目を選択するかは利用するアプリの管理方法によって変わってくると思います。

【レジストリを指定する場合】

今回、Google DriveFileStreamの場合はレジストリの特定の値が存在することを対象としました。

初期セットアップではインストールされますが、バージョン依存せずユーザー側でアプリをアップデートしてもIntuneでインストーラーが実行されてデグレードしないようにするためです。

レジストリパスと値を指定し、検出方法は以下が選択できます。

  • 値が存在する
  • 値が存在しない
  • 文字列を比較
  • バージョンの比較
  • 整数値を比較

バージョン指定を厳密にしたい、などより詳細な指定をしたい場合は「比較」を指定するとよいでしょう。 (「比較」の項目は比較演算子で指定した値を評価します)

レジストリを指定する場合はキーパスと値をどの場所で指定するかが重要です。

アプリのインストール、アンインストールを繰り返してレジストリの挙動を見ます。

インストールを繰り返しても変化が無く、アンインストールされたら確実に消える場所を選択するのがコツかもしれません。

今回は前述のアンインストールコマンドの場所にある「VersionMajorの値」が「存在すること」を条件にしています。

【ファイルを指定する場合】

ファイルを指定する場合はインストールされたフォルダのプルパスと実行ファイルやフォルダを指定できます。

インストールフォルダ名が環境によって異なる場合は%USERPROFILE%や%ProgramFiles%など環境変数も指定可能です。

検出方法は以下から選択となります。

  • ファイルまたはフォルダーが存在する
  • 変更日
  • 作成日
  • 文字列(バージョン)
  • サイズ(MB)

なお複数条件も設定でき、その場合はAND条件になるようです。レジストリ+ファイル、のような検出規則の組み合わせも可能です。

Win32アプリの依存関係を設定

あとひと踏ん張り。依存関係の設定です。

複数のWin32アプリを設定している場合、この依存関係を設定することで、先にインストールが終わっている必要があるアプリを指定できます。

依存関係の設定をしていない場合、どのアプリからインストールされるかはランダムになるのでわかりません。

この設定をしておくとアプリのインストールが順番に行われるので、ミドルウェアやフレームワークが先にインストールされていることが条件のアプリや、もしインストールが上手くいかない場合などにも指定をしてみるとよいかもしれません。

設定は既に作成済みのWin32アプリを指定するだけです。

これで設定は完了です。

これまでの設定同様に設定項目の確認をして作成しましょう。

お疲れ様でした!

別のWin32アプリ例

ESET Endpoint Security & ESET Security Management Centerのインストールも、GoogleDriveFileStreamとほぼ同様に設定しました。

ESET Security Management Center インストーラーはバッチファイルを実行して応答するタイプであったため、オールインワンインストーラーを作成して、1つのexeファイルとすることでWin32アプリとしてインストールを行っています。

【参考】ESET クライアント管理用プログラムでオールインワンインストーラーを作成してインストールする方法

含まれるプログラムは64ビットですが、ちゃんとインストールされ、64ビットアプリもサポートされていることが確認出来ました。

参考までにこちらもインストールコマンドと検出規則を紹介いたします。

さいごに

これでWindowsアプリのインストール設定ができました。アプリインストールはPCサポート作業でも手間のかかる部分であるため、この部分が自動化されると作業はかなり楽になると思います。

Win32アプリの場合はレジストリやサイレントインストールオプションを調べたり、場合によってはカスタマイズ設定を事前に作成するたりするなどちょっと手間がかかります。

ですがその手間は繰り返されるPCセットアップが均一な品質で手間なしになることを考えるとやりがいのある部分ではないかな、と思います。

今回はストアアプリやマネージドアプリのご紹介ができませんでしたので、近いうちに紹介ができればいいな、と思います。

次回はMacOS用アプリインストール設定の記事でお会いしましょう。

AzureAD&Intuneに関するまとめ記事

AzureAD&Intuneに関して、以下リンクから参照できます。

くらめその情シス:AzureADとIntuneを使ってPC管理を効率化してみた