このブログは「Windows Store Deployment with windeployqt」を翻訳したものです。
マイクロソフトは、ソフトウェアのダウンロードや更新を行う中心的な場所として、Windows 8 とともに Windows Store を導入しました。ソフトウェアを Microsoft Store に掲載するには、開発者はそのソフトウェアにデジタル署名を行う必要があります。マイクロソフトは、ソフトウェアが Microsoft Store に公開される前に、そのソフトウェアを確認します。AppxManifest.xmlは、Microsoft Store向けのパッケージ情報を記述します。makeappxツールはappxインストーラーを作成し、これはWindows SDKに含まれるsigntoolによって署名されます。Qt 6.11では、windeployqtにAppxManifest.xmlを作成するための追加のコマンドライン引数が追加されました。具体的には、--appxおよび--appx-certificateという引数です。
このブログ記事では、<QtInstallDir>\Examples\Qt-6.10.0\widgets\painting\affineにある「Affine Transformations」のサンプルを使用して、自己署名付きAppxインストーラーを作成します。このチュートリアルは、自己署名証明書の作成、必要なデプロイメントフォルダ構造の作成、windeployqtを使用してAppxManifest.xmlファイルを生成する手順、そして最後に自己署名付きAppxインストーラの作成というステップに分かれています。このチュートリアルを行うには、Windows SDKがインストールされている必要があります。
テストやデバッグを行うために、開発マシン上で自己署名証明書を作成しておくと便利です。これは、Windows SDKに含まれるmakecertおよびpvk2pfxツールを使用して行います。自己署名証明書は、次のように作成します。
makecert -r -pe -n "CN=example-company.org" -a sha256 -e 01/01/2030 -sky exchange -sv affine_TemporaryKey.pvk affine_TemporaryKey.cer
その後、以下の内容でプライベート情報交換(.pfx)ファイルを作成します
pvk2pfx -pvk affine_TemporaryKey.pvk -spc affine_TemporaryKey.cer -pfx affine_TemporaryKey.pfx
最後に、自己署名証明書を TrustedPeople グループに追加する必要があります。
certutil -addStore TrustedPeople affine_TemporaryKey.cer
それによって、その署名で署名されたパッケージをインストールできるようになります。
このチュートリアルのデプロイメント・プロジェクトは、3つのディレクトリで構成されています。
files: appxにバンドルされるファイルが含まれています
keys: 自己署名証明書が含まれています
package: appxファイルはこのフォルダ内に作成されます
「files」ディレクトリには、デプロイする実行ファイルと、アプリの説明やロゴなど、Appx Installer パッケージ用の追加ファイルが含まれる「Asset」フォルダが含まれています。affine.exe をこのフォルダ内にコピーすると、「files」フォルダの内容は次のようになります。
Assetsフォルダ内には、affine.exeのインストーラー説明用のDescription_affine.txt、アプリケーションのロゴ用としてLogo.pngおよびSmallLogo.png、ストアのロゴ用としてStoreLogo.pngがあります。これらのファイルはすべて、windeployqtによるAppxManifest.xmlの作成に必要です。Assetsフォルダ内のファイルは以下の通りです。
windeployqt を使用して初期の AppxManifest.xml を作成するには、次のコマンドを実行してください:
windeployqt.exe --appx --appx-certificate C:\deploymentTest\keys\affine_TemporaryKey.cer C:\deploymentTest\files\
ここで、--appx は windeployqt に Appx を生成するよう指示し、--appx-certificateはwindeployqt に、最終的な Appxパッケージの署名に使用する証明書を指定します。最後のパスは、.appxファイルにパッケージ化するファイルが含まれているフォルダーを指します。署名なしの Appxファイルを作成するには、以下を実行してください:
makeappx pack /d C:\deploymentTest\files\ /p C:\deploymentTest\package\package.appx
これにより、先に作成した AppxManifest.xml が解析され、C:\deploymentTest\files\フォルダ内のすべてのファイルが組み込まれます。最後に、.appxファイルに自己署名証明書で署名する必要があります。これを行うには、以下のコマンドを実行します。
signtool.exe sign /a /v /fd SHA256 /f C:\deploymentTest\keys\affine_TemporaryKey.pfx C:\deploymentTest\package\package.appx
実際のストアにデプロイするには、自己署名証明書を有効なコード署名証明書に置き換える必要があります。