IAppxManifestPackageId
COM公式ドキュメント
パッケージ ID へのアクセスを提供します。
解説(Remarks)
パッケージ ID の情報は、パッケージマニフェスト内の Identity 要素を使用して指定します。
このオブジェクトは IAppxManifestReader::GetPackageId メソッドを使用して取得できます。
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
マニフェストで定義されているパッケージの名前を取得します。
| name | LPWSTR* | out | パッケージの名前。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
パッケージ名の情報は、パッケージマニフェスト内の Identity 要素の Name 属性を使用して指定します。
パッケージ名はエンドユーザーに表示することを意図したものではありません。システムはパッケージを一意に識別するためにこの名前を使用します。
呼び出し元は、name に割り当てられたメモリを CoTaskMemFree 関数を使用して解放する必要があります。
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
マニフェストで定義されているプロセッサアーキテクチャを取得します。(IAppxManifestPackageId.GetArchitecture)
| architecture | APPX_PACKAGE_ARCHITECTURE* | out | パッケージに指定されているアーキテクチャ。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
プロセッサアーキテクチャの情報は、パッケージマニフェスト内の Identity 要素の ProcessorArchitecture 属性を使用して指定します。
マニフェストにアーキテクチャが定義されていない場合、このメソッドは APPX_PACKAGE_ARCHITECTURE 列挙型の APPX_PACKAGE_ARCHITECTURE_NEUTRAL 値を返します。
マニフェストで定義されているパッケージ発行者の名前を取得します。
| publisher | LPWSTR* | out | パッケージの発行者。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
発行者名の情報は、パッケージマニフェスト内の Identity 要素の Publisher 属性を使用して指定します。
呼び出し元は、publisher に割り当てられたメモリを CoTaskMemFree 関数を使用して解放する必要があります。
マニフェストで定義されているパッケージのバージョンを取得します。
| packageVersion | ULONGLONG* | out | パッケージのバージョン。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
バージョンは、パッケージマニフェスト内の Identity 要素の Version 属性を使用して指定します。マニフェストでは 4 つの数値による表記で指定します。
major.minor.build.revision
このメソッドは、この表記を次のように UINT64 値へ変換します。
- 上位ワードにはメジャーバージョンが格納されます
- 次のワードにはマイナーバージョンが格納されます
- 次のワードにはビルド番号が格納されます
- 下位ワードにはリビジョンが格納されます
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
マニフェストで定義されているパッケージのリソース識別子を取得します。
| resourceId | LPWSTR* | out | パッケージのリソース識別子。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
リソース識別子は、パッケージマニフェスト内の Identity 要素の ResourceId 属性を使用して指定します。
マニフェストにリソース識別子が定義されていない場合、このメソッドは null 文字列を返します。
呼び出し元は、resourceId に割り当てられたメモリを CoTaskMemFree 関数を使用して解放する必要があります。
指定された発行者と、マニフェストで定義されている発行者を比較します。
| other | LPWSTR | in | 比較する発行者名。 |
| isSame | BOOL* | out | 指定された発行者がパッケージの発行者と一致する場合は TRUE、それ以外の場合は FALSE。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
発行者の情報は、パッケージマニフェスト内の Identity 要素の Publisher 属性を使用して指定します。
パッケージのフルネームを取得します。
| packageFullName | LPWSTR* | out | パッケージのフルネーム。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
パッケージのフルネームは大文字と小文字を区別しない文字列で、パッケージを一意に識別するために使用できます。
この文字列はパッケージ ID をシリアル化した形式であり、ファイルやディレクトリなどのオブジェクトの名前付けに適しています。
呼び出し元は、packageFullName に割り当てられたメモリを CoTaskMemFree 関数を使用して解放する必要があります。
例
例については、クイックスタート: アプリパッケージのマニフェスト情報を読み取る を参照してください。
パッケージファミリ名を取得します。
| packageFamilyName | LPWSTR* | out | パッケージファミリ名。 |
戻り値
型: HRESULT
メソッドが成功した場合は S_OK を返します。
解説(Remarks)
パッケージファミリ名は大文字と小文字を区別しない文字列で、同じ名前と発行者を持つパッケージのファミリを一意に識別するために使用できます。
この文字列はパッケージ ID をシリアル化した形式であり、ファイルやディレクトリなどのオブジェクトの名前付けに適しています。パッケージファミリ名にはパッケージのバージョン、アーキテクチャ、リソースに関する情報が含まれないため、バージョンに依存しない形でパッケージを参照する必要がある場合に便利です。
呼び出し元は、packageFamilyName のメモリを CoTaskMemFree 関数を使用して解放する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAppxManifestPackageId "{283CE2D7-7153-4A91-9649-7A0F7240945F}" #usecom global IAppxManifestPackageId IID_IAppxManifestPackageId "{}" #comfunc global IAppxManifestPackageId_GetName 3 var #comfunc global IAppxManifestPackageId_GetArchitecture 4 var #comfunc global IAppxManifestPackageId_GetPublisher 5 var #comfunc global IAppxManifestPackageId_GetVersion 6 var #comfunc global IAppxManifestPackageId_GetResourceId 7 var #comfunc global IAppxManifestPackageId_ComparePublisher 8 wstr,var #comfunc global IAppxManifestPackageId_GetPackageFullName 9 var #comfunc global IAppxManifestPackageId_GetPackageFamilyName 10 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IAppxManifestPackageId "{283CE2D7-7153-4A91-9649-7A0F7240945F}" #usecom global IAppxManifestPackageId IID_IAppxManifestPackageId "{}" #comfunc global IAppxManifestPackageId_GetName 3 sptr #comfunc global IAppxManifestPackageId_GetArchitecture 4 sptr #comfunc global IAppxManifestPackageId_GetPublisher 5 sptr #comfunc global IAppxManifestPackageId_GetVersion 6 sptr #comfunc global IAppxManifestPackageId_GetResourceId 7 sptr #comfunc global IAppxManifestPackageId_ComparePublisher 8 wstr,sptr #comfunc global IAppxManifestPackageId_GetPackageFullName 9 sptr #comfunc global IAppxManifestPackageId_GetPackageFamilyName 10 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。