アプリの公開

公開可能なアプリの種類

.exeまたは.msiインストーラーにパッケージ化され、.NET (WPF、Windows フォーム、コンソール) やC++、WinUI、MFC、Qt、Flutter、OpenGL、Pascal、Java、Electronなど、一般にWin32アプリと呼ばれる従来のデスクトップ アプリも対象となっています。Microsoft Store でデスクトップ アプリを発行する | Microsoft Developer

公開手順

アプリの検証

公開前に、Windows アプリ認定キット (WACK) でアプリの問題を検証できます。

開発者アカウントの登録

Microsoft パートナー センターに、Microsoft アカウント (Microsoft account / MSA) でサインインします。

アカウントがロックされたときには、任意の電話番号でセキュリティコードをリクエストすることで解除できます。その番号はアカウントに関連づけられている必要はありません。アカウントがロックされている - Microsoft サポート

アカウントの種類

  • 個人 (Individual)
  • 会社 (Company)
アカウントの種類、場所、料金 - Windows apps | Microsoft Learn

会社のアカウントを選択するには「所在地の国または地域で、その会社が会社として認識されている必要」があります。開発者アカウントの種類 - パートナー センターの開発者アカウントの種類 - Windows apps | Microsoft Learn

パートナー プログラムに参加する

Microsoft Storeにアプリを提出するには、「WindowsとXboxプログラム」への参加が必要です。

AAD (Azure Active Directory / Azure AD) があるならば、開発者アカウントの作成後にパートナー センターの開発者アカウントにリンクした後のサインインにAADを使用できます。Azure Active Directoryとは - IT用語辞典 e-Words

AADの呼称は、Microsoft Entra IDに変更されています。Azure Active Directory の新しい名前 - Microsoft Entra | Microsoft Learn

DUNS番号とは、アメリカのダンアンドブラッドストリート (Dun & Bradstreet / D&B) が管理している、企業コードの付与管理システム、および同システムによって各企業に付与された企業コードの名称です。

発行者の表示名は利用者に表示されることになるため、会社アカウントならば組織の登録済みのビジネス名または会社名を用います。他のユーザーによって使用されている表示名は、許可されません。

加入プロセスが完了すると、アカウントに対して検証プロセスが開始されます。会社アカウントならば、会社への電話連絡が行われます。

アプリの配布

パッケージ化しない場合は証明機関 (Certificate Authority:CA) から発行された証明書が必要となるため、MSIXとしてパッケージ化するのが望ましいです。Microsoft Store を通じて Win32 アプリケーションを配布するには。 - Windows apps | Microsoft Learn

アプリの名前

アプリの名前を事前に登録できます。ただし3か月以内に使用されないと、登録は削除されます。MSIX アプリの名前を予約する - Windows apps | Microsoft Learn

パッケージ ファミリ名 (PFN) は、アプリの名前と組み合わされて"発行者の表示名.アプリの名前_英数字" の形式となるため、日本語名がある場合には登録時の名前は英字として、後から日本語名を追加するのが好ましいです。その場合の別名は、Microsoftパートナー センターの[製品管理] → [アプリ名の管理]で設定できます。

別名を用いるときは、それをアプリの製品名と一致させます。さもなくば「The product Display Name provided with the submission does not correspond to the installed on-device product name. Please update the titles so that they are at least similar to each other.」として[10.1.1.1 Inaccurate Representation]のポリシー違反とされます。

申請

  • 価格と提供の状況
  • プロパティ
  • 年齢区分
  • パッケージ
    • アプリをアップロードする。.msix、.msixbundle、.msixupload、.appx、.appxbundle、.appxupload、.xapのいずれかの形式で可能。
  • Microsoft Store 登録情報
  • 申請オプション
MSIX アプリのアプリ申請を作成する - Windows apps | Microsoft Learn アプリをMicrosoft Storeに提出してみる #C# - Qiita
パッケージ

ファイルに問題があると、次のようにエラーが通知されます。

  • 少なくとも 1 つのパッケージをアップロードする必要があります。市場グループを使用している場合は、各市場グループに少なくとも 1 つのパッケージが必要です。
  • 提出する前に、すべてのパッケージ検証エラーを修正する必要があります。
  • パッケージ ID 名が無効です: *** (期待値: ***)
  • パッケージ ファミリ名が無効です: *** (期待値: ***)
  • パッケージの発行元の名前が無効です: CN=*** (期待値: ***)

これらの不一致は、マニフェスト ファイルの[パッケージ化]の項目を、Microsoft パートナー センターの【ホーム → アプリとゲーム】で対象のアプリを選択し、【製品管理 → 製品 ID】の

  • パッケージ名 … パッケージ/ID/名前 (パッケージID名)
  • 公開者 … パッケージ/ID/発行元 (パッケージ発行元)

の値にします。アプリ ID の詳細の表示 - Windows apps | Microsoft Learn

