🔨

WinUI 3 アプリを exe 直接起動する

2025/02/25に公開

はじめに

WinUI 3(Windows App SDK)デスクトップアプリ開発時に、exe ファイルをダブルクリックして起動する方法の整理です。

動作確認はこちらのプログラムで行っています。

挙動がよく分からない部分もあり、情報をお持ちの方はご教示いただけると幸いです。

基本

準備

新規プロジェクト作成時、「WinUI の Template Studio」テンプレートで作成します。

ウィザードの「機能」で「内蔵」を選択します。

<PropertyGroup>
  <OutputType>WinExe</OutputType>
  <TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
  <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
  <RootNamespace>TestResumeDownload</RootNamespace>
  <ApplicationIcon>Assets/WindowIcon.ico</ApplicationIcon>
  <ApplicationManifest>app.manifest</ApplicationManifest>
  <Platforms>x64</Platforms>
  <RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
  <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
  <ImplicitUsings>enable</ImplicitUsings>
  <Nullable>enable</Nullable>
  <UseWinUI>true</UseWinUI>
  <EnableMsixTooling>true</EnableMsixTooling>
  <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
</PropertyGroup>

なお、デフォルトで選択されている「MSIX パッケージ」は選択されたままにしておきます。

ターゲットフレームワーク(デフォルトだと .NET 7 のままです)や、プロジェクト内で使用している各種 NuGet パッケージは最新化します。

また、構成は Any CPU ではなく x64 にしています。

[デバッグ → デバッグの開始]メニューで Visual Studio から実行できることをまず確認します。

exe 実行

エクスプローラーでプロジェクトフォルダー配下の

bin\x64\(Debug または Release)\net9.0-windows10.0.xxxxx.0\win-x64\AppX

フォルダーを開き、exe ファイルをダブルクリックすると、作成した WinUI 3 アプリが起動します。

1 つ上の win-x64 フォルダーにも同内容の exe ファイルがあるので、そちらでも良いかもしれません。

挙動の違い

Visual Studio から実行した時と、exe 直接起動した時では、アプリの挙動が変わります。

具体的には、GetCurrentPackageFullName() の挙動が変わることは確認済です。

public Boolean IsMsix()
{
  UInt32 length = 0;
  WIN32_ERROR error = PInvoke.GetCurrentPackageFullName(ref length, null);
  return !error.HasFlag(WIN32_ERROR.APPMODEL_ERROR_NO_PACKAGE);
}

その他にも変わる挙動があるかもしれません。

開発環境外での動作

AppX フォルダーの内容を丸ごと Visual Studio がインストールされていない環境にコピーし、exe 起動してみたところ、起動しました。

しかし、先述の挙動の違いもありますし、後述のトラブルの可能性もありますので、exe 起動は開発時のみに留めて、配付は Microsoft Store 経由でのインストールにしたほうが良いのかなと個人的には思います。個人開発者でも Microsoft Store 配付は可能です。

トラブルシューティング

詳しい原因は分かっていませんが、基本通りやっても exe 起動しない場合があります。そのような場合は、以下を試してみると解決することがあります。

ショートカットから起動

AppX フォルダー内の exe ファイルから適当な場所にショートカットを作成し、ショートカットから起動すると起動したりします。

一度ショートカットから起動すると、次回以降は exe からも起動するようです。

不要な開発中アプリの削除

WinUI 3 アプリをいろいろ作っていると、Windows スタートメニューの[設定 → アプリ →インストールされているアプリ]の中によく分からない名前(生のパッケージ名)で登録されていることがあります。

その中に競合があると exe 起動しない可能性があるので、競合していそうなものはアンインストールしてみると良いかもしれません。

確認環境

項目 環境
OS Windows 11 Pro 23H2
Visual Studio 2022 17.13.1
.NET 9.0
Template Studio for WinUI 5.5
WinUIEx 2.5.1
Windows App SDK 1.6.250205002 (1.6.5)

参考リンク

Discussion