LoginSignup
1
2

More than 1 year has passed since last update.

Intune Win32アプリで対話型インストールを行う

Last updated at Posted at 2023-03-18

背景

Intuneを利用してアプリ配布を行う時に、Win32アプリを利用することが多いと思います。
残念ながらIntuneではサイレントインストールにしないとインストールができません。
すべてのアプリがサイレントインストールならばいいのですが、実際にはそういかない場合も多いと思います。
色々と調べてみると、海外のコミュニティでも同様のことで困っている人がいて、以下のような対応策が公開されています。

Use ServiceUI with Intune to Bring SYSTEM Process to Interactive Mode

ServiceUI以外の方法がないのかな?と思い、ふと思ってpsexecでも同様のことができるのでは?と思い試してみたところうまくいきましたので記事にしておきます。

IntuneのWin32アプリ配布で対話型インストールができなくて困っている方、サイレントインストールパッケージを作るまでの暫定的な対応などで利用できるかなと思います。

psexecについて

psexecについての説明は省きますが、MSの公開しているツールです。プロセスをSystemアカウントで動作をさせたい時などに利用することがありますね。

コマンドラインオプションの中の-iを使うと、指定したセッションと対話して実行することができます。

image.png

イメージとしては、intuneでアプリ配布を実行する際のインストールコマンドの中で、

psexec.exe -i <ユーザのセッションID> <インストールコマンド> /accepteula

とすることで、インストールコマンドをSystemアカウントで実行しつつ、画面をユーザのセッションIDに接続することができると思います。

実例(7-Zip)

早速試してみます、7-ZipをPSAppDeployToolkitで配布する物を準備して、インストールコマンドに上記のpsexecを入れることで、対話型インストールを実現します。

PSAppDepolyToolkitについても説明は割愛しますが、SCCMやIntuneなどでアプリ配布を行う時に、ちょっとこういう機能が欲しいなというhelperスクリプト集といったところでしょうか。自分で作るのは大変なので、こういうものが公開されているのはありがたいですね。メッセージ表示は日本語にも対応していますね。

PSAppDeployToolkit

ファイルの配置

ソースファイルのフォルダはこうなります。

image.png

Filesの下にインストールファイルを配置します。
今回はこうなります。

image.png

インストールスクリプト

INSTALLATION のセクションにこのように記述します。
1行目でログインユーザのセッションIDを取得(Explorer.exeのセッションIDを取得)
2行目でpsexecを使って、実際のインストールコマンド実行を行います。

Deploy-Application.ps1
        $sid=(Get-Process -Name explorer).SessionId
        Execute-Process -Path "$dirFiles\PsExec.exe" -Parameters "-i $sid /accepteula $dirFiles\7z1900-x64.exe" -WindowStyle 'Normal'

実際のファイルはこちらに保管しました。
Deploy-Application.ps1

IntuneWinファイルの作成

このフォルダの下に、PSAppdeployファイル一式を保管しました。
D:\Documents\Intune\Apptest01\Toolkit

アップロード用のIntuneWinファイルの作成は以下にて実施しました。

image.png

Intuneの設定

InstallコマンドはPSAppDeployTookitそのままで大丈夫です。
SilentをつけていますがこれはPSAppDeployTookitに対する指示なので、実際のインストーラ画面は表示されます。

image.png

テストインストール結果

image.png

image.png

ちゃんと7Zipのインストーラ画面が表示されました。

image.png

image.png

正常完了ですね。

image.png

7Zipをわざわざ対話型にする必要はありませんが、もっと複雑なインストールが必要なものや、プリンタドライバなど対話型が前提の場合には利用価値がありそうです。

ログファイルの確認

うまくいかない場合には、以下のログファイルが参考になります。

Intune側のログファイル

C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log
ちょっと読み解くのが難しいですね、SCCMを利用している場合、ログビューアのcmtraceで見やすく表示できます。
こちら側のログではDeploy-Application.exeを実行するところまで行っていることが確認できればOKです。

PSAppDeployのログファイル

C:\Windows\Logs\Software
このフォルダにPSAPPDeployがログを出力してくれます。実行中のエラーなどの判定には、これも便利な機能です。

次回はServiceUIを使った方法でいろいろ試してみたいと思います。
Intune Win32アプリで対話型インストールを行う その2

最後に

よく考えたら、そもそもこれをIntuneの機能でできないことが問題ですね、MSのFeedbackサイトにも投稿してみましたので、ご賛同いただける方は、投票をお願いいたします。

Ability to allow Win32 Application(System context) Interactive installation

Enjoy your Intune life!

English version is here

1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2