LoginSignup
0
0

More than 1 year has passed since last update.

PSAppDeployToolkitの使い方 (入門編)

Posted at

はじめに

SCCMやIntuneでアプリケーションの配布を行う際には、アプリによりますが、インストールの際に追加で色々と行わないといけない事があります。
setup.exeなどのインストーラの実行のみならず、msiのインストール、ファイルコピーやレジストリの追加、環境変数の追加、事前にVC runtimeのインストールなども必要な場合があります。
すべて手動で実施するわけにはいかないので、スクリプト化して実行すると思いますが、一からスクリプトをすべてを記述するのはなかなか大変ですね。

上記のようなアクションが簡単に記述できるツール集がPSAppDeployToolkitです。少し複雑なインストールの手順でも、このツールを利用すると、簡単にインストールの記述が行えます。
また、インストール前にユーザにダイアログを表示したり、実行中のプログラムを終了したりと、ユーザ対話も可能とするツールになっています。
海外の有志の方が作成・メンテされているものです。

入手方法

以下のサイトから入手できます。
PSAppDeployToolkit
Downloadの箇所をクリックすると
image.png

GitHubのページが開きます。
image.png

下のほうにスクロールし、Assetのところからダウンロードします。
image.png

PSAppDeployToolkit_v3.9.3.zipをダウンロードし、解凍します。
Toolkitフォルダの中に一式配置されています。

image.png

ファイル配置

まず、新規にフォルダを作成し、その中に上記でダウンロードしたToolkitフォルダの中身をコピーします。
image.png

インストールに使用するインストーラなどのファイルをFilesフォルダの中にコピーします。
そして、Deploy-Application.ps1の中に、インストールに必要となる情報・コマンドなどを記述することになります。

使い方

Deploy-Application.ps1の中身を見てみましょう。
いくつかのセクションに分かれています、セクションを一覧にしてみるとこんな感じです。

セクション名 説明
VARIABLE DECLARATION 変数の宣言
PRE-INSTALLATION インストール前の処理
INSTALLATION インストール処理
POST-INSTALLATION インストール後の処理
PRE-UNINSTALLATION アンインストール前の処理
UNINSTALLATION アンインストール処理
POST-UNINSTALLATION アンインストール後の処理
PRE-REPAIR 修復前の処理
REPAIR 修復処理
POST-REPAIR 修復後の処理

前処理、後処理のところでは、ユーザに事前、事後のダイアログを表示する機能の実行を想定しています。
インストール、アンインストール、修復のすべてをこの中に記述しておきます。
実際にどの処理を実行するかは、Deploy-Application.exeに対してパラメータを渡すことでどの処理を行うかを指定します。

Deploy-Application.exe -DeploymentType 'Install'
Deploy-Application.exe -DeploymentType 'Uninstall'
Deploy-Application.exe -DeploymentType 'Repair'

インストールとアンインストールだけでよければRepairのセクションを記述する必要はありません。

MSIの例

一例として7ZipをPSAppDeployToolkitの色々な機能を使いながら設定してみたいと思います。

変数宣言

ZeroConfig MSIの都合、アプリそのものの情報は入れていません。スクリプトの情報のみ記載しています。

Deploy-Application.ps1
    ##*===============================================
    ##* VARIABLE DECLARATION
    ##*===============================================
    ## Variables: Application
    [String]$appVendor = ''
    [String]$appName = ''
    [String]$appVersion = ''
    [String]$appArch = ''
    [String]$appLang = 'EN'
    [String]$appRevision = '01'
    [String]$appScriptVersion = '1.0.0'
    [String]$appScriptDate = '05/21/2023'
    [String]$appScriptAuthor = 'Device Manager'
    ##*===============================================

インストール前のユーザ向けダイアログ表示

インストール実行前に、特定のアプリケーションが実行されている場合に、警告画面を表示します。
PRE-INSTALLATIONセクションの以下の部分になります。
今回7Zip File Manager 7zFM.exeが起動している場合に警告を表示します。
また、インストールするかどうかを3回まで延期可能としてユーザに確認します。

Deploy-Application.ps1
## Show Welcome Message, close Internet Explorer if required, allow up to 3 deferrals, verify there is enough disk space to complete the install, and persist the prompt
Show-InstallationWelcome -CloseApps '7zFM' -AllowDefer -DeferTimes 3 -CheckDiskSpace -PersistPrompt

インストール中の状況表示画面

ここは編集不要です。

Deploy-Application.ps1
## Show Progress Message (with the default message)
Show-InstallationProgress

Zero-Configuration MSI Deployment

インストールするアプリがMSIファイル一つであれば、ファイルを保管するだけで自動的にインストールを実行してくれます。
今回は7-ZIPのMSI版をダウンロードして、Filesフォルダにコピーしておきます。
注意点として、VARIABLE DECLARATIONの$appNameには何も入力しないようにする必要があるようです。
"## Handle Zero-Config MSI Installations"の箇所でMSIの自動インストールが行われます。編集は不要です。

インストール完了時の通知機能

メッセージ部分のみカスタマイズしました。

Deploy-Application.ps1
        ## Display a message at the end of the install
        If (-not $useDefaultMsi) {
            Show-InstallationPrompt -Message '7-Zip Installation Completed' -ButtonRightText 'OK' -Icon Information -NoWait
        }

実行画面

管理者権限のコマンドプロンプトから、以下のコマンドで実行してみます。

Deploy-Application.exe -DeploymentType 'Install'

実行前にすべてのウインドウが最小化され、以下の画面が中央に表示されます。
ユーザの注意を引く工夫ですね。

image.png

今インストールしたくない場合、[後で]を押すと3回まで延期できます。
ちなみにこのインストール実行前に7Zip File Managerを起動した状態で実行すると、こちらの画面で起動しているアプリをクローズするように促されます。

image.png

インストールを続行すると、いかにもインストールをやっている感のある画面が表示され、右下に通知も表示されます。

image.png

インストール完了時には右下にこちらの表示がされます。終わったことがはっきりわかりますね。

image.png

ちなみに、これらのユーザ対話画面を表示したくない場合には、以下のように実行するだけで一切表示されなくなります。強制的に配布する場合にはこちらのほうが便利な場合もありますね。

Deploy-Application.exe -DeploymentType 'install' -DeployMode 'Silent'

今回作成したファイルはこちらに保管しました。

0
0
0

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
0
0