Win32 API 日本語リファレンス
ホームStorage.Packaging.Appx › IAppxBundleFactory

IAppxBundleFactory

COM
IIDbba65864-965f-4a5f-855f-f074bdbf3a7b継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

バンドルパッケージの読み取りと書き込みを行うオブジェクトを作成します。

解説(Remarks)

IAppxBundleFactory インターフェイスは、バンドルパッケージのリーダーとライターを作成するためのファクトリメソッドに加え、バンドル外部にあるマニフェストのリーダーを作成するメソッドを提供します。

IAppxBundleFactory インターフェイスは、Appx バンドル API の主要なエントリポイントです。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateBundleWriter(IStream* outputStream, ULONGLONG bundleVersion, IAppxBundleWriter** bundleWriter)

アプリパッケージを追加できる、書き込み専用のバンドルオブジェクトを作成します。

outputStreamIStream*inシリアル化されたパッケージデータを受け取る出力ストリームです。このストリームは、少なくとも Write メソッドをサポートしている必要があります。
bundleVersionULONGLONGin

バンドルのバージョン番号です。

0 を指定すると、CreateBundleWriter は現在のシステム時刻から導出した値をバンドルのバージョン番号として設定します。バージョン番号が自動的に生成され、呼び出すたびにより大きいバージョン番号が生成されるため、0 を渡すことをお勧めします。

たとえば、2013/12/23 3:45:00 AM UTC に bundleVersion を 0 に設定して CreateBundleWriter を呼び出した場合、バンドルのバージョン番号は 2013.1223.0345.0000 になります。

bundleWriterIAppxBundleWriter**outこのメソッドによって作成されたバンドルライターです。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。それ以外の場合は、次の表に示すものを含む(ただしこれらに限定されない)エラーコードを返します。

解説(Remarks)

バンドルに追加されたコンテンツは、Appx バンドルファイルとして outputStream にシリアル化して出力されます。

vtbl 4 HRESULT CreateBundleReader(IStream* inputStream, IAppxBundleReader** bundleReader)

IStream オブジェクトから内容を読み取る、読み取り専用のバンドルオブジェクトを作成します。

inputStreamIStream*in読み取り対象となるパッケージの内容を提供する入力ストリームです。このストリームは ReadSeekStat をサポートしている必要があります。これらのメソッドが失敗した場合、そのエラーコードがこのメソッドに渡され、そのまま返されることがあります。
bundleReaderIAppxBundleReader**outバンドルリーダーです。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。それ以外の場合は、次の表に示すものを含む(ただしこれらに限定されない)エラーコードを返します。

リターンコード 説明
APPX_E_INTERLEAVING_NOT_ALLOWED
inputStream が提供する ZIP ファイルが、インターリーブされた OPC パッケージです。
APPX_E_RELATIONSHIPS_NOT_ALLOWED
inputStream が提供する OPC パッケージに、OPC のパッケージ/パートのリレーションシップが含まれています。
APPX_E_MISSING_REQUIRED_FILE
inputStream が提供する OPC パッケージにマニフェストまたはブロックマップが存在しないか、CI カタログが存在するのに署名ファイルが存在しません。
APPX_E_INVALID_MANIFEST
バンドルマニフェストが無効です。
vtbl 5 HRESULT CreateBundleManifestReader(IStream* inputStream, IAppxBundleManifestReader** manifestReader)

AppxBundleManifest.xml を提供するスタンドアロンのストリームから、読み取り専用のバンドルマニフェストオブジェクトを作成します。

inputStreamIStream*in読み取り対象となるマニフェスト XML を提供する入力ストリームです。このストリームは ReadSeekStat をサポートしている必要があります。これらのメソッドが失敗した場合、そのエラーコードがこのメソッドに渡され、そのまま返されることがあります。
manifestReaderIAppxBundleManifestReader**outマニフェストリーダーです。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。それ以外の場合は、次の表に示すものを含む(ただしこれらに限定されない)エラーコードを返します。

リターンコード 説明
APPX_E_INVALID_MANIFEST
inputStream に、マニフェストとして構文的に有効な XML が含まれていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IAppxBundleFactory "{BBA65864-965F-4A5F-855F-F074BDBF3A7B}"
#usecom global IAppxBundleFactory IID_IAppxBundleFactory "{378E0446-5384-43B7-8877-E7DBDD883446}"
#comfunc global IAppxBundleFactory_CreateBundleWriter          3 sptr,int64,sptr
#comfunc global IAppxBundleFactory_CreateBundleReader          4 sptr,sptr
#comfunc global IAppxBundleFactory_CreateBundleManifestReader  5 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。