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}"); } }