モグラ先生:あれれ?今日は地中から飛び出して、Windows Storeにアプリを公開するためのmsixbundle作成だよ!🐾
今回掘るテーマ
昔ながらのコマンドだけじゃなく、最新のWindows SDKとPowerShellを使って、msixbundleファイルを一気にまとめて作っちゃおう!
モグラ先生が楽しくガイドするから、一緒に掘って見つけた!感覚でやってみよう!⛏️
前提:必要なツールと環境準備🐾
- Windows 10/11 SDK(「Windows App Certification Kit」コンポーネントを含む)をインストール
Windows App Certification Kit を選べば、MakeAppx.exe と SignTool.exe が手に入るよ :contentReference[oaicite:0]{index=0}。 - PowerShell 5.1 以降(管理者権限で起動できること)
- 開発者モードを有効化(設定 → 更新とセキュリティ → for developers)
- AppxManifest.xml で指定した Publisher(CN=…) を確認
モグラ先生:「ここはしっかり揃えておかないと、あとで落とし穴が待ってるよ🪹」
1. Windows SDK をインストールしよう⛏️
- Microsoftの公式サイトから 最新の Windows SDK をダウンロード
https://developer.microsoft.com/windows/downloads/windows-sdk/ - インストーラーで Windows App Certification Kit を選択して進める
これで MakeAppx.exe と SignTool.exe がC:\Program Files (x86)\Windows Kits\10\App Certification Kit\
配下に入る :contentReference[oaicite:1]{index=1}。
2. バンドル用フォルダを用意しよう🐾
- プロジェクト直下にフォルダを作成(例:
C:\FlatBundle
) - そこに 各アーキテクチャ用の .msix ファイルを配置(例:
MyApp-x86.msix
、MyApp-x64.msix
、MyApp-ARM.msix
)
モグラ先生:「フォルダ内にはmsixファイルだけを入れるのがコツ!他のファイルが混ざるとエラーになるよ🐾」 :contentReference[oaicite:2]{index=2}
3. MakeAppx.exe でバンドルを作成⛏️
# フルバンドルを作成(ペイロードを埋め込む)
"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\MakeAppx.exe" bundle /d C:\FlatBundle /p C:\FlatBundle\MyApp.msixbundle
`
/d
:コンテンツディレクトリ/p
:出力バンドル名
小さな穴掘りポイント
モグラ先生:ペイロードを埋め込まない「フラットバンドル」を作りたいときは、
/fb
オプションを追加してみよう!🪹 ([GitHub][1])モグラ先生:「MakeAppx.exe は Windows SDK に含まれていて、アプリパッケージとバンドル作成に使えるよ」 ([Microsoft Learn][2])
4. 証明書を作成しよう🪹
AppxManifest.xml の Publisher と同じ Subject を持つ証明書が必要 ([Microsoft Learn][3])。
管理者権限の PowerShell で次を実行:
New-SelfSignedCertificate `
-Type Custom `
-KeyUsage DigitalSignature `
-CertStoreLocation "Cert:\CurrentUser\My" `
-TextExtension @(
"2.5.29.37={text}1.3.6.1.5.5.7.3.3", # Code Signing EKU
"2.5.29.19={text}" # End entity
) `
-Subject "CN=Contoso Software, O=Contoso Corporation, C=US" `
-FriendlyName "MyApp Signing Certificate"
小さな穴掘りポイント
モグラ先生:Subject は必ずマニフェストの Publisher と完全一致させてね!
5. 証明書を PFX にエクスポートしよう🐾
PowerShell で以下を実行:
# パスワードを作成
$password = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
# 証明書を PFX ファイルへエクスポート
Export-PfxCertificate `
-Cert "Cert:\CurrentUser\My\<証明書のThumbprint>" `
-FilePath "C:\FlatBundle\App_TemporaryKey.pfx" `
-Password $password
モグラ先生:
<証明書のThumbprint>
はGet-ChildItem Cert:\CurrentUser\My
で確認しよう!
6. SignTool.exe で msixbundle を署名しよう⛏️
タイムスタンプも付けて長期有効化! ([Microsoft Learn][4], [Microsoft Learn][5])
"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\SignTool.exe" sign `
/fd SHA256 `
/a `
/f C:\FlatBundle\App_TemporaryKey.pfx `
/p YourStrongPassword `
/tr http://timestamp.digicert.com `
/td SHA256 `
C:\FlatBundle\MyApp.msixbundle
/fd SHA256
:ハッシュアルゴリズム/a
:最適な証明書を自動選択/tr
:タイムスタンプサーバー URL/td SHA256
:タイムスタンプのハッシュ/f
/p
:PFX とパスワード指定
小さな穴掘りポイント
モグラ先生:タイムスタンプを入れると、証明書期限切れ後もインストールできるから、忘れず使おう!⏰
まとめ:これで公開準備完了!
- 必要なツール(Windows SDK/PowerShell)の確認
- フォルダに msix ファイルをまとめる
- MakeAppx.exe でバンドル作成
- PowerShell で証明書作成・PFX エクスポート
- SignTool.exe で署名&タイムスタンプ付与
モグラ先生:ここまで来れば、
MyApp.msixbundle
を Windows Store にポチッとアップロードできるよ🐾
さあ、公開に向けて掘り進めよう!
Happy digging, もぐTech編集部