Intuneを利用したアプリの更新・アップグレード

Intuneからアプリをインストールしたい

そんな要望のなかのひとつにアプリをアップグレードしたい、というテーマがあると思います。WindowsアプリをIntuneから展開する場合、いくつかの方法がありますので、それぞれの方法ごとにアップグレードするときにどういう操作になるのかを見てみたいと思います。

intunewinファイルから実行

Intune管理センターからWin32アプリとしてセットアッププログラムを展開する場合、Win32アプリの展開ウィザードの中から[置き換え]というウィザード項目を利用することで、前のバージョンのアプリケーションから新しいバージョンのアプリケーションへの更新を行うことができます。

アップグレードをするときは単純に新規でアプリをインストールするときと同じ設定を行うだけで問題なくアップグレードができます。もし前のバージョンのアプリがインストールされていることを前提条件にするなら、Win32アプリのウィザード内で [必要条件] – [追加の要件規則] を使って設定すればよいでしょう。

image

[追加の要件規則]メニューから[追加]をクリックして、前のバージョンのアプリの情報を入れていきます。ここでは7-zipの情報を入れています。7-zipの実行プログラムは7z.exeなので、インストールフォルダーと共に指定し、アプリのバージョンを [文字列 (バージョン)] で同時に設定します。

image

この時にわかりにくいのがバージョンに何を入れるか?ってこと。
実行プログラムファイルのプロパティを開き、[製品バージョン] 欄にあるバージョンを設定しましょう。[ファイルバージョン] ではなく、[製品バージョン] なのでお間違いなく。

image

Win32アプリのウィザードを進めると[置き換え]メニューというのが登場します。
[置き換え]メニューは前のバージョンのアプリを intunewin ファイルから展開したときに利用可能なオプションで、[追加] ボタンをクリックすると前のバージョンのアプリが選択できます。また、[以前のバージョンのアンインストール] 欄で [はい] をクリックすると、前のバージョンのアプリを明示的に削除してインストールするように矯正できます。
image

逆に [いいえ] をクリックすればアンインストールせずに新しいバージョンをインストールすることになるのですが、実際に前のバージョンのアプリをアンインストールするかはアプリに依ります。実際、7-zipを19.00から23.01にアップグレードした時はこの設定を [いいえ] にしても前のバージョンは削除されていました。
そうすると、次の疑問として [いいえ] を選ぶ意味ってなに?というのが出てきます。これは前のバージョンのアプリを [置き換え]メニューで選択することで、前のバージョンのアプリと新しいバージョンのアプリの関係性がアプリ設定内の [リレーションシップビューアー] というところから参照できるようになることが挙げられます。
image

いろんなバージョンが登場して、Intuneで展開するアプリが増えてくるとバージョン管理が煩雑になりますが、そうしたときにリレーションシップビューアーでひとつのアプリのバージョン管理ができるという点でメリットがあります。

wingetコマンドから実行

wingetコマンドはマイクロソフトが提供するリポジトリからアプリをダウンロード・インストールができるコマンドで最大の特徴はどのアプリも無人インストールができることです。このコマンドをバッチファイルにして、さらにIntunewinファイルに変換して、IntuneのWin32アプリとして展開しましょう、というのがここで行おうとしていることです。

winget upgrade コマンドを実行すると自分のコンピューターにインストールされているバージョンとリポジトリに提供されているバージョンが比較して確認できるようになります。
これで見るとWebexのバージョンがインストールされているものが44.7.0.30285に対して、リポジトリのバージョンが45.5.0.32411であることがわかります。

image

こうやってアップグレードすべきアプリを確認します。アップグレードしたいアプリが決まったら、アップグレードを実行します。アップグレードするときは以下のコマンドを実行します。

winget upgrade アプリ名 –accept-source-agreements –accept-package-agreements

この1行をバッチファイルにしてintunewinファイルに変換して展開すれば、Win32アプリの展開の仕組みを利用してwingetコマンドでアプリのインストールができます。
ちなみにバッチファイルをWin32アプリとして展開するときはインストールコマンドが

cmd.exe /c バッチファイル名

となるように指定しましょう。

エンタープライズアプリカタログ

エンタープライズアプリカタログはIntune Suiteライセンスから提供されるアプリ展開機能で、wingetのようにリポジトリからアプリのダウンロード・インストールを行うことができる機能です。エンタープライズアプリカタログそのものについては以前にも解説させていただきました。

エンタープライズアプリカタログは他のリポジトリからインストールする機能と違って、Intuneからインストールしたアプリに新しいバージョンがリリースされていないかをチェックしています。そのため、前のバージョンをIntuneから展開した後で新しいバージョンがリリースされると以下のように表示され、お知らしてくれます。この画面で [更新] ボタンをクリックすると

image

新しいエンタープライズアプリカタログの作成ウィザードが始まります。エンタープライズアプリカタログはWin32アプリと同じメニューでウィザードが進みますが、Win32アプリとは違って設定すべきパラメータが最初から入っているところが特徴です。実際、PuTTy 0.83 へのアップグレードではご覧のように検出規則にもPuTTy 0.83 に上がったことを確認するルールが入っていることが確認できます。

image

新しいエンタープライズアプリカタログの作成ウィザードの最後に割り当て対象を指定すればできあがり。Win32アプリを展開するときと全く同じ手順でアップグレードの設定ができることが確認できました。

Microsoft Store アプリ (新規)

Microsoft Store アプリ (新規)はwingetやエンタープライズアプリカタログと同じくマイクロソフトが提供するリポジトリからアプリをダウンロード・インストールする方法ですが、Microsoft Store アプリ (新規)にはアプリをアップグレードするための仕組みを持っていません。そのため全くの新規でアプリをインストールするときと同じようにアプリを展開します。既にアプリがインストールされているところに新しいバージョンのアプリを (アップグレードインストールではなく) 新規インストールしてしまって問題ないか?はアプリ次第ですが、ここで検証したVisual Studio Codeの場合は問題なくアップグレードが完了しました。
(Visual Studio Codeは上書きインストールすると前のバージョンを自動的に削除してくれる仕組みなんでしょうね)

あとMicrosoft Store アプリ (新規)の場合、アプリのバージョンが書かれていないので、どちらが新しいバージョンなのか、わかりずらいというデメリットもあります。こういうところを見ているとアプリをアップグレードするという前提を考えずに作られた機能なんじゃないのか?と疑いたくなります (だからエンタープライズアプリカタログというMicrosoft Store アプリ (新規)と似て非なる機能を提供したのかもしれないですが..)。

まとめとARM対応について

ということで、ここまでのところでIntuneでのアプリの展開方法別にアプリの更新・アップグレードを行う方法について見てきました。色々やり方はありますが、必ずこれを使わなければならないというものではないので、見ていただいて気に入ったもの、使えそうだなと思ったものを利用すれば良いと思います。

最後に全然関係ないけどARMの話を。
最近、Microsoft SurfaceなどでもARMベースのCPUを搭載したモデルが提供されていますが、IntelアーキテクチャのCPUではないので、既存のアプリでもインストールできるものとできないものがあります。
Intunewinファイルを作って展開するときは、自分でインストールするセットアッププログラムを用意しますからARMベースで動作するものを用意すると思いますが、リポジトリを利用するタイプのものに関してはARMベースで動作するものか?は入れてみないとわからないという問題があります。いずれにしても検証環境を用意してARMベースで利用できるものか?を検証してから展開するという作業を丁寧に行っていくことが必要になりそうです。