先の記事で作成したテストプログラムをWindows アプリ認定キットでテストしてみたいと思います。
Windows App Certification Kitをインストールします。
Windows Software Development Kit (SDK) for Windows 8
http://msdn.microsoft.com/en-us/windows/desktop/hh852363
デフォルトのインストールパスでは下記のフォルダに入っていますので実行します。
“C:\Program Files (x86)\Windows Kits\8.0\App Certification Kit\appcertui.exe”
Validate Windows Store Appを選択します。
すでにレイアウトされているアプリの中からチェックするアプリを選択して実行するだけです。
先の記事で作成したテストプログラムを指定して実行してみます。数回アプリが起動されますが、そのまま放置しておきます。
最後にレポートのXMLを保存する場所を指定するダイアログが開くので、保存します。
以下のようなレポートが出力されます。
ご存じだとは思いますが、Windows Store App(Metro/Modern UIアプリケーション)はDesktop Appと比較して使用できるAPIに制限があります。ローカルの開発では特に制限なくAPIが使用できてしまうので、うっかり混在させてしまうミスが発生しやすいです。
たとえは先のサンプルで最後に追加したswprintf相当の関数のStringCbPrintfWはStoreAppで使用できますが、sprintf相当のStringCbPrintfAは使用できないようです。アプリを実際にStoreに申請する場合はこれが妨げになると思われます。
手短にStoreApp対応のAPIかチェックする方法ですが、VisualStudio上で、チェックしたい関数を右クリックし、Go To Declarationを選択し、関数が定義されているインクルードファイルを参照します。下記のようなpragmaで関数の定義が囲われているはずです。
#pragma region Application Family もしくは #pragma region Desktop Family . . . #pragma endregion
このpragmaがApplication FamilyならばStore App/Desktop Appで使用可能で、Desktop FamilyならばStore Appでは使用できません。