WinUI3プロジェクトをビルドしたexeを直叩きで起動する

もくじ
https://tera1707.com/entry/2022/02/06/144447#WinUI3

やりたいこと

WinUI3のテンプレートを使ってビルドし、出来上がったexeをダブルクリックしても、アプリ起動しなかった。 exe単独で起動させたい。

前提

  • 2022/02/27時点で試したこと。
  • 2021/11/16 リリースのWindows App SDK 1.0安定版を使用。

やったこと

Windows App SDKをインストール

Windows App SDK をダウンロードする。 docs.microsoft.com

ダウンロードしたzipファイルを解凍してできた下記ファイルを実行する。

Microsoft.WindowsAppRuntime.Redist.1.0.0\WindowsAppSDK-Installer-x64\WindowsAppRuntimeInstall.exe

プロジェクトの作成

空のアプリ、パッケージ化(デスクトップのWinUI3)のテンプレートでWinUI3プロジェクトを作成する。

WindowsPackageTypeの設定

csprojに手書きで、下記を追加する。

<WindowsPackageType>None</WindowsPackageType>

実際に上記を書き込んだcsprojはこちら。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>App5</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <Platforms>x86;x64;arm64</Platforms>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <PublishProfile>win10-$(Platform).pubxml</PublishProfile>
    <UseWinUI>true</UseWinUI>
    <EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
    <WindowsPackageType>None</WindowsPackageType>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="Assets\SplashScreen.scale-200.png" />
    <Content Include="Assets\LockScreenLogo.scale-200.png" />
    <Content Include="Assets\Square150x150Logo.scale-200.png" />
    <Content Include="Assets\Square44x44Logo.scale-200.png" />
    <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
    <Content Include="Assets\StoreLogo.png" />
    <Content Include="Assets\Wide310x150Logo.scale-200.png" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.0" />
    <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22000.194" />
    <Manifest Include="$(ApplicationManifest)" />
  </ItemGroup>

  <!-- Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
       Tools extension to be activated for this project even if the Windows App SDK Nuget
       package has not yet been restored -->
  <ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnablePreviewMsixTooling)'=='true'">
    <ProjectCapability Include="Msix"/>
  </ItemGroup>
</Project>

参考 docs.microsoft.com

アプリ名(Unpackaged)を選択する。

VS2022の「起動ドロップダウン」で、Unpackagedのプロジェクト名を選択する。

ビルドしてできたexeを実行する

exeを実行すると、アプリが起動する。

参考

下記のMS公式を参考に作業した。

docs.microsoft.com

docs.microsoft.com