Microsoft Store にアプリ申請してみた

PC 新調したばっかりなのにデスクトップがショートカットだらけになってきたんですよ!
Windows11 のスタートメニューが使いにくいので年に数回しか起動しないようなやつもとりあえずショートカットは残してるので…

フォルダにまとめたり、ランチャーアプリ幾つか試して見たのですがどれもイマイチしっくり来なかったので作ってみました。
WinUI3 で作ったためパッケージ化が必要なので「Zipでくれ!」的な事がやりにくい。
方法も無くはないようなのですが、せっかくなので Microsoft Store で公開することにしました。その時の忘備録です。

開発者アカウントを作る

まずは 開発者アカウントの開設手順 を見ながら Windows で普段使っている Microsoft アカウントでログインしてフォームを埋めていく。

日本の Individual な開発者、Publisher display name はニックネームとかでも良いらしい。
††漆黒の堕天使††」が良いかな! …でも後で後悔しそうだからローマ字の本名にしとく。

Contact details の Firstname と Lastname には漢字の本名が入っていたけどローマ字に変えておいた。Accept and continue を押すともう戻れないので良くチェックしよう。

次に支払い。税込み1847円。1回限りの支払いだしアプリの電子署名とかもやってくれる(と思う)ので高くはないかな? クレジットカードを登録してから Pay now and Register で完了。

6/26追記:

Free developer registration for Individual Developers  In the coming weeks, individual developers can publish apps without onboarding fees
登録料が要らなくなるみたい? 1ヶ月前に払ったのに… むっちゃタイミング悪かった。
 

アプリ名の予約

Microsoft Partner Center でアプリ名を予約できる。予約すると3ヶ月以内に公開しないといけないらしい。予約した時点で Package Family Name、Package SID、Store ID なども確定する。

価格は無料なら JPY の0円にすれば良いのかな?
申請ページのプライバシーポリシーの要不要を判断する「アプリ開発者契約」のページが Service Unavailable - DNS failure でさっぱりわからんな… たぶんここ
多分要るのかな? 一応作っておくか… GitHub の wiki ページで良いかな? 本文は生成AIさんに作ってもらった。お問合せ先はメアド公開すると Spam で溢れそうだったので GitHub Issues ページにしておいた。

 

提出用 MSIX パッケージを作る

VisualStudio の「アプリケーションをストアと関連付ける」で Package.appxmanifest の各種 ID が書き換わる。書き換えられた項目は GitHub とかで公開しても安全なのか Copilot とChatGPT さんに聞いたら

  • Microsoftに署名して貰う場合は大丈夫みたい? 自己証明書を使う場合は注意が必要だそうだ。
  • ちなみに GitHub の VS用 .gitignore には証明書(.pfx)も含まれている。

「アプリパッケージの作成」で MSIX パッケージ化される。
Windows アプリ認定キット (Windows App Cert kit) での検査も自動で行われる。

合格したけど「省略可能なテストの結果」に幾つか不合格があった。

  • バッジアイコンの色
    VSの資産ジェネレータはなんか怪しいので WinUI3 Gallely アプリを参考に元画像からスクリプトで各種サイズを生成したんだけど通知を使わないならバッジロゴは要らんかな? 削除した。
  • Windows10 S で正しく実行できない可能性
    Windows 10 S ってなんか聞いたことあるな… Process.Start 系が使えないのかな?それではランチャーにならないのでこれは無視。(10 S をサポート外にするとかしなくて良いのかな? それっぽい選択肢は見当たらず)

で、 .msixupload が作られるのかと思ったら無いな…
「空のアプリ、パッケージ化(デスクトップのWinUI3)」 (「空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化(デスクトップのWinUI3)」じゃないほう) だけど、単一プロジェクト MSIX を使用してアプリをパッケージ化する には色々書いてるけど本当かなぁ… MS のドキュメントは古かったり他のプラットフォームの情報と紛らわしかったりするからなぁ…

ChatGPTさんと相談した結果

  • 複数アーキテクチャ (x86, x64, ARM64) をまとめた時だけ .msixupload が作られる? x64 のみだと .msix しか作られない。(32bit 環境がなく動作確認が取れないので x64 だけにしてた)
  • 出力フォルダに _Test とか付いてるけどこの中の物を提出して良い。

みたい。たぶん。


msix を申請ページにアップロード

アップロードすると Device family availability に Windows 10 Team や Windows 10 Mobile、Windows 10 Mixed Reality もチェックが入った。

  • Windows 10 Team はビジネス向けのバージョン?
  • Windows 10 Mobile は昔のスマホ用 Windows Mobile とは別? モニタに繋ぐと PC として使えるらしい?
  • Windows 10 Mixed Reality って Windows Mixed Reality かな? 昔レノボのヘッドセット持ってたけど…

どれも実機が無いので確認できないけど Windows 10/11 Xbox のチェックが外れているので自動判別で使えると判断されたのかな? とりあえずそのままにしてみるか。
(公開されたページでは「次で使用可能:PC, モバイル, Surface Hub, HoloLens」になってた。TeamがSurface Hub、Mixed Reality は HoloLens ?)
PC以外はチェック外しておいたほうが良かったかも。今から外して良いのかな? → 外してみた(次で使用可能:PC になった)

パッケージを解析して対応している言語ごとにストア画像や説明を登録する画面になる。
画像に「イメージ字幕」ってのを追加できるけど、字幕が付く訳じゃなくてライブキャプション用みたい?

年齢区分は「暴力行為が含まれますか?」的なアンケートに答えたらゲームでよく見かける ESRB や PEGI などを含めその場でレーティングが決まる。


