2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VisualStudio2022でWinUI3アプリをMicrosoftストアに公開できるようにMSIXパッケージ化する

Posted at

当たり前すぎるのかどうやったらいいのかわからなかった

アプリをMicrosoftストアに公開したい!と思っており、コツコツ作ってきました。
満足できてない部分もたくさんあるけど、そろそろ一度公開したい!
Microsoftに個人開発者として登録もしたゾ!
やるぜ!MSIXパッケージ化!!

でもどうやって?

いきなり結論:パッケージの部分で右クリックして、公開

ソリューションエクスプローラーでパッケージのところで右クリック、公開 でパッケージにできます。(2025/02/14現在)

ただその前にビルトが必要で、もしかすると発行も必要かも?しれません
(発行が必要かはちょっとよくわかってません。発行はexeを作る処理のようなので、要らないんじゃないか?と思ってます)

image.png

環境

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 デスクトップ アプリを変更します。 この変更には、次の図に示すように、個別のパッケージ 化プロジェクトを削除する必要があります。

single-project-overview[1].png
https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/images/single-project-overview.png

ほうー?
できたパッケージ消しちゃうんだ??
ほうー・・・?


VisualStudio2022で、C#、WinUI3で作ろうとした時に、新規作成で出てくるメニューがこちら。

image.png

わたしはこの中から3番目の、"空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化(デスクトップのWinUI3)"というものを選んで、これまで開発してきていました。
Microsoftストアに提出する時は、MSIXパッケージ!ということはなんとなく知っていたので、その文言が入っている3番目を選びました。

するとできる形は、ソリューションエクスプローラーで見ると下記のような感じに。

image.png

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というのが勝手に出たり消えたりしてて、どうもガンっぽいです
image.png

まとめ

  • WinUI3のパッケージ化は、"空のアプリ、パッケージ化"でなくても、"空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化(デスクトップのWinUI3)"でもできるよ!
  • Microsoftのドキュメントでも、なんか違うことだってあるよ!
  • アセンブリのサイズの最適化云々は、nuget周りらしいので、最新化したら直るかもしれないよ!
  • 当たり前すぎるのか、github actionでパッケージ化するのが主流なのか、あまりそれらしい記事が見つからなかったので、そっと残しておきます(無駄に苦労したし)
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?