「Windows 8 Clinicの特別診療科目-相談科」にも相談して回答いただきましたが、やはり、leap.dllやleapCSharp.dllを使う方法はこの2つがWACKを通るようにしてもらうしかないようです。どこかにソース公開されていたらいのですが。
対策3:WebSocketでつなげる
ということで、まあこれなら大丈夫だろうと考えていた方法で対応します。ほんとはなんか負けた感じがして嫌なのですが。
その方法とは、Leap Motionが標準装備しているWeb ServiceにWebSocketでつないでJSONでもらった位置情報をLeapSharp.NET.4.0.dllのライブラリからの戻り値のように加工してしまう方法です。
この方法であれば、leap.dllもleapCSharp.dllもその先のVC++ 2010ラインタイムも関係なくなります。
予想通りWACKも無事通り、ストア申請の自動チェックも問題なくクリアしています。
ここから先は、審査担当者へのコメントに「本アプリの動作にはLeap Motionが必要です。また、127.0.0.1へのループバック通信を行います。」と記載して専用デバイスが必要であることを伝えています。
さて、ここでもう1点注意しなければならないのは、Package.appxmanifestでの指定です。機能タブで「インターネット(クライアント)」のチェックがあることを確認してください。デフォルトでチェックされているので意図的に外していなければ大丈夫です。
さて肝心のWebSocketでのやりとりですが次のようなコードで行っています。
Public Async Function Connection() As Task Try Client = New MessageWebSocket Client.Control.MessageType = SocketMessageType.Utf8 Await Client.ConnectAsync(New Uri("ws://127.0.0.1:6437/")) Me.MessageWriter = New DataWriter(Client.OutputStream) Catch ex As Exception End Try End Function
審査が完了したら改めてお知らせします。