Microsoft Store 向け MSIX アプリの多言語対応方法まとめ【2026年1月版】
Microsoft Store 向け MSIX アプリの多言語対応方法まとめ
この記事では、WPF アプリ + MSIX プロジェクト構成において、
Microsoft Store に「パッケージでサポートされている言語」を正しく認識させるための手順をまとめます。
対象読者は以下のような方です。(1,000人に1人ぐらいかも知れませんが)
- WPF アプリを MSIX で配布している
- Store の「パッケージでサポートされている言語」が増えない
- PRIResource / Resources.resw / UWP ツール周りでハマった
- 昔多言語対応したけどやり方を忘れてしまった
結論(先に要点)
- Store の多言語判定は MSIX パッケージ側のみを見る
- MSIX プロジェクトに Resources.resw が存在することが必須
- 中身は空でも OK
- WPF 本体の Resources.resw を MSIX 側にリンクコピーする構成が実用的
- 「ユニバーサル Windows プラットフォーム ツール」が無いと PRI が生成されない
成功するとこの設定ができるようになります。

基本構成
今回の構成は以下です。
- メインプロジェクト:WPF アプリ
- 配布用プロジェクト:MSIX(.wapproj)
Solution ├─ MyApp (WPF) │ └─ Strings │ ├─ ja-JP │ │ └─ Resources.resw │ ├─ en-US │ │ └─ Resources.resw │ └─ ... └─ MyApp.Msix (MSIX)
なぜ MSIX 側に Resources.resw が必要なのか
Microsoft Store は以下のように言語対応を判定します。
- ❌ WPF プロジェクトの Resources.resw → 見ない
- ✅ MSIX パッケージに含まれる PRI → これだけを見る
つまり、
MSIX プロジェクトに Resources.resw(= PRI の元)が存在しないと、
Store は多言語対応していないと判断する
という仕様です。
実践:WPF 側の Resources.resw を MSIX に取り込む
私の場合、WPF 本体の Strings フォルダーをそのまま使い回す構成にしています。
MSIX プロジェクトファイル(.wapproj)に追加する設定
<!-- Strings フォルダーを MSIX パッケージに含める --> <ItemGroup> <PRIResource Include="..\MyApp\Strings\**\*.resw"> <Link>Strings\%(RecursiveDir)%(Filename)%(Extension)</Link> </PRIResource> </ItemGroup>
この設定の意味
IncludeLink- MSIX 側では
Strings\xx-XX\Resources.reswとして見せる
- MSIX 側では
- コピーではなく リンク扱い
- 二重管理を避けられる
Resources.resw の中身は空でもいい?
はい、空でも問題ありません。
Store の判定に必要なのは:
- 言語フォルダーの存在
- PRI としてビルドされること
そのため、 - 実体の翻訳は WPF 側で使用 - Store 用には「存在」だけあれば OK
という割り切りが可能です。
「PRIResource」が UI に出ない問題
Visual Studio 2026 環境では、
- ファイルのプロパティに PRIResource が表示されない
というケースが多くあります。
解決策
.wapprojに 直接 PRIResource を定義する- UI に出なくても MSBuild は正しく処理する
必須ツール:「ユニバーサル Windows プラットフォーム ツール」
MSIX の多言語対応には、以下が必要です。
makepri.exe- PRI 生成用ビルドタスク
これらは 「ユニバーサル Windows プラットフォーム ツール」に含まれます。
Visual Studio Installer で確認

これが無いと:
- language-ja.msix
- language-en.msix
などの 言語別 MSIX が生成されません。私はこれに1日ハマりました。
正しくビルドできた状態
MSIX をビルドすると、以下のような構成になります。
MyApp.Msix_1.0.0_x64.msix MyApp.Msix_1.0.0_language-ja.msix MyApp.Msix_1.0.0_language-en.msix MyApp.Msix_1.0.0_language-fr.msix ...
各 language-xx.msix の中には:
resources.pri
が含まれています。
Contributionsというアプリを多言語化したときの例を示します。
Contributions.Msix_1.1.0.0_x64_bundle.msixuploadがあるので拡張子をzipにして展開します。

Contributions.Msix_1.1.0.0_x64.appxsymの拡張子をzipにして展開します。

Contributions.Msix_1.1.0.0_language-en.msixがある時点でOKですが確認のためzipにして展開します。

ここにresources.priがあります。

👉 これが Store が多言語対応を認識する言語ファイルです。
よくある勘違い
- ❌ 本体 MSIX に resources.pri が無い → 問題なし
- ❌ language-xx.msix を個別に提出 → 不要
- ❌ Store 側の言語設定だけ追加 → 不十分
まとめ
- Store の多言語対応は MSIX 側がすべて
- Resources.resw は MSIX に存在する必要がある
- WPF 側の resw を リンクで流用するのが現実解
- UWP ツール必須
WPF + MSIX + Store の組み合わせは情報が少なく、
かなりハマりやすいポイントなので、同じ罠にハマる人の助けになれば幸いです。
おまけ
私の場合人口の多い言語に対応していればいいかなと思い、以下の言語対応をしています。
宣伝
GitHubのContoributionを簡単にシェアできるアプリを作りました。
この記事が役に立ったという方はぜひお試しください。
apps.microsoft.com

Windows11標準のエクスプローラーよりも高速に動くエクスプローラーを作りました。あのFilesよりも高速です。
apps.microsoft.com
