WInUI3関連記事
https://tera1707.com/entry/2022/02/06/144447#WinUI3
やりたいこと
WinUI3で作成したexe(msixでパッケージされたものでインストールしたもの)を、他のプログラムから呼べるようにしたい。
ざっとみたところ、「Alias」
というのを付けると、どこからでも呼べるようになるっぽい。
やり方調べたい。
やり方
Package.appxmanifest
に、下記を書く。
<Package>
の先頭に、下記を書く。xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces
に、uap3
とdesktop
を追加する。
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" IgnorableNamespaces="uap rescap uap3 desktop">
次に、<Application>
の中に、下記を追記する。
<Extensions> <uap3:Extension Category="windows.appExecutionAlias" Executable="WinUI3PJTest\WinUI3PJTest.exe" ★ここが、動いてほしいexeのパス EntryPoint="Windows.FullTrustApplication">★これはおまじない <uap3:AppExecutionAlias> <desktop:ExecutionAlias Alias="WinUI3PJTestAlias.exe" /> </uap3:AppExecutionAlias> ★ここがAlias。".exe"で終わらないといけない </uap3:Extension> </Extensions>
上記を追記したPackage.appxmanifest
全体は下記の通り。
<?xml version="1.0" encoding="utf-8"?> <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" IgnorableNamespaces="uap rescap uap3 desktop"> <Identity Name="06bf9954-f1d3-4269-b9ff-078b5e4fae1d" Publisher="CN=masa" Version="1.0.0.0" /> <Properties> <DisplayName>WinUI3PJTest (Package)</DisplayName> <PublisherDisplayName>masa</PublisherDisplayName> <Logo>Images\StoreLogo.png</Logo> </Properties> <Dependencies> <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" /> <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" /> </Dependencies> <Resources> <Resource Language="x-generate"/> </Resources> <Applications> <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> <uap:VisualElements DisplayName="WinUI3PJTest (Package)" Description="WinUI3PJTest (Package)" BackgroundColor="transparent" Square150x150Logo="Images\Square150x150Logo.png" Square44x44Logo="Images\Square44x44Logo.png"> <uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png" /> <uap:SplashScreen Image="Images\SplashScreen.png" /> </uap:VisualElements> <Extensions> <uap3:Extension Category="windows.appExecutionAlias" Executable="WinUI3PJTest\WinUI3PJTest.exe" EntryPoint="Windows.FullTrustApplication"> <uap3:AppExecutionAlias> <desktop:ExecutionAlias Alias="WinUI3PJTestAlias.exe" /> </uap3:AppExecutionAlias> </uap3:Extension> </Extensions> </Application> </Applications> <Capabilities> <rescap:Capability Name="runFullTrust" /> </Capabilities> </Package>
こうしておくと
別のプログラムから、
Process.Start("WinUI3PJTestAlias.exe");
等で、このプログラム("WinUI3PJTest\WinUI3PJTest.exe")を呼べるようになる。
参考
公式情報。
参考書
WinUI3
WinUI3でアプリを作ろうと思ったときのとっかかりによかった。
msdocsに書いてある情報を、体系的に、順番に読みたいな、というときによいかも。(ただし英語)
この本で分からなかった、かゆいところに手が届かなかった部分を私は記事にしてる感じ。
C#①
表紙に書いてある通り、教科書として最適。
これからC#を勉強したいけど、ネットだけで勉強するのは効率が悪いから体系的に学べる本が欲しいときや、
ちょっとC#を勉強してコード書けるようになったけど、もう少し広く深く知りたいなというときによいと思う。
私は仕事で触れるコードを軸に、基本ネットで断片的にC#を学んだので、その知識の隙間を埋めて枝葉を広げるためにとても分かりやすかった。
C#②
C#の文法的に色々できるのは分かったが、いざ実装するときに、わかったことを使ってどう実装すればいいのか?と悩んだときに指針になりそうな本。
「プロパティ等の名前の付け方、どうすればいい?」「情報をクラス外部に見せるときに、プロパティにすべき?メソッドにすべき?」「異常だと判定したいとき、どんなときにどんな例外をスローすべき?」などなど、勉強になる部分が山ほどあった。
私のように「コードは書くけどこれであってるのか自信がない、レビューで指摘されるのが嫌だ、実装時の(心の)よりどころが欲しい」という人に最適。