f1f1be778b
AppWindow.SetIcon(executablePath) was passing the .exe's own path, but that API requires an actual .ico file path — passing an .exe silently does nothing, so the window fell back to a generic placeholder icon in the taskbar and Alt+Tab (the custom title bar icon fixed earlier is a separate, XAML-drawn Image and was unaffected). Embed branding/AmiReel.ico as a resource, extract it once to %LOCALAPPDATA%\AmiReel\app-icon.ico on startup, and call AppWindow.SetIcon() with that file path instead. Verified via WM_GETICON against the running window's HWND that both the big and small icons now resolve to the real AmiReel logo. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
101 lines
5.3 KiB
XML
101 lines
5.3 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>WinExe</OutputType>
|
|
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
|
|
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
|
|
<RootNamespace>AmiReel</RootNamespace>
|
|
<AssemblyName>AmiReel</AssemblyName>
|
|
<ApplicationIcon>branding\AmiReel.ico</ApplicationIcon>
|
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
|
<Platforms>x86;x64;ARM64</Platforms>
|
|
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())</RuntimeIdentifier>
|
|
<PublishProfile Condition="Exists('Properties\PublishProfiles\win-$(Platform).pubxml')">win-$(Platform).pubxml</PublishProfile>
|
|
<UseWinUI>true</UseWinUI>
|
|
<WinUISDKReferences>false</WinUISDKReferences>
|
|
<EnableMsixTooling>true</EnableMsixTooling>
|
|
<WindowsPackageType>None</WindowsPackageType>
|
|
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- AmiReel.Tests is a subfolder of this project's directory; exclude it from the
|
|
default SDK glob so its test files (and MSTest-only usings) aren't compiled
|
|
into the app itself. -->
|
|
<Compile Remove="AmiReel.Tests\**\*.cs" />
|
|
<EmbeddedResource Remove="AmiReel.Tests\**\*" />
|
|
<None Remove="AmiReel.Tests\**\*" />
|
|
</ItemGroup>
|
|
|
|
<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\Square44x44Logo.targetsize-48_altform-lightunplated.png" />
|
|
<Content Include="Assets\StoreLogo.png" />
|
|
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<Manifest Include="$(ApplicationManifest)" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<EmbeddedResource Include="ThirdParty\ffmpeg.exe" Condition="Exists('ThirdParty\ffmpeg.exe')" LogicalName="AmiReel.Tools.ffmpeg.exe" />
|
|
<EmbeddedResource Include="ThirdParty\ffprobe.exe" Condition="Exists('ThirdParty\ffprobe.exe')" LogicalName="AmiReel.Tools.ffprobe.exe" />
|
|
<!-- Loaded at runtime via GetManifestResourceStream for the title bar icon (MainWindow.xaml.cs).
|
|
The Assets\*.png Content items above go through the ms-appx:// / MRT resource pipeline,
|
|
which a single-file self-contained publish bundles into the exe in a way that ms-appx://
|
|
can no longer resolve at runtime — this embedded copy sidesteps that entirely. -->
|
|
<EmbeddedResource Include="Assets\Square44x44Logo.scale-200.png" LogicalName="AmiReel.Assets.TitleBarIcon.png" />
|
|
<!-- Loaded at runtime and extracted to a real .ico file for AppWindow.SetIcon (MainWindow.xaml.cs),
|
|
which sets the taskbar/Alt+Tab window icon and requires an actual .ico file path — passing
|
|
the .exe path there does not work. Embedding it keeps this independent of publish mode too. -->
|
|
<EmbeddedResource Include="branding\AmiReel.ico" LogicalName="AmiReel.Assets.AppIcon.ico" />
|
|
</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 '$(EnableMsixTooling)'=='true'">
|
|
<ProjectCapability Include="Msix" />
|
|
</ItemGroup>
|
|
|
|
<!--
|
|
Microsoft.Windows.SDK.BuildTools.WinApp adds first-class support for
|
|
`dotnet run` on packaged WinUI apps: it hooks the .NET CLI Run target to
|
|
register a debug identity via the winapp CLI and launch the app with
|
|
package identity (AUMID).
|
|
Set <EnableWinAppRunSupport>false</EnableWinAppRunSupport> in a
|
|
<PropertyGroup> above to opt out.
|
|
-->
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.28000.2526" />
|
|
<PackageReference Include="Microsoft.WindowsAppSDK" Version="2.3.1" />
|
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools.WinApp" Version="0.5.0" />
|
|
</ItemGroup>
|
|
|
|
<!--
|
|
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
|
|
Explorer "Package and Publish" context menu entry to be enabled for this project even if
|
|
the Windows App SDK Nuget package has not yet been restored.
|
|
-->
|
|
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
|
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
|
|
</PropertyGroup>
|
|
|
|
<!-- Publish Properties -->
|
|
<PropertyGroup>
|
|
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
|
|
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
|
|
<PublishTrimmed Condition="'$(Configuration)' == 'Debug'">False</PublishTrimmed>
|
|
<PublishTrimmed Condition="'$(Configuration)' != 'Debug'">False</PublishTrimmed>
|
|
<IncludeAllContentForSelfExtract Condition="'$(Configuration)' != 'Debug'">True</IncludeAllContentForSelfExtract>
|
|
</PropertyGroup>
|
|
</Project>
|