アプリの配布のパッケージ アクションと検出ルール
アプリの配布がパッケージをどのように配布するかを定義するものがパッケージ アクションです。 アプリの配布がアプリをデバイスに配布すべきかどうかを決定する際の助けとなるのが、パッケージ検出ルールです。
パッケージ アクション
[アプリの配布] > [アプリ カタログ] でパッケージ アクションを構成します。アプリを追加または編集し、[パッケージ] タブを選択します。 使用するアクションをドラッグし、ビルダ ツリーにドロップします。 ビルダ ツリーでアクションを選択して構成します。
たとえば次のようなパッケージ アクションを使用できます。
アプリが既にインストール済みであり、そのため再度インストールすべきではないかどうかの決定に役立ちます。
重要: true と解決された検出ステップがある場合、パッケージの処理が停止し、デバイスのアプリ状態は準拠と表示されます。
使用できる検出ルールの詳細については、このトピックで後述する「パッケージ検出ルール」をご参照ください。
: Ivanti アプリ配布の既定の作業パスにファイルをダウンロードします。既定の作業パス:
C:\Program Data\Ivanti\Ivanti Cloud Agent\Agent\SWD\working
他のパスを指定しない限り、ファイル パスを受け入れるアクションでは、このパスが想定されます。 このフォルダは、各パッケージの実行前と実行後にクリアされます。
ここには複数のファイルを指定でき、必要であれば複数の「ファイルのダウンロード」アクションを設定できます。 ファイルをホストする場所は、認証を必要としない、配布先のクライアントがアクセスできる HTTP(S) ロケーションであれば、どこでもかまいません。
クラウドファイル エクスプローラー
[ファイルを選択] ボタンをクリックすると、 [クラウドファイル エクスプローラー] が開き、組織の Microsoft Azure Blob Storage からファイルを選択できます。 Ivanti Neurons には Azure ストレージ アカウントは含まれていません。 Azure でストレージ コンテナを作成する方法については、こちらの Microsoft の記事をご参照ください。
クラウドファイル エクスプローラーを使用する前に、[管理者] > [認証資格情報] で Azure Blob Storage の認証資格情報を追加する必要があります。 詳細については、「認証資格情報」をご参照ください。 Azure では、Azure キーのローテーションを考慮して、Azure [key1] と Azure [key2] の両方について、Ivanti Neurons で認証資格情報を作成することを推奨します。 こうすることで、クラウドファイル エクスプローラーで目的のアカウントを選択できます。
フォルダやファイル リストへの自動入力の際にこれらの認証資格情報が使用されることで、ファイルのダウンロード アクションにおいて、選択したファイルの Shared Access Signature の URL (Microsoft Azure) を取得できます。 クライアントは、これらの認証資格情報を使用しません。
認証資格情報を追加すると、クラウドファイル エクスプローラーでクラウド ストレージの [アカウント] と [コンテナ] を選択できます。 コンテナ ブラウザには、そこに保存されているファイルとフォルダが表示されます。 1つ以上のファイルを追加するには、ファイルの横のチェックボックスをオンにし、[追加] ボタンを選択します。 追加したファイルの URL は、[ファイルのダウンロード] アクション プロパティに表示されます。
クラウド ストレージ プロバイダは、生成された URL トークンに有効期限が設定されていることを要求します。 アプリの配布は、トークンの有効期限を7日に設定し、5日おきにトークンを更新して、ターゲット クライアントからのアクセスが失われるのを防ぎます。
Azure Blob ストレージを表示すると、[アップロード] ボタンがあります。このボタンを使用すると、ファイルを参照し、選択したファイルをアップロードできます。 アップロードしたファイルは、エクスプローラーで選択したフォルダに置かれます。 大量のファイルをアップロードすると完了まで時間がかかるため、アップロードしたファイルがエクスプローラーに即座には表示されない場合があります。
[接頭語でフィルタリング] テキスト ボックスでのクラウドファイルのフィルタリングは、Microsoft API によって制限されています。このフィルタは、選択したフォルダに限定されており、サブフォルダは含まれません。 入力するフィルタ テキストは、ファイル名 (大文字と小文字の区別あり) と正確に一致しており、目的のファイル名の先頭文字で始まっている必要があります。 完全なファイル名を含める必要はなく、先頭の数文字を入力するだけです。
SHA256ハッシュ値
ファイルのダウンロード オプションには、オプションのハッシュ値フィールドも含まれます。 ハッシュ値を指定した場合は、アプリの配布により、ダウンロードされたファイルのハッシュ値が検証されることになります。 値が一致しない場合は、ダウンロードされたファイルが削除され、配布が中止されます。 ピア ダウンロードのような高度な配布技術をアプリの配布で使用する場合は、ハッシュ値を指定してください。
普通の [実行] アクションでは、実行するファイル、コマンドライン、インストーラを実行すべきユーザのタイプを指定できます。 [MSI の実行] および [MSIX の実行] アクションを使用すると、MSI、MSP、および MSIX 固有の操作と表示オプションを選択できます。
フォルダの作成、ファイルの移動/コピー/削除、Zip 圧縮/解凍があります。
デバイスのエージェント ポリシーに従ってデバイスを再起動します。 再起動を必要とするアプリがある場合は、そのデバイスが再起動されるまで、そのデバイスに他のアプリをインストールすることはできません。
レジストリ キーを作成または削除します。 レジストリ値を設定または削除します。
バッチ ファイルまたは PowerShell スクリプトを実行します。 PowerShell Core オプションは、 PowerShell Core が欠落している場合にこれをインストールするわけではありません。 [自動] オプションは、最初に PowerShell Core を試行し、PowerShell Core がインストールされていない場合は PowerShell にフォールバックします。このアクションにはスクリプト エディタが組み込まれています。 使用するスクリプト コードをこのエディタ内で追加する必要があります。
指定した秒数の間、パッケージの実行を一時停止します。 以前のアクションを完了するのに追加の時間が必要な場合にこれを使用します。
パッケージ検出ルール
パッケージ検出ルールは、パッケージが既にインストール済みであり、そのため再度インストールすべきではないかどうかの決定に役立ちます。
[アプリの配布] > [アプリ カタログ] でパッケージ検出ルールを構成します。アプリを追加または編集し、[パッケージ] タブを選択します。 [検出] 配布前アクションをビルダ ツリーに追加し、これを選択して構成します。
検出ルールは、パッケージの処理の開始時にのみチェックされますので、検出アクションを使用する場合は常に、ビルダ内の最初の項目が検出アクションです。 検出ルールは、定義された順序で実行されます。
重要: true と解決された検出ステップがある場合、パッケージの処理が停止し、デバイスのアプリ状態は準拠と表示されます。
たとえば次のような検出ルールを使用できます。
完全なファイル パスとファイル名を指定します。 [存在する] または [存在しない] のいずれかを選択します。
ファイルのバージョン情報は通常、実行可能ファイルについてのみ利用できます。 アプリの配布では、「製品バージョン」値ではなく「ファイル バージョン」値が使用されます。 完全なファイル パスとファイル名を指定します。 演算子は、「より小さい」、「より大きい」、「等しい」、または「次の範囲にある」のバリアントにすることができます。 指定したファイルとパスが存在しない場合、またはファイルに解析可能なバージョンがない場合は、false が返されます。
バージョン演算子と比較演算子の仕組みの詳細については、Microsoft のこの記事をご参照ください。
完全なファイル パスとファイル名を指定します。 ファイル サイズをバイト単位で指定します。 アプリの配布では、「ディスク上のサイズ」ではなく「サイズ」が使用されます。指定したファイルとパスが存在しない場合は、false が返されます。
完全なファイル パスとファイル名を指定します。 比較する SHA-2ビット長を選択します。 指定したファイルとパスが存在しない場合は、false が返されます。 次のように、PowerShell を使用してハッシュ ダイジェストを生成できます。
-
Get-FileHash -Algorithm SHA256 -Path C:\MyApp\myfile.exe
このルールが調べるのは日付のみであり、時刻ではありません。 完全なファイル パスとファイル名を指定します。 [次の値に等しい] のような演算子を選択します。ファイルの日付は、ロケールの mm/dd/yyyy 形式に相当する UTC (協定世界時) で指定する必要があります。 アプリの配布では、「作成」日ではなく「変更」日が使用されます。 指定したファイルとパスが存在しない場合は、false が返されます。 次のように、PowerShell を使用してファイルの日付を UTC で取得できます。
-
(Get-Item C:\MyApp\myfile.exe).LastWriteTimeUtc
MSI 製品コード GUID を入力し、MSI が [インストールされている] または [インストールされていない] を選択します。 Microsoft の Orca ツールを使用して、「製品コード」GUID を表示します。 次のレジストリ キーの下で、インストールされている MSI GUID を確認することもできます。
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
- HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
MSIX パッケージのフル ネームを入力し、MSIX が [インストールされている] または [インストールされていない] を選択します。 Microsoft がここで説明しているように、PowerShell の Get-AppxPackage コマンドを使用してパッケージのフル ネームを検索します。
検出するキーのレジストリ キー情報を指定します。
- レジストリ バージョン: [32 ビット] または [64 ビット] を適切に選択するか、ターゲットのデバイスが使用しているバージョンと自動的に一致させたい場合は [システム] を選択します。
- ルート キー: HKEY_LOCAL_MACHINE など、検出するキーを含むルート キーを選択します。
- キー: 検出するレジストリ キー名へのフル パス (既に指定したルート キーは含めないでください) を入力します。
- [存在する] または [存在しない] を指定します。
検出する値のレジストリ キーと値の情報を指定します。 キーまたは値が存在しないか、ユーザがアクセスできない場合、ルールは false を返します (比較演算子が [存在しない] でない限り)。
値の名前を指定する必要がありますが、「(既定)」値を確認する場合は空白のままにしておく必要があります。
バージョン比較を行う場合、比較オペランドと、レジストリ値に関連付けられたデータは、ここで説明されているバージョン形式であることが必要です。 これらのいずれかが満たされていない場合、検出ルール (およびパッケージ) によってエラーが生成されます。
バージョン演算子と比較演算子の仕組みの詳細については、Microsoft のこの記事をご参照ください。
文字列比較では大文字と小文字が区別されます。 レジストリ値に REG_SZ (文字列) 型ではないデータが含まれている場合は、次のように文字列に変換されます。
- REG_DWORD: (regedit.exe に示されている) 10進数形式が使用されます。
- REG_QWORD: (regedit.exe に示されている) 10進数形式が使用されます。
- REGBINARY: regedit.exe で使用されるバイト ペア形式が使用されますが、大文字になります (例: 「46 AA 6C 6B 65 6E」)。
- REG_MULTI_SZ: 行はスペースで連結されて1つの行を形成します (例:「Line1 Line2 Line3」)。
- REG_EXPAND_SZ: すべての環境変数が展開されます。
検出スクリプトでは、PowerShell (PowerShell Core ではない) またはバッチ構文を使用できます。 検出の成功は、スクリプトの数値終了コードに基づきます。 終了コード「0」(ゼロ) は true に相当します。 その他の終了コードはすべて false と見なされます。 終了コードは「True」ではなく数値である必要があります。 組み込みのスクリプト エディタを使用してスクリプトを作成します。
組み込みのスクリプト エディタを使用してスクリプトを作成するか、[ファイルを選択] オプションを使用してファイルを参照することもできます。 指定するファイルとパスはターゲット システム上に存在する必要があります。 スクリプト ファイルがまだデバイス上にない場合は、 [ファイルのダウンロード] アクションを使用して、スクリプト ファイルをデバイスに配置します。 これを行うと、ダウンロードされたファイルは既定のパスに配置されるので、ファイル名を指定するだけで済みます。
検出ルールは他のパッケージ アクションの前に実行されるため、検出ルール スクリプトはアプリ インストール プロセス内の独自のステージに配置されます。 ここでは、古いアプリのインストールを検索し、見つかった場合はアンインストールしてからパッケージの残りの部分に進むような、カスタマイズされたアップグレード スクリプトを実行するなど、より複雑な操作を行うことができます。
検出ルールとアクション ロギング
アプリの配布では、デバイスに配布されたアプリごとにログ ファイルが作成されます。 ログには、各検出ルールおよびその他のパッケージ アクションのエントリが含まれます。 検出ルールが期待どおりに機能しない場合は、ログ ファイルを使用して理由を特定してください。 ログは各デバイスの次のフォルダに保存されます。
- C:\ProgramData\Ivanti\Ivanti Cloud Agent\Logs\SWDApps
各ログ ファイル名にはパッケージ GUID が含まれます。 [アプリ カタログ] でパッケージを編集すると、Web ブラウザーの URL でパッケージの GUID を確認できます。これは、関心のあるログ ファイルを見つけるのに役立ちます。
簡易ログは、[アプリの配布] > [配布ステータス] ページからリモートで表示できます。 表示したいデバイスとパッケージを見つけて、右側でアクション メニューの [ログを表示] オプションを選択します。