既存のアプリケーションをWindows Phone 7.5にアップグレードした後で、APP HUB(アップハブ)にアプリの更新を申請する際につまずいたポイントをご紹介します。
その1:NeutralResourcesLanguage属性は必須!
APP HUBから、更新する対象となるXAPファイルをアップロードした際に、右図のような「エントリ アセンブリに [NeutralResourcesLanguage] 属性が存在しません。」エラーが発生しました。どうやらXAPファイルにNeutralResourcesLanguage属性を付与する必要があるようです。方法は簡単でして、メインとなるプロジェクトの「AssemblyInfo.cs」に[assembly: NeutralResourcesLanguageAttribute("ja-JP")]と記述すればOKです(名前空間はSystem.Resources)。これで再度XAPファイルをアップロードすれば問題は解決…
…とはいきませんでした。今度は左図の「更新プログラムでサポートする言語の数は、更新前のアプリケーション インスタンスでサポートしていた数より少なくできません。」エラーが発生しました。要約すると、どうやら「前回はカルチャを英語で申請したんだから…今回も英語にしなさいよね!」ってことらしいです。ですので、先程の記述を[assembly: NeutralResourcesLanguageAttribute("en")]に変更して、再度XAPファイルをアップロードすることにより問題は解決しました。
なおこれは、アプリケーションをWP7.5用にアップグレードする際の問題です。このため、RC版のWPSDK7.1からプロジェクトを新規に作成した場合はあらかじめNeutralResourcesLanguage属性が定義されていますので、上記の問題には遭遇しないハズです。ただし、例によって「Windows Phone Silverlight/XNA アプリケーション」は少し詰めが甘く、なぜかNeutralResourcesLanguage属性が定義されていませんでした。このため、RC版のWPSDK7.1において作成したSL+XNAアプリケーションを申請される方は、上記のエラーにご注意ください。
その2:韓国とブラジルは面倒くさい!
どうせなら、日本だけでなく全世界にアプリケーションが公開されるように設定して申請を完了しようとしたところ、申請手順の最後に左図のような「DJCTQ評価と認定の少なくともどちらかがありません」エラーと「GRB評価と認定の少なくともどちらかがありません」エラーが発生しました。う~ん…パッと見だと何が悪いのかよくわかりません(汗。
APP HUBの申請手順において、左図のようにアプリを公開する国を選択する画面があるのですが、よくみると韓国(GRB)とブラジル(DJCTO)にのみアスタリスク(必須マーク)が付加されていました。しかも、何やらファイルをアップロードする欄が設けられています。つまり上記のエラーを要約すると、アプリケーションを韓国もしくはブラジルに公開する場合は、ファイル的な”何か”を指定する必要があるみたいです。その”何か”がなにかはよくわかりませんが…今回は韓国とブラジルへの公開は諦める(上記の画面からチェックを外す)ことにより妥協しました。そもそも「GRB」とか「DJCTO」って…なんだろう?(´・ω・`;)
残るは審査が通るか否か!
以上が、更新の申請時につまずいたポイントです。なお今回の更新では、色々と実験的な要素を盛り込んでいるため、一発で審査に通るかどうかは微妙です。
例えば、今回はSL+XNAという技術を利用してアプリケーションを再構築しており、SL+XNAが審査規約の4.2.5に抵触しないことを確認したいと思います。また今回は、意図的にアプリケーションを終了させる際にSilverlightからXNAのGame.Exitメソッドを利用しています。この方法は本来、審査規約の4.2.5に抵触する方法なのですが、仮にSL+XNAが上記の審査規約に抵触しないのであれば問題はないハズ…といったような実験を多数盛り込んでいます。
もし審査に落ちたとしても、それはそれで初めての経験ですので得るものは大きいのですが。…それでもやはり、願わくば一発で通ってほしいものです…|д ̄) …ということで「MetroGnome」の国内公開まで今しばらくお待ちいただけましたら幸いです!m(_ _;)m