申請オプションのページに!が付いてた。

次の制限付き機能は、アプリで使用する前に承認が必要です。 runFullTrust
これが必要な理由は何ですか  runFullTrust 機能、および製品でどのように使用されますか?

「知らんがな! お前が作ったプロジェクトテンプレートだよ!」って書きそうになるのをグッと堪えて調べると WinUI3 アプリには必要説と不要説があってよくわからない…
あるいは DllImport("User32.dll") を使っているから?
試しに外してビルドすると以下のエラーが発生する。
DEP0700: アプリケーションの登録に失敗しました。[0x80080204] エラー 0x80080204: アプリ マニフェスト検証エラー: 行27、列6、理由: 指定された要素または属性または属性値には、"runFullTrust"機能が必要です。

って書いて申請したら通ったみたい。


リジェクト&再提出 

翌日結果が出たけどまさかのリジェクト。

検索キーワードに指定した「Windowsランチャーソフト」が他社商標に引っかかった。Windows 使っちゃダメらしい。
(フォームに埋め込まれている AI の提案から選んだと思ったけど手修正したかもしれない)

申請フォームの内容だけ修正して再提出。翌日には承認された。ゎ-ぃ!

 

ストアページの確認

公開されたページを見てみると 

  • 一番上の説明が見切れてる
    登録フォームの「補足フィールド - 短い説明」を埋めると良かったのかな?空欄にしてた。「推奨される長さ: 270 文字以下」とあるが目視で62文字で省略されている。別のところかなぁ…  → ここで合ってる
  • ストア用に 1080x1080 のロゴアップロードしたんだけど使われてないな…
    A/Bテスト用のページでは 正方形アイコンは 300x300 になってるな… 申請フォームでは 1080x1080 だったと思ったけど… → ストアには「1:1 のボックス アート(1080x1080)」ではなく「1:1 のアプリ タイル アイコン(300x300)」が表示されるようだ。

どちらも再提出しないと更新できないっぽい。バージョンアップすることがあれば更新しよう。(A/Bテストの画像は登録したので50%の確率でしょぼい画像が表示されますw)

ちなみにストアを Web で開いて下の方にある「アプリバッジの作成」でストアへのバナーを作れる。
GitHub の README.md に貼ってみた。ちょっとカッコイイ!


ストア版とローカルビルドの共存

ストア版をインストールしてから VisualStudio で実行するとストア版がアンインストールされる。
そんなこともあろうかと設定を保存しているフォルダにすぐアクセスできるようにしておいたけど、どうせなら別アプリとして実行したい。(アイコンも変えてランチャー2個ピン留めできるし…)
でもプロジェクトを2つ用意するのは管理が面倒なので嫌なのでスクリプトでストア用とローカル用を切り替えるようにしてみた。

#!/bin/sh

if [ "$1" == "local" ]; then
    sed -e 's#Name="FooBarBaz.*"#Name="FooBarBaz\.123456789\.Local"#' \
        -e 's#Publisher=".*"#Publisher="CN=LocalBuild"#' \
        -i ./path/to/Package.appxmanifest
    cd Icons; ./MakeAppIcon.sh DevLauncher.svg
elif [ "$1" == "store" ]; then
    sed -e 's#Name="FooBarBaz.*"#Name="FooBarBaz\.123456789"#' \
        -e 's#Publisher=".*"#Publisher="CN=123456789-1234-5678-1234-123456789"#' \
        -i ./path/to/Package.appxmanifest
    cd Icons; ./MakeAppIcon.sh
else
  echo "Usage: $0 [local|store]"
fi

本当は .csproj に <Target Name="CheckManifestForStoreBuild" > とか作って Local用ビルドなら <Error Condition= >で止めたかったんだけど「アプリパッケージの作成」は MSBuild 実行とは別の内部ワークフローらしくてうまくいかなかった。
でも Package.appxmanifest の Publisher を存在しないコモンネームに書き換えているので間違えてストアに提出してもストア側でエラーになるはず。

おまけでアイコンも別のものに変えているのでタスクバーに2個ピン留めできて良い。

App Launcher がストア版、Dev Launcher がローカルビルド。もちろん登録内容も変えられる。

 

その次へ

今回ストアのテストを兼ねて簡単なランチャーを公開してみましたが、もう一個 WinUI3 で作ったツールがあります。ゲーム開発者にはちょっと嬉しいかもしれない、一般の方の普段使いにもそこそこ使える、そんなツール。

今はちょくちょく使いながらバグ取りと調整を行っているので1年以内ぐらいを目処に公開予定です。乞うご期待!

 

 

追補:アップデートしてみた

前回申請時のフォームが表示されるので「このバージョンの最新情報」など変更が必要な部分を埋める。短い説明の追加とDevice family availabilityの変更も行ってみた。
ストア画像なども差し替えられるので「1:1 のアプリ タイル アイコン 300 x 300」を追加。
(A/Bテスト中ならテスト結果が不正確になると警告が出て中断するか続行するか選べる)

段階的なロールアウトと必須アップデートが指定できるけど、必須アップデートは Microsoft がなにかしてくれる訳じゃなくてアプリ内で判定するコードを仕込んでおかないとダメみたい?

ストアに表示されるアイコンは変わったけど、ダウンロード済みのライブラリに表示されるアイコンはまだ変だな… なんでちっちゃいねん? 150x150 や 71x71 も必要なんかな?

てか画像のスケールでもたつく時代じゃないからアイコン1個登録したら必要なサイズで表示してほしいよね…

 

 

前の記事 次の記事
No Comment
コメントを追加
comment url