Leap Motion SDKはWindows Runtimeでも動作するお行儀のいいdllだというのは以前お話したと思います。
実際、Windowsストアアプリとして作成してVisual Studioではなく普通に実行しても動作することまでは確認できていました。
今回、某アプリコンテストに応募しようとストア申請をしたのですが(その前段階のWACK実行時にエラーがでて分かっていたのですが)、セキュリティテストと技術的な適合性でエラーになってしまいました。
セキュリティテストは、Leap.dllやLeapCSharp.dll「アプリが利用可能な Windows 保護を使用しない場合、ユーザーはマルウェアの攻撃を受けやすくなります。」とのことで、マルウェアが実行される可能性が高いという事でリジェクトされています。
技術的な適合性についても同様で、Leap.dllやLeapCSharp.dllからmsvcp100.dllのAPIを呼び出しているとのことですが、あれ?呼び出していたらなんで動くんだろうとちょっと不思議に思っています。
WACKってっこんなところまでチェックするですね。感心するとともに打てる対策が思い浮かばないです。
対策1:Windowsストアアプリ向けのC++ Runtime PackageLeapを参照して技術的な適合性チェックを回避⇒NG
まずは2013版を参照してみましたが、msvcp100.dllへの呼び出し自体が変わらないためWACKのチェックは変わりませんでした。
対策2:Leap Motion SDKはアプリに含まずに環境変数でPathを通してみる⇒NG
アプリ配布時にありがちな方法ですが、問題になったDLLは配布先で用意してもらうとして純粋に自前アセンブリ(+ブリッジ用のLeapCSharp.NET.4.0)のみをパッケージにするために、Lead.dllやLeadCSharp.dllをプロジェクト構成から追い出して、[ビルド]-[クリーン]後に再ビルドしました。
そしてLeap Motion SDKのインストールパス(例:C:\bin\Leap\LeapSDK\lib\x86)にパスを通して実行してみました。
はい、そうですね、ストアアプリなので環境変数で指定してもアクセスできません。
結論
ストア申請で、申請担当者のところまでたどり着ければ色々調整が効くような気がするのですが、その前段階の自動チェック部分ではねられてしまうため、機械的にじぇくとされてしまいどうにもなりません。
これは「Windows 8 Clinicの特別診療科目-相談科」に相談した方がよさそうですね。
Gitあたりでソース提供してアプリ配布というのが現実的なんですかねぇ。