Intune で実践!intunewin によるアプリアップデート管理術

こんにちは!tsuji です!

Intune で Win32 アプリ (intunewin) を使ってアプリを配布している皆さん、こんなお悩みはありませんか?

  • 「配布済みアプリの新しいバージョンが出たけど、どうやってアップデートすればいい?」
  • 「intunewin ファイルを差し替えたのに、なぜかアップデートが走らない…」
  • 「置き換え機能があるらしいけど、検出規則との関係がよく分からない」

この記事では、Win32 アプリ (intunewin) の 置き換え機能 を使ったアップデート方法について、基本動作の仕組みから具体的な設定手順、運用上の考慮点までを解説します。


Win32 アプリ (intunewin) の基本動作 📝

アップデートの話に入る前に、まずは intunewin の基本動作 について整理しておきましょう。ここを押さえておくと、後の置き換え機能や検出規則の話がスムーズに理解できます。

基本構成要素

intunewin のアプリ配布ポリシーは、主に以下の 2 つの構成要素から成り立っています。

  • インストールコマンド:アプリをインストールするためのコマンド
  • 検出規則:アプリがインストール済みかどうかを判定するルール

実行フロー

intunewin のアプリ配布ポリシーが実行されると、以下の順序で処理が行われます。

  1. インストール検出
    • 端末上にアプリがインストールされているかどうか、検出規則で確認
    • 検出規則に一致する場合 → インストールコマンドは実行されず、Intune へ正常完了報告
  2. インストール実行・検出
    • 検出規則に 一致しない場合 → インストールコマンドを実行
    • 実行後、再度検出規則で確認 → インストールされていれば Intune へ正常完了報告
  3. 待機処理
    • GRS (Global Reevaluation Schedule) により、24 時間待機後に処理 1 から再実施

置き換え機能を使ったアプリアップデート方法 🔧

置き換え機能の概要

置き換え機能は、新しいバージョンのアプリ配布ポリシーを作成する際に、古いバージョンのポリシーを「置き換え対象」として指定する機能です。置き換え対象に指定された古いバージョンの配布は適用されず、新しいバージョンのみが配布されます。

設定方法

設定自体はとてもシンプルです。新しいバージョンの intunewin ポリシーを通常どおり作成する流れの中で、[置き換え] タブ で古いバージョンのアプリ配布ポリシーを指定するだけです。

「以前のバージョンのアンインストール」オプション

置き換え設定にある 「以前のバージョンのアンインストール」「はい」 にすると、新しいバージョンのインストール前にアプリのアンインストールが実行されます。このオプションの利用判断については、後述の「アップデートを確実に実行させるために」セクションで詳しく解説します。


グループ割り当ての動作 🔄

置き換え機能の挙動は、グループの割り当て方 によって変わります。ここを正しく理解しておかないと想定外の動作になるため注意が必要です。

同じグループが両方に割り当たっている場合

古いバージョンと新しいバージョンのポリシーに同じグループが割り当たっている場合、新しいバージョンのみが配布されます。これが置き換え機能の期待動作です。

別々のグループが割り当たっている場合

古いバージョンと新しいバージョンに別々のグループが割り当たっている場合、置き換え処理は行われず、それぞれのグループに対してそれぞれのバージョンが通常どおり配布されます。

カンパニーポータル利用時の自動更新

カンパニーポータルを利用しているユーザーに対して置き換え機能を利用する場合、グループの割り当て設定で 「自動更新」にチェックを入れる ことで、自動的にアップデートをインストールさせることができます。


アップデートを確実に実行させるために ✅

アップデートの際は、検出規則の設計に加え、対象アプリが上書きインストールに対応しているかどうかの事前確認が重要です。ここを怠ると、配布はできてもアプリのアップデートが正常に完了しない、あるいは置き換え機能を使っているのにアップデートされないといったトラブルにつながります。

事前確認:上書きインストールの可否を検証する

アプリによっては、古いバージョンの上にそのまま新しいバージョンを上書きインストールできるものと、一度アンインストールしてからでないとアップデートできないものがあります。

Intune で配布する前に、必ずローカル環境で以下の確認を行ってください。

  1. 古いバージョンがインストールされた端末で、コマンドプロンプトからサイレントインストールコマンド (インストール画面が表示されないインストール形式) を実行し、上書きインストールが正常に完了するか確認
  2. 上書きインストール後、アプリが正しいバージョンに更新されているか確認
  3. 上書きインストールが失敗する場合は、アンインストール → 再インストール の手順が必要になるため、置き換え設定の「以前のバージョンのアンインストール」を 「はい」 に設定

「以前のバージョンのアンインストール」を「はい」にする場合の注意点

「以前のバージョンのアンインストール」を「はい」にすると、置き換え処理の中でポリシーの [プログラム] タブに構成されたアンインストールコマンドが実行されます。そのため、このアンインストールコマンド自体もローカル環境で正常に動作するか事前に確認が必要です。

特に注意が必要なのが MSI 形式のインストーラー です。intunewin でポリシーを作成すると、アンインストールコマンドに MSI のプロダクトコードが自動で設定されますが、プロダクトコードはアプリのバージョンアップによって変わることがあります。 この場合、古いバージョンのプロダクトコードで構成されたアンインストールコマンドが新しい環境では機能せず、アンインストールに失敗するケースが発生します。

