WinUI3アプリは3つの実装から選択できます。
# | アプリ種別 | パッケージ | 実行環境 |
---|---|---|---|
1 | UWP | packaged | サンドボックス内 |
2 | Desktop | packaged | サンドボックス内 |
3 | Desktop | unpackaged | サンドボックス外 |
#1と#2はMicrosoft Storeから提供する方式になり、Storeにアプリをアップロードして、ユーザーはアプリを自動更新できます。
#3は要するに従来のWin32アプリや.NET Frameworkアプリと同じで、自分でインストーラーなどを製作して、オフラインでインストールする形になります。
パッケージ・アプリ
パッケージアプリはexeを直接実行することができません。基本的にはアプリをStoreからインストールします。Storeから配布するにはアプリを署名しないといけません。
署名をしない場合、オレオレ署名を付けることで、ローカルからインストールできます。ただしWindowsの開発者モードを有効にしなければなりません。またmsix単体をダブルクリックしても依存ファイルは自動的にインストールされず、Publishが生成するファイル群の中にあるinstall.ps1を実行してもらうことになります。
アンパッケージ・アプリ
#3のアンパッケージアプリでは、署名が不要で、exeを直接実行でき、従来と同じように配布できます。Storeからの自動アップデートは利用できません。クローズドなアプリを作っている人はこちらのほうが都合がよいでしょう。
Windows App SDKがVSで提供するテンプレートは#1と#2だけです(SDK 1.0現在)。#3は、一旦#2を作ってから、ちょっと細工をして#3にするという流れになります。
具体的な方法はこちらのPentaさんの記事が詳しいです。要約すると、プロジェクトファイルのPropertyGroupに<WindowsPackageType>None</WindowsPackageType>
を追加して、Package.appxmanifest
ファイルを削除する(またはパッケージ化のプロジェクトを削除する)という流れになります。
ランタイムのインストールを忘れないようにしてください。通常はSDKをインストールするとランタイムもついてくるのが常識ですが、unpackagedでは別途ランタイムをインストールしないと、デバッグもできません。
アプリがアンパッケージになると、従来通りReleaseやDebugのフォルダに実行ファイルが展開されます。exeを実行するとこれまでどおり普通に起動します。
なおSDK 1.1からはXCopyデプロイメントが可能になるそうです。これでインストーラーを作らなくても済むようになるのでしょうか。