たくさんの自由帳
Androidのお話
たくさんの自由帳
投稿日 : | 0 日前
文字数(だいたい) : 9159
目次
本題
ソースコード
本題2
環境
インストーラー vs zipファイル
Visual Studio で Windows App SDK を使う準備をする
Visual Studio 2022 で新しいプロジェクトを作る
MainWindow.xaml にワナがある (文字コード変更)
インストーラー / zipファイル を作る
参考
その前に exe で配信できる形式にする
zip で配布する
インストーラーで配布する
インストーラーを作ります
配布設定をする
インストーラーに配布するファイルを設定する
項目の公開と WinUI 3 の成果物を紐付ける
その他の値もセットする
インストーラーをつくる
スタートメニューに表示させる
アイコン変更
アプリ自体のアイコン
ショートカットのアイコン
おわりに
おわりに
おわりに2
どうもこんばんわ。
サブディスプレイが壊れてしまった(なんかしばらくしないと画面が付かなくなってしまった・・・)ため、仮想デスクトップを使ってみているのですが、
仮想デスクトップの切り替えショートカットキーが覚えられません・・・!、なんか色々組み合わせを確かめていると正解に当たったりする。
トラックパッドの場合はなんか直感的なジェスチャーがあってまぁいいかと感じなんですけどね。
うーんでも新しいXperia
欲しいしディスプレイ買う金ないです・・(てか高すぎ)
ちなみにSurface
をサブディスプレイとして使う方法もあるみたいですが、やっぱ遅延がなあ~~~
というわけで仮想デスクトップの切り替えショートカットキーを押してくれるアプリを作りました。
Windowsキー
長押しするとすりガラスなウィンドウが出てきて、トラックパッドのように線を描くと描いた向きに切り替わります(?)
で、今気付いたのですが、長押しだとWindowsキー
を使うショートカットキーが動かなくなってしまったので、Win+Ctrl
長押しで起動するように直しました。
スクリーンショット
が取れなくなったのが一番でかい・・・
https://github.com/takusan23/DesktopLine
https://github.com/takusan23/DesktopLine/releases
たまにWinUI 3
を使いたくなる未来の私のために、WinUI 3
のプロジェクトを作り、インストーラーを作るところまでを記録にしておこうと思います。
UWP
みたいなUI
( Windows 11 のUIコンポーネント ) が使えるのですが、これはUWP
ではない(むしろWPF
でUWP
のコンポーネントが使えるイメージ)ので、
Windowsのアプリストア
を使わずに、インストーラー
やzipファイル
にして普通に配布出来ます。
P/Invoke
も普通にできます(WPF
と同じだね)。WPF
より機能はまだ無いかもだけどWinUI 3
のデザインが(ここ最近のWindowsの中で)とてもいい(気がする)!!!
どんなコンポーネントが使えるのかというと、以下のアプリを入れて見てみてください。すりガラス(Acrylic / Mica)なんかが少し書くだけで?使えるようになっています。
なまえ | あたい |
---|---|
Windows | 10 Pro ( 11 の場合は部分的に違うかも? ) |
Visual Studio | 2022 Community |
.NET | 6 ( 7 でもいいはずです ) |
Windows App SDK | 1.2.220902.1-preview1 ( 最新版にしても問題ないはずです ) |
Visual Studio
と.NET 6
のインストールはやっておいてください。
インストーラーだと、スタートメニューとかデスクトップに自動でショートカット追加出来たり、あと.NET
が入ってない場合はインストールさせる機能がありますね。
zipファイルをばらまく場合は配布が楽ですね。インストーラーの機能がいらない場合はありだと思う。
ごめんなさい。。。覚えてないです。
Visual Studio Installer
で、.NET
のところのWindows アプリSDK
のところにチェックマークをいれてダウンロードすればいいのかなあ。。。
多分、これを選べばいいと思います。
で、保存先とかをお好みで変更したあと、一番下のソリューションとプロジェクトを同じディレクトリに配置する
のチェックを外しておきます。
こうしておくことで以下のようなファイル構成で行くことが出来ます。
Windows App SDK
( WinUI 3 ) アプリケーション )
インストーラーは新しいプロジェクトとしてソリューションに追加する必要があるのですが(多分・・?)、チェックを入れたままだと入れる場所がないんですよね、、
Windows App SDK
( WinUI 3 ) アプリケーション )
(zip で配信したい場合は逆にチェックマークを入れたほうがシンプルな構成になるかも??)
あとはこれで作って、実行ボタンを押せば起動できるはず
WinUI 3 Gallery
を見てもらえるとわかるのですが、最初からきれいなコンポーネントがあるんですよね。
こんな風に少し書くだけできれいなUIが作れます。
なんですけど、設定を変えないと日本語が文字化けしてしまいます・・・
修正方法は前にも書いたのですが、MainWindow.xaml
をBOM付き UTF-8
にすれば修正可能です。
名前をつけて保存を選んで
エンコード付きで保存を押します
UTF-8 シグネチャ付き
を選びます
これで治りました。やったー
配布する前まで頑張って作ってください。。
で、ここからは配布の話を残して置こうと思います
thx!!!!!
https://learn.microsoft.com/ja-jp/windows/apps/package-and-deploy/self-contained-deploy/deploy-self-contained-apps https://www.ipentec.com/document/csharp-winui3-create-self-contained-executables-application
どうやらMSは未だに デフォルトだとMSIX
に強いこだわりがあるらしく?exe
にできません。
dotnet publish
を使ったとしても、設定を変更しないと起動できないexe
が生成されてしまいます。。困った!
(Windows
だとアプリが起動できないログがイベントビューアー
というアプリに保存されます。)
これを治すためには、プロジェクトを押して、プロジェクト ファイルの編集
を押します。
そしたら、以下の二行を<PropertyGroup>
の中に足します。以下のように
また、これを記述したあとは、以下のUnpackaged
の方を実行する必要があります。
お手軽ですが、スタートメニューに自動で追加とかは出来ません。(インストーラーが必要です。)
ソリューションを右クリックして、発行を押します。
x64
でいいはず。
すべての設定を表示
を押して、構成を Release | x64
、配置モードをフレームワーク依存
、ファイルの公開オプションを開き、単一ファイルの作成
へチェックマークを入れるといいと思います。
自己完結だと.NET
がexe
の中に入るため、.NET
がインストールされてなくても起動できる一方、バイナリサイズがとても大きくなってしまいます。
単一ファイル
にチェックすることで、WPF
の時はexe一個
にまとめることが出来たのですが、WindowsAppSDK
ではなんか出来ないっぽいです。。。が一応チェックを入れています。
あとは発行を押します
終わったら開いてみましょう。どうですか?開けましたか!?!?!?
わーい 🎉🎉🎉
zip
ファイルで配布する場合は、exe
があるフォルダを全部圧縮して、適当なところで公開すればいいと思います。
WPF
版もあります : https://takusan.negitoro.dev/posts/windows_dot_net5_wpf_making_installer/
Visual Studio
に拡張機能を入れます。
https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects
ソリューションを右クリックしてプロジェクトを追加します。
Setup Project
を押します
名前をよしなに変えて done
こんな感じになるはず
ここの手順はzipファイル
で配布するのと同じですね。
WinUI 3
プロジェクトを右クリックして発行
を押します。
x64
にします(最近はほとんどx64
でいいはず)
すべての設定を表示
から、以下のように変更します。
Release | x64
フレームワーク依存
自己完結
だと.NET
が.exe
の中に入るため、バイナリサイズがデカくなります。が、.NET
を入れなくても起動できるメリットがあります。出来たら保存
してください。
参考:https://learn.microsoft.com/en-us/visualstudio/deployment/installer-projects-net-core?view=vs-2019
ソリューションエクスプローラーから、さっきつくったインストーラーを右クリックして、File System
を開きます。
Application Folder
を選び、プロジェクト出力
を押します。
項目の公開
、を選んでOK
します
ソリューションエクスプローラーから、さっきつくった項目の公開
を右クリックしてプロパティ
を押します。
プロパティ
の中のPublishProperties
のドロップダウンメニューを押すと、なんか3つくらいでてくると思うので、x64
と書いてある方を選びます。
ソリューションエクスプローラーで、インストーラープロジェクトをクリックし、下のプロパティから、
TargetPlatform
をx64
にします。
また、以下の値も変えておくと良いでしょう。
やる必要があるのか知りませんが、実行ボタンの隣りにあるドロップダウンメニュー、Release
とx64
にしておきました。
あとは、ソリューションエクスプローラーのインストーラープロジェクトを右クリックして、ビルド
を押すことで開始できます。
はい!!!
こんな感じにインストーラーが出来ているはず
UAC
たまによく気付かないんだけど私だけ?
ちゃんとアンインストールもできます。
File System
から、User's Programs Menu
を押し右クリックして新しいショートカットの作成
を押します。
Application Folder
から、項目の公開
を選びOK
します。
名前はプロジェクトから変えることが出来ます。
これでスタートメニューに出てくるはず
WPF
のときとほぼ同じですが・・・
GIMP
とかを使って128x128
のico
ファイルを作ってください。
WinUI 3
のプロジェクトを右クリックして、プロパティ
に進みます。
リソースを押して、まだ作っていない場合は作成する/開く
を押します
そしたらここに.ico
を投げ込みます。
また、ソリューションエクスプローラーから、先程追加したico
のプロパティを開き、ビルドアクション
をリソース
にします。
アプリのアイコンの設定は、さっきのWinUI 3
のプロパティのここです。
変わってるはず?
こっちを変更するのはまた別に C#
コードを書かないといけないそうです・・・
参考 : https://github.com/microsoft/WindowsAppSDK/issues/1914
インストーラープロジェクトのFile System
より、Application Folder
を右クリックして、ファイル
を押します。
あとはさっき追加したico
を探して追加します。
そのあと、User's Programs Menu
より先程作ったショートカットを選び、プロパティのIcon
にあるドロップダウンメニューをおし、Browse...
を押します。
でてきたら、Application Folder
にさっき追加したico
があると思うので、それを選べばOKです!
これで再度ビルドしてみて、実際にインストールするとこうなるはず!
どうでしょう????
ここまでのソースコードです。
zip
でもインストーラー
でも作れると思います。
https://github.com/takusan23/ExampleWinUI3Installer
と、、思ったんですけど.pubxm
が追跡対象外だった...
マウスのショートカットキー割り当て機能でよくない????ってインストーラー作ってるときに思いました。
Next.js
のApp Router
移行をそろそろやりたいなと思っています。