当たり前すぎるのかどうやったらいいのかわからなかった
アプリをMicrosoftストアに公開したい!と思っており、コツコツ作ってきました。
満足できてない部分もたくさんあるけど、そろそろ一度公開したい!
Microsoftに個人開発者として登録もしたゾ!
やるぜ!MSIXパッケージ化!!
でもどうやって?
いきなり結論:パッケージの部分で右クリックして、公開
ソリューションエクスプローラーでパッケージのところで右クリック、公開 でパッケージにできます。(2025/02/14現在)
ただその前にビルトが必要で、もしかすると発行も必要かも?しれません
(発行が必要かはちょっとよくわかってません。発行はexeを作る処理のようなので、要らないんじゃないか?と思ってます)
環境
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.13.0
2025/02/14 現在
わたしの迷いポイント1:Microsoftのドキュメントに騙される
以前、Azureの設定で、結局Microsoftのドキュメントが一番良かったので、圧倒的信頼をしていたMicrosoftのドキュメント。
たぶん該当するのはこちら。
2023/12/29と、ちょっと古いかな?とも思いましたが、あまり変わってないのだろう、と進めていきます。
単一プロジェクト MSIX は、個別のパッケージ プロジェクトを必要とせずに、パッケージ WinUI 3 デスクトップ アプリを構築できるようにする機能です。 WinUI 3 アプリは、ユーザー インターフェイス (UI) に WinUI 3 フレームワークを使用し、Windows App SDK を使用するアプリです。
そうそう!合ってる合ってる!
別のパッケージ 化プロジェクトを使用する既存の WinUI 3 デスクトップ アプリを変更します。 この変更には、次の図に示すように、個別のパッケージ 化プロジェクトを削除する必要があります。
https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/images/single-project-overview.png
ほうー?
できたパッケージ消しちゃうんだ??
ほうー・・・?
VisualStudio2022で、C#、WinUI3で作ろうとした時に、新規作成で出てくるメニューがこちら。
わたしはこの中から3番目の、"空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化(デスクトップのWinUI3)"というものを選んで、これまで開発してきていました。
Microsoftストアに提出する時は、MSIXパッケージ!ということはなんとなく知っていたので、その文言が入っている3番目を選びました。
するとできる形は、ソリューションエクスプローラーで見ると下記のような感じに。
C# というところと、Packageというものの2つが自動的に作られます。
開発過程では、主にC#の方のMainWindow.xamlやMainWindow.xaml.csを編集してきました。
でもビルドして▶実行する時はPackageの方を実行していました。
そのパッケージを削除・・・?
確かにこっちはあまり編集してないし、いらないのかな?(じゃなんで作られるんだ?)
でもMicrosoftさんが言うんだし、いいんだろう!
・・・
やってみた! ⇒ うまくいかない!
いろんなエラーが出続けて、ビルドも通らず実行もできない事態に!
バックアップも取らずに削除してしまったので、復旧するのもちょっとめんどくさかったです。(いまどきファイル管理ェ-)
その時出たエラーは、
- アセンブリのサイズの最適化は、選択された公開構成に対してはサポートされていません。自己完結型のアプリを公開していることをご確認ください。
⇒ トリミングができない?まぁトリミングしないにしてみるか - アセンブリのパフォーマンスを最適化できません: 有効なランタイム パッケージが見つかりませんでした。publishreadytorun プロパティを false に設定するか、公開時に、サポートされているランタイム識別子を使用してください。.net 6 以降を対象とする場合は、必ず publishreadytorun プロパティを true に設定してパッケージを復元してください。
⇒ .NET8なんですが、一体わたしはどうすれば・・・
⇒ とりあえず.NET8SDKや.NET9SDKを入れてみましたがダメでした。
この辺で、記事も古かったし、このやり方は間違っているんだろう、と諦めました。
ここまででたぶん2~3日は遊んでました。
わたしの迷いポイント2:アセンブリのサイズの最適化は、選択された公開構成に対してはサポートされていません。自己完結型のアプリを公開していることをご確認ください。
これがよくわかりません(今でもよくわかっていません)
「アンタさっきまで元気に動いてたやん!?」
パッケージにできた直前でも同じエラーが出て、
「はぁー、またキミかー・・・」
とウンザリ思いました。
調べてみると、どうもnugetパッケージ周りらしく?、nugetパッケージを更新したらいいとかなんとか。
試しにnugetの画面で"最新の情報に更新"を押して、パッケージをリビルドしてみると通りました。
なんかこの辺よくわからないのですが、通ったので、たぶんこれかな?と思ってます。
下の画像の一番上のILLink.Tasksというのが勝手に出たり消えたりしてて、どうもガンっぽいです
まとめ
- WinUI3のパッケージ化は、"空のアプリ、パッケージ化"でなくても、"空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化(デスクトップのWinUI3)"でもできるよ!
- Microsoftのドキュメントでも、なんか違うことだってあるよ!
- アセンブリのサイズの最適化云々は、nuget周りらしいので、最新化したら直るかもしれないよ!
- 当たり前すぎるのか、github actionでパッケージ化するのが主流なのか、あまりそれらしい記事が見つからなかったので、そっと残しておきます(無駄に苦労したし)