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

# 背景

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

[Use ServiceUI with Intune to Bring SYSTEM Process to Interactive Mode](https://www.anoopcnair.com/use-serviceui-with-intune-to-bring-system-process-to-interactive-mode/ "Use ServiceUI with Intune to Bring SYSTEM Process to Interactive Mode")

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

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

# psexecについて

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

https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/0ebfa003-55ee-c763-aa3d-0118cf47ddf4.png)

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

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

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

# 実例(7-Zip)

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

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

[PSAppDeployToolkit](https://psappdeploytoolkit.com/ "PSAppDeployToolkit")


## ファイルの配置

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/b892950f-e835-fdca-3313-c159493438f7.png)


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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/903b46f4-9769-dc3c-5bfa-4f87a5182baa.png)

## インストールスクリプト

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

```PowerShell: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](https://github.com/keitanak/IntuneWin32Sample/tree/main "Deploy-Application.ps1")


## IntuneWinファイルの作成

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/87c8c803-409c-4436-df3e-152fe37e95c2.png)



## Intuneの設定

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/f95e0286-6587-6146-f4a8-965789366b78.png)

# テストインストール結果


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/eb1cb6c7-b053-7810-a8f0-0d2bedf1e4df.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/c1c56e49-5f83-e0b7-e7d1-0762a375fc70.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/cbc49a0c-aed4-4a7a-8784-d6ece566ec33.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/32612722-78f3-33b7-f3a0-9c437762ca18.png)

正常完了ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015969/c85699e6-826a-16da-8e58-ca3e35078c42.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アプリで対話型インストールを行う その２](https://qiita.com/keitanak/items/1b7790314e9adef0d1a7)

## 最後に

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

[Ability to allow Win32 Application(System context) Interactive installation](https://feedbackportal.microsoft.com/feedback/idea/bc1837a6-29c6-ed11-a81b-002248519701 "Ability to allow Win32 Application(System context) Interactive installation")

Enjoy your Intune life!


[English version is here](https://dev.to/ktanakaster/interactive-installation-with-the-intune-win32-app-2l8m)