diff --git a/src/TeamsISO.App.WinUI.Probe/Program.cs b/src/TeamsISO.App.WinUI.Probe/Program.cs
new file mode 100644
index 0000000..4e2d3a9
--- /dev/null
+++ b/src/TeamsISO.App.WinUI.Probe/Program.cs
@@ -0,0 +1,142 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace TeamsISO.App.WinUI.Probe;
+
+///
+/// Tiny diagnostic console — calls the native MddBootstrapInitialize2
+/// export from Microsoft.WindowsAppRuntime.Bootstrap.dll directly and
+/// reports the HResult.
+///
+/// Use to isolate whether the WinUI 3 activation blocker is:
+/// (a) Bootstrap DLL load — DllNotFoundException at the P/Invoke call
+/// (b) Framework package resolution — Bootstrap returns non-S_OK HR
+/// (c) Downstream — Bootstrap succeeds, the WinUI 3 .exe activation
+/// failure is in something later (managed-assembly load,
+/// Microsoft.WinUI.dll native imports, etc.)
+///
+internal static class Program
+{
+ /// WindowsAppSDK target major/minor.
+ private const uint WindowsAppSdkMajorMinor = 0x00010006;
+
+ [DllImport("Microsoft.WindowsAppRuntime.Bootstrap.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
+ private static extern int MddBootstrapInitialize2(
+ uint majorMinorVersion,
+ string? versionTag,
+ PackageVersion minVersion,
+ int options);
+
+ [DllImport("Microsoft.WindowsAppRuntime.Bootstrap.dll", ExactSpelling = true)]
+ private static extern void MddBootstrapShutdown();
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct PackageVersion
+ {
+ public ushort Revision;
+ public ushort Build;
+ public ushort Minor;
+ public ushort Major;
+ }
+
+ public static int Main(string[] args)
+ {
+ Console.WriteLine("TeamsISO WinUI 3 bootstrap probe");
+ Console.WriteLine("───────────────────────────────────────────");
+ Console.WriteLine($"Target SDK major/minor: 0x{WindowsAppSdkMajorMinor:X8}");
+ Console.WriteLine();
+
+ try
+ {
+ // Try with both null and "" for versionTag; report both.
+ var minVersion = new PackageVersion();
+ Console.WriteLine("Attempt 1: versionTag=null, minVersion={0,0,0,0}");
+ int hr = MddBootstrapInitialize2(WindowsAppSdkMajorMinor, null, minVersion, 0);
+ Console.WriteLine($" HR=0x{hr:X8} ({Describe(hr)})");
+
+ if (hr != 0)
+ {
+ Console.WriteLine();
+ Console.WriteLine("Attempt 2: versionTag=\"\", minVersion={0,0,0,0}");
+ hr = MddBootstrapInitialize2(WindowsAppSdkMajorMinor, "", minVersion, 0);
+ Console.WriteLine($" HR=0x{hr:X8} ({Describe(hr)})");
+ }
+
+ if (hr != 0)
+ {
+ Console.WriteLine();
+ Console.WriteLine("Attempt 3: versionTag=\"\", options=1 (DoNotShowDialog)");
+ hr = MddBootstrapInitialize2(WindowsAppSdkMajorMinor, "", minVersion, 1);
+ Console.WriteLine($" HR=0x{hr:X8} ({Describe(hr)})");
+ }
+
+ if (hr == 0)
+ {
+ Console.WriteLine();
+ Console.WriteLine("Bootstrap succeeded.");
+ Console.WriteLine("The WinUI 3 .exe activation failure is NOT in the bootstrap.");
+ Console.WriteLine("Suspect: downstream managed-assembly load (Microsoft.WinUI.dll");
+ Console.WriteLine("native imports during JIT).");
+ MddBootstrapShutdown();
+ }
+ else
+ {
+ Console.WriteLine();
+ Console.WriteLine("Bootstrap failed. Decode the HResult:");
+ DescribeHResult(hr);
+ }
+ }
+ catch (DllNotFoundException ex)
+ {
+ Console.WriteLine($"DllNotFoundException: {ex.Message}");
+ Console.WriteLine();
+ Console.WriteLine("Microsoft.WindowsAppRuntime.Bootstrap.dll couldn't be located by");
+ Console.WriteLine("the loader. Check that the file is alongside the .exe and that the");
+ Console.WriteLine("process architecture matches (x64 .exe loads x64 DLLs).");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Unexpected: {ex.GetType().Name}: {ex.Message}");
+ }
+
+ Console.WriteLine();
+ Console.WriteLine("Press any key to exit.");
+ Console.ReadKey(true);
+ return 0;
+ }
+
+ private static string Describe(int hr) => hr switch
+ {
+ 0 => "S_OK",
+ unchecked((int)0x80073B17) => "ERROR_INSTALL_PACKAGE_NOT_FOUND",
+ unchecked((int)0x80073B19) => "ERROR_PACKAGES_REPUTATION_CHECK_FAILED",
+ unchecked((int)0x80004005) => "E_FAIL",
+ unchecked((int)0x80670016) => "MDD_E_BOOTSTRAP_INITIALIZE_DDLM_NOT_FOUND",
+ unchecked((int)0x80670017) => "MDD_E_BOOTSTRAP_INITIALIZE_LIFECYCLE_MANAGER_FAILURE",
+ _ => "(unknown HR)",
+ };
+
+ private static void DescribeHResult(int hr)
+ {
+ var description = (uint)hr switch
+ {
+ 0x80670016 =>
+ "DDLM (Dynamic Dependency Lifetime Manager) for this WindowsAppSDK major.minor\n" +
+ " is NOT installed on this machine. The framework package (Microsoft.WindowsApp\n" +
+ " Runtime.1.6) may be present but its DDLM sibling — MicrosoftCorporationII.\n" +
+ " WinAppRuntime.Main.1.6 — is missing. Run \"Get-AppxPackage | Where Name -like\n" +
+ " '*WinAppRuntime.Main*'\" to see which versions have DDLM coverage. Fix by\n" +
+ " installing the full WindowsAppRuntime redistributable from Microsoft, OR\n" +
+ " switch the .csproj to a major.minor whose Main package IS installed.",
+ 0x80670017 =>
+ "Lifecycle manager start failed. The DDLM is installed but couldn't be activated.\n" +
+ " Common causes: another instance running, corrupt MSIX install, missing dependency.",
+ 0x80073B17 => "Framework package not found. Install Microsoft.WindowsAppRuntime..",
+ 0x80073B18 => "Framework package version mismatch.",
+ 0x80073B19 => "Framework package not present for current user.",
+ 0x80073B26 => "Framework package architecture mismatch.",
+ _ => $"Unknown HResult. Look up in WindowsAppSDK source BootstrapErrorCodes.h.",
+ };
+ Console.WriteLine($" {description}");
+ }
+}
diff --git a/src/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj b/src/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj
new file mode 100644
index 0000000..9111b90
--- /dev/null
+++ b/src/TeamsISO.App.WinUI.Probe/TeamsISO.App.WinUI.Probe.csproj
@@ -0,0 +1,49 @@
+
+
+
+
+
+ Exe
+ net8.0-windows
+ TeamsISO.App.WinUI.Probe
+ x64
+ win-x64
+ enable
+ enable
+ true
+
+
+
+
+
+
+
+
diff --git a/src/TeamsISO.App.WinUI/Program.cs b/src/TeamsISO.App.WinUI/Program.cs
index 03d4e1c..36087bd 100644
--- a/src/TeamsISO.App.WinUI/Program.cs
+++ b/src/TeamsISO.App.WinUI/Program.cs
@@ -27,8 +27,8 @@ namespace TeamsISO.App.WinUI;
///
public static class Program
{
- /// WindowsAppSDK 1.6 major/minor packed as 0x00010006.
- private const uint WindowsAppSdkMajorMinor = 0x00010006;
+ /// WindowsAppSDK 1.8 major/minor packed as 0x00010008.
+ private const uint WindowsAppSdkMajorMinor = 0x00010008;
[STAThread]
public static int Main(string[] args)
diff --git a/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj b/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj
index 3426f74..c618b05 100644
--- a/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj
+++ b/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj
@@ -83,14 +83,18 @@
-
+
diff --git a/src/TeamsISO.App.WinUI/Views/MainWindow.xaml b/src/TeamsISO.App.WinUI/Views/MainWindow.xaml
index 40677ed..d05a4ef 100644
--- a/src/TeamsISO.App.WinUI/Views/MainWindow.xaml
+++ b/src/TeamsISO.App.WinUI/Views/MainWindow.xaml
@@ -326,102 +326,30 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+