検出規則の設計

前述のとおり、intunewin では検出規則の評価が最初に行われます。ここの設計を間違えると、置き換え機能を使っていてもアップデートが実行されないというトラブルにつながります。

NG パターン:ファイルの存在だけで検出

たとえば、検出規則をファイルの存在 (exe ファイルがあるかどうか) だけで構成している場合、すでにアプリがインストールされていると検出規則に一致してしまい、インストールコマンドが実行されず、アップデートされません

OK パターン:ファイルバージョンを指定して検出

インストールコマンドを確実に実行させるには、検出規則でファイルバージョンを指定します。新しいバージョンのアプリ実行ファイル (exe) が存在するかどうかで判定することで、古いバージョンのアプリしか入っていない端末ではインストールコマンドが実行されるようになります。

ファイルバージョンの確認方法 🔍

配布対象アプリのファイルバージョンは、以下の手順で確認できます。

  1. スタートメニューのアプリ一覧から対象アプリを右クリック → 「ファイルの場所を開く」
  2. ショートカットが表示されるので、同様に右クリック → 「ファイルの場所を開く」 を繰り返す
  3. アプリの実行ファイル (exe) にたどり着いたら、右クリック → 「プロパティ」「詳細」 タブでファイルバージョンを確認

応用テクニック:ログファイルを使った検出規則 💡

ここまではアプリのバージョンアップを想定した検出規則の設計を紹介しましたが、実際の運用ではファイルバージョンでは制御しづらいケースもあります。たとえば以下のような場面です。

  • 配布済みのアプリを一度アンインストールし、異なるコマンドオプションを付けて再インストールしたい
  • 既存のアプリから別の後継アプリに移行したい (例:旧製品をアンインストールして新製品をインストール)

このような場合は、インストールスクリプト (bat や PowerShell など) でログを出力し、そのログファイルを検出規則に使うというテクニックが有効です。

スクリプト例 (bat ファイル)

メモ帳でエンコード形式を ANSI で保存してください。

shell
@echo off
set "logDir=C:\ProgramData\IntuneLogs"
set "logfile=%logDir%\<任意の名前>.log"

REM Create log directory if it doesn't exist
if not exist "%logDir%" (
    mkdir "%logDir%"
    if %ERRORLEVEL% NEQ 0 (
        echo Error: Failed to create log directory "%logDir%".
        exit /b 1
    )
)

REM Write to log
echo [%date% %time%] Starting Installation script >> "%logfile%"

REM Install the application
<インストールコマンド>
echo [%date% %time%] Installation completed successfully. >> "%logfile%"

REM Write to log
echo [%date% %time%] Script finished. >> "%logfile%"

exit
  • <任意の名前>:出力するログ名 (例:installed_sakura.log)
  • <インストールコマンド>:サイレントインストールコマンド (例:sakura_installxxxx-xxx-x86.exe /SP- /VERYSILENT /NORESTART)

対応する intunewin ポリシーの構成

  • [プログラム] タブ
    • インストールコマンド:Install_Application.bat
  • [検出規則]
    • 規則の種類:ファイル
    • パス:C:\ProgramData\IntuneLogs
    • ファイルまたはフォルダー:<任意の名前>.log
    • 検出方法:ファイルまたはフォルダーが存在する

運用上の考慮点 ── どの方法を選ぶべきか 🤔

アプリのアップデート方法は大きく分けて 3 パターンあります。それぞれのメリット・デメリットを整理します。

方法メリットデメリット
既存ポリシーの intunewin 差し替え (検出規則をバージョン評価に変更)ポリシーが増えないためシンプル段階的な配布検証ができない
新規ポリシー + 置き換え機能 (推奨)段階的な配布検証が可能。古いバージョンとの共存を制御できる数珠つなぎのポリシー削除時にひと手間かかる
新規ポリシー (置き換え機能なし)ポリシー管理がシンプルアプリ未配布の端末で二重配布になる可能性がある。セットアップ時に新旧両方のポリシーが実行され、時間が長くなる

運用としては「新規ポリシー + 置き換え機能」が最もバランスが良い方法です。特に ESP (登録ステータスページ) を利用している環境ではセットアップ時間への影響を考慮し、置き換え機能を活用して古いバージョンの不要な配布処理を抑制することが重要です。


まとめ

今回は、Win32 アプリ (intunewin) の置き換え機能を使ったアプリアップデート方法について解説しました。

  • intunewin の基本動作として、検出規則の評価が最初に行われる点を理解することがアップデート運用のカギ
  • アプリアップデートには 置き換え機能 を活用し、検出規則にはファイルバージョンを指定する
  • 配布前にローカル環境で上書きインストールの可否を必ず検証し、アンインストールオプションの要否を判断する
  • ファイルバージョンでの検出が難しい場合は、ログファイルを使った検出規則で対応可能
  • 運用方法は環境やシナリオに応じて選択し、段階的な検証が可能な「新規ポリシー + 置き換え機能」を基本とするのがおすすめ

ぜひ、自社の環境に合わせてアプリアップデートの運用を活用してみてください!


参考ドキュメント

この記事をシェア