自作のMarkdownエディタを、Tauriで作ったWindows版のexeをMSIXで包んでMicrosoft Storeへ初申請しました。落ちる前提で身構えていたのに、提出から丸2日で一発合格。指摘も差し戻しもゼロでした。 心配していたのは、強い権限の宣言と、Noにできない個人情報の設問と、検証ツールが返したFAILの3点。結果としてはどれも問題になりませんでした。 公開して分かったのは、同じソースコードでも配り方を変えるとアプリの性格が変わることと、公開そのものより後始末のほうが時間を食うことでした。
個人開発のWindowsアプリをMicrosoft Storeへ出すとき、MSIX経路を選ぶとコード署名証明書を買わずに済みます。Storeが認定通過後に再署名してくれるためです。そのかわりTauriには公式のMSIXバンドラが無いので、パッケージングは自前で用意することになります。今回はそこまでを7月末に済ませ、7/31の夜に申請、8/3の夕方に合格通知が届きました。
審査の判定は「アプリが実際に何をするか」ではなく「パッケージが何を宣言しているか」で機械的に決まります。通信をゼロにしていても、full trustのWin32アプリを内包している以上は個人情報の設問がYesに固定されますし、プライバシーポリシーの提出も必須になります。逆に言えば、宣言と実装が食い違っていなければ身構えるほどのことはありませんでした。
このアプリのWindows版は「インストーラ不要のポータブルexe」が売りでした。USBメモリに入れて持ち歩けて、設定ファイルもexeの隣に置くので丸ごと移動できます。Store版はそれができません。MSIXでインストールされたアプリはシステムが管理する場所に置かれるためです。
かわりにStore版にしかない良さもあります。パッケージをMicrosoftが署名し直すので初回起動時のSmartScreen警告が出ませんし、更新もストア経由で届きます。どちらが上という話ではなく、選べる入口が2つになっただけでした。
通ったら終わり、ではありませんでした。READMEは英語版・日本語版・アプリ内ダイアログの計4箇所に同じ本文を持っているので全部揃えて直し、ポートフォリオサイトのボタン文言は「Chrome ウェブストアで見る」で固定されていたのでURLから出し分ける形に直しました。2回目以降の提出を自動化するワークフローも、指定していたGitHub Actionsのリポジトリが改名されていて、そのままでは動かない状態でした。