同一バージョンのパッケージを再アップロードするならば、先に古いパッケージを削除しておきます。さもなくば、

  • すべての msix パッケージと .appx パッケージ (前回公開したものや現在アップロードされているものを含む) は、フル ネームによって一意に識別される必要があります。フル ネームが ***.***_0.1.0.0_Neutral_~ でコンテンツの異なる 2 つのパッケージが提供されました。続行するには、いずれかのパッケージを削除するか、現在のパッケージのバージョンを上げてください。
  • お客様の申請には、パッケージのコンテンツは異なっているが、提供されている他のパッケージ (以前に公開したものまたはこの申請の一部としてアップロードしたもの) と同じフル ネームを持つパッケージが含まれています。提供する各 .msix または .appx パッケージには、そのコンテンツだけが保持する一意のフル ネームを指定する必要があります。フル ネームが一意になるように、重複するパッケージを削除するか、公開するパッケージのバージョンを上げてください。重複しているパッケージのフル ネーム: ***.***_0.1.0.0_X64_

としてエラーとなります。そのとき削除は[保存]するまで確定されないため、保存してパッケージの申請ページを開き直してからアップロードします。

Microsoft Store 登録情報

アップロードしたパッケージでサポートするすべての言語に対して登録情報の入力を求められますが、情報を提供する言語は追加や削除をできます。ストア登録情報の言語 - MSIX アプリのストア登録情報を作成する - Windows apps | Microsoft Learn

  • 説明 … 製品の機能をユーザーに伝える
  • 製品の機能 … 製品の主要な機能に関する概要。箇条書きの一覧で表示。最大20
  • スクリーンショット … 1つ以上が必須。デスクトップ向けでは1366x768以上が推奨 スクリーンショット - MSIX アプリのアプリのスクリーンショット、画像、予告編 - Windows apps | Microsoft Learn
  • ロゴ画像 … 既定ではパッケージのロゴ画像が使用されるが、その代わりとなる別のロゴ画像を指定できる。9:16のポスター アート、1:1のボックス アート、1:1のアプリ タイル アイコンの3種がある
  • トレーラー (Trailer/予告編) … 製品の動作を確認できる短いビデオ
  • 補足フィールド 補足フィールド - MSIX アプリのストア登録情報の追加と編集 - Windows apps | Microsoft Learn
    • 短いタイトル (Short title) … 短い形式の製品名。Xbox Oneのインストール時、[実績]などで使用される
    • タイトルで並べ替え (Sort title) … 製品のタイトルに異なるアルファベット表記 (alphabetized) やスペル (spelled) があるときに指定する。検索時にユーザーが製品を見つけやすくする
    • ボイス タイトル (Voice title) … Kinectやヘッドセットの利用時に、Xbox Oneでの音声認識製品に使用される
    • 短い説明 (Short description) … Store登録情報の上部で使用される短くて覚えやすい説明。省略すると[説明]の最初の段落が使用される
  • 追加情報 MSIX アプリの追加情報を追加する - Windows apps | Microsoft Learn
    • 検索語句 … Storeでキーワードを使用して検索するときに、アプリを検出するのに用いられる。Storeでは表示されない
    • 著作権と商標の情報
    • 追加のライセンス条項 … 標準アプリケーション ライセンス条項 (Standard Application License Terms) を用いないときに指定する
    • 開発元 (Developed by) … 開発元をStoreのリストに含めるならば指定する
    • 発行者 (Published by) … 開発元の指定とは無関係に、アカウントに関連付けられている発行者名がリストに含められる
申請オプション

マニフェストで"runFullTrust"を宣言していると、「Package.appxmanifest ファイルで 1 つ以上の制限付き機能の使用が検出されました。以下に詳細情報を提供して、制限付き機能の使用の承認を要求する必要があります。できるだけ詳細な情報を含めてください。」「この機能が必要な理由は何ですか、 runFullTrust またこの機能は製品でどのように使用されますか?」として説明を求められます。これに対しては「これはWindowsフォームを用いるWin32アプリであるため、runFullTrustが必要です。Desktop Bridgeで使用されます。」のように返答することで申請を通過できます。

認定

申請すると、アプリの認定処理が開始されます。MSIX アプリのアプリ認定プロセス - Windows apps | Microsoft Learn

信頼性

デジタル署名、暗号化、サンドボックスを使用して、改ざんや承認されていないコピーからアプリを保護できるとされています。信頼とセキュリティ - Microsoft Store 経由でアプリを配布する利点 - Windows apps | Microsoft Learn

収益化

収益化、エンゲージメント、Microsoft Store サービス - UWP applications | Microsoft Learn

無料試用版 (free trials)

アプリの試用版の実装 - UWP applications | Microsoft Learn

アプリ内購入 (in-app purchases)

アプリ内購を実装する - アプリ内購入と試用版 - UWP applications | Microsoft Learn

サブスクリプション (subscription)

アドオンの場合。アプリのサブスクリプション アドオンの有効化 - UWP applications | Microsoft Learn

広告 (ads)

UWPアプリ用のMicrosoft Advertising SDKは、2020/06/01に停止しています。 Microsoft Advertising SDK を使用したアプリでの広告の表示 - UWP applications | Microsoft Learn Microsoft Advertising SDK - Visual Studio Marketplace

Microsoft Learnから検索