IAppxBundleReader
COM公式ドキュメント
バンドルパッケージに対する読み取り専用のオブジェクトモデルを提供します。
解説(Remarks)
IAppxBundleFactory インターフェイスの CreateBundleReader メソッドを使用して、IAppxBundleReader オブジェクトを取得できます。
IAppxBundleReader を通じて、バンドルのマニフェスト、ブロックマップ、署名などのフットプリントファイルと、バンドルに含まれるアプリパッケージの両方を取得できます。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定した種類のフットプリントファイルをバンドルから取得します。
| fileType | APPX_BUNDLE_FOOTPRINT_FILE_TYPE | in | 取得するフットプリントファイルの種類。 |
| footprintFile | IAppxFile** | out | fileType のフットプリントファイルに対応するファイルオブジェクト。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。それ以外の場合は、次の表に示すものを含む (ただしこれらに限定されない) エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
| fileType パラメーターが APPX_BUNDLE_FOOTPRINT_FILE_TYPE 列挙型の有効な値ではありません。 | |
|
バンドルに指定された種類のフットプリントファイルが含まれていません。
GetFootprintFile は、APPX_BUNDLE_FOOTPRINT_FILE_TYPE_SIGNATURE 型に対してこのエラーを返すことがあります。 |
読み取り専用のブロックマップオブジェクトをバンドルから取得します。
| blockMapReader | IAppxBlockMapReader** | out | バンドル内のパッケージのブロックマップのオブジェクトモデル。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
読み取り専用のマニフェストオブジェクトをバンドルから取得します。
| manifestReader | IAppxBundleManifestReader** | out | バンドルマニフェストのオブジェクトモデル。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
バンドル内のすべてのペイロードパッケージの一覧を反復処理する列挙子を取得します。
| payloadPackages | IAppxFilesEnumerator** | out | バンドル内のすべてのペイロードパッケージを列挙する列挙子。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したファイル名を持つペイロードパッケージの appx ファイルオブジェクトを取得します。
| fileName | LPWSTR | in | 取得するペイロードファイルの名前。 |
| payloadPackage | IAppxFile** | out | fileName に対応するペイロードファイルオブジェクト。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。それ以外の場合は、次の表に示すものを含む (ただしこれらに限定されない) エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
|
指定されたファイル名を持つペイロードファイルが存在しません。 |
解説(Remarks)
ファイルオブジェクトのストリームを IAppxFactory::CreatePackageReader に渡すことで、その appx ファイルに対するパッケージリーダーオブジェクトを取得できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAppxBundleReader "{DD75B8C0-BA76-43B0-AE0F-68656A1DC5C8}"
#usecom global IAppxBundleReader IID_IAppxBundleReader "{}"
#comfunc global IAppxBundleReader_GetFootprintFile 3 int,sptr
#comfunc global IAppxBundleReader_GetBlockMap 4 sptr
#comfunc global IAppxBundleReader_GetManifest 5 sptr
#comfunc global IAppxBundleReader_GetPayloadPackages 6 sptr
#comfunc global IAppxBundleReader_GetPayloadPackage 7 wstr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。