unoplatform / uno

Open-source platform for building cross-platform native Mobile, Web, Desktop and Embedded apps quickly. Create rich, C#/XAML, single-codebase apps from any IDE. Hot Reload included! 90m+ NuGet Downloads!!
https://platform.uno
Apache License 2.0
9.06k stars 736 forks source link

Cannot Pass Microsoft Store Tests for UWP App with WebView #8899

Closed sharpninja closed 2 years ago

sharpninja commented 2 years ago

Current behavior

It appears that the WebView2 integration in the latest Uno Platform violates requirements for UWP apps in the Microsoft Store.

API _CxxThrowException in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API __C_specific_handler in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API __std_exception_copy in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API __std_exception_destroy in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API __std_terminate in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API _purecall in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API memcpy in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API memmove in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API memset in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API wcsrchr in vcruntime140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?_Xlength_error@std@@YAXPEBD@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?_Xout_of_range@std@@YAXPEBD@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrAssign@@YAXPEAXPEBX@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrCreate@@YAXPEAX@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrCurrentException@@YAXPEAX@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrDestroy@@YAXPEAX@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API ?__ExceptionPtrRethrow@@YAXPEBX@Z in msvcp140.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.
API __CxxFrameHandler4 in vcruntime140_1.dll is not supported for this application type. Microsoft.Web.WebView2.Core.dll calls this API.

Expected behavior

App would pass validation.

How to reproduce it (as minimally and precisely as possible)

Considering the extreme amount of legwork and credential issues to set up a public example of this problem, I think we will need to work on this based on the validation report.

Workaround

None

Works on UWP/WinUI

No

Environment

Uno.UI / Uno.UI.WebAssembly / Uno.UI.Skia

NuGet package version(s)

  <ItemGroup>
    <PackageReference Include="CommunityToolkit.Mvvm">
      <Version>[8.0.0-preview3]</Version>
    </PackageReference>
    <PackageReference Include="GitVersion.MsBuild">
      <Version>[5.10.1]</Version>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Identity.Client">
      <Version>4.44.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
      <Version>6.2.13</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.UI.Xaml" Version="2.8.0-prerelease.220413001" />
    <PackageReference Include="Newtonsoft.Json">
      <Version>13.0.2-beta1</Version>
    </PackageReference>
    <PackageReference Include="System.Diagnostics.EventLog">
      <Version>7.0.0-preview.4.22229.4</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Principal.Windows">
      <Version>6.0.0-preview.5.21301.5</Version>
    </PackageReference>
    <PackageReference Include="Uno.UI" Version="4.4.0-dev.95" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0-preview.4.22229.4" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0-preview.4.22229.4" />
    <PackageReference Include="Uno.Core.Extensions.Logging.Singleton" Version="4.0.1" />
  </ItemGroup>

Affected platforms

Windows

IDE

Visual Studio 2022

IDE version

Version 17.3.0 Preview 1.1

Relevant plugins

Microsoft Visual Studio Community 2022 Version 17.3.0 Preview 1.1 VisualStudio.17.Preview/17.3.0-pre.1.1+32519.111 Microsoft .NET Framework Version 4.8.09032

Installed Version: Community

Visual C++ 2022 00482-90000-00000-AA577 Microsoft Visual C++ 2022

.NET Core Debugging with WSL 1.0 .NET Core Debugging with WSL

ADL Tools Service Provider 1.0 This package contains services used by Data Lake tools

ASA Service Provider 1.0

ASP.NET and Web Tools 2019 17.3.122.33185 ASP.NET and Web Tools 2019

AttachToAllTheThings 1.0 AttachToAllTheThings Visual Studio Package Detailed Info

Azure App Service Tools v3.0.0 17.3.122.33185 Azure App Service Tools v3.0.0

Azure Data Lake Tools for Visual Studio 2.6.5000.0 Microsoft Azure Data Lake Tools for Visual Studio

Azure Functions and Web Jobs Tools 17.3.122.33185 Azure Functions and Web Jobs Tools

Azure Stream Analytics Tools for Visual Studio 2.6.5000.0 Microsoft Azure Stream Analytics Tools for Visual Studio

C# Tools 4.3.0-1.22254.1+9919d7e7bd753404a5d2328e5e3fb2de635169f3 C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.

Child Process Debugging Power Tool 1.0 Power tool to add child process debugging to Visual Studio.

Clear MEF Component Cache 1.4 Clears the Visual Studio MEF component cache to fix issues with cache corruption.

Comment Links 2.9 Create links in comments between any files.

Common Azure Tools 1.10 Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.

Cookiecutter 17.0.22115.6 Provides tools for finding, instantiating and customizing templates in cookiecutter format.

CreateUnitTestBoilerplateCommand Extension 1.0 CreateUnitTestBoilerplateCommand Visual Studio Extension Detailed Info

Debug Attach Manager 1.0 Extension provides extended abilities to attach Visual Studio debuger to web application pools, windows services and other processes.

Debug Help Context 1.0.1 Adds a tool window that shows the active debug help context. Can be used to troubleshoot extensions.

Don't Copy Always 1.5 Check for files that have 'Copy to output directory' set to 'Copy always'.

Dotfuscator Community Edition 6.5.0+76d4669002 PreEmptive Protection - Dotfuscator CE

Entity Framework Core Power Tools 2.5 Adds useful design-time EF Core DbContext features to the Visual Studio Solution Explorer context menu.

Extensibility Essentials 2022 1.1.15 A collection of extensions that makes it much easier to write Visual Studio extensions

Extensibility Message Bus 1.2.6 (master@34d6af2) Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration.

File Differ 2.0.28 The easiest way to diff two files directly in Solution Explorer

File Icons 2.7 Adds icons for files that are not recognized by Solution Explorer

GoToDnSpy 1.0 Open dnSpy or source.dot.net and select method or type under caret.

HotSettings Extension 1.4.0 HotSettings Visual Studio Extension by Justin Clareburt

ILSpy.AddIn 1.0 Integration of the ILSpy Decompiler into Visual Studio.

Insert Guid 1.2 Makes it super easy to insert a new GUID into any editor and input field

KnownMonikers Explorer 2022 1.2.42 A tool window for Visual Studio extension authors to explore the KnownMonikers image collection

Linux Core Dump Debugging 1.0.9.32505 Enables debugging of Linux core dumps.

Markdown Editor v2 2.0.106 A full featured Markdown editor with live preview and syntax highlighting. Supports GitHub flavored Markdown.

Menees VS Tools 2022 2022.0.3 Provides several new commands such as Sort Lines, Sort Members, Trim, Statistics, ExecuteFile, AddRegion, CollapseAllRegions, ExpandAllRegions, and ToggleFiles.

Also, provides colorized text in the Output and Find Results windows, an enhanced Tasks tool window (e.g., for TODO comments), and a Base Converter tool window.

MetaOutput 2.0.9.191 Work with output data / log files never been so simple!

MetaProject 2.0.9.191 Work with project files newer been so simple!

microscope 2.4.0.149 Provides a CodeLens to inspect the intermediate language instructions of a method.

Microsoft Azure Hive Query Language Service 2.6.5000.0 Language service for Hive query

Microsoft Azure Stream Analytics Language Service 2.6.5000.0 Language service for Azure Stream Analytics

Microsoft Azure Tools for Visual Studio 2.9 Support for Azure Cloud Services projects

Microsoft JVM Debugger 1.0 Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines

Mono Debugging for Visual Studio 17.3.11 (4f73250) Support for debugging Mono processes with Visual Studio.

Multiline Search and Replace 3.3 Adds multiline search and replace functionality to Visual Studio.

Node.js Tools 1.5.40427.1 Commit Hash:d6dd02cc1b56ad1cb24b4ef0c48a81a985bbc64c Adds support for developing and debugging Node.js apps in Visual Studio

NuGet Package Manager 6.3.0 NuGet Package Manager in Visual Studio. For more information about NuGet, visit https://docs.nuget.org/

NUKE Support 0.1.0 Task Runner integration for execution of targets and code snippets for authoring

Nullable Extended Extension Nullable.Extended Tools to keep your nullability annotations lean and mean.

Office Developer Tools for Visual Studio 17.0.32314.00 Microsoft Office Developer Tools for Visual Studio

OpenT4EditorSettingsCommand Extension 1.0 OpenT4EditorSettingsCommand Visual Studio Extension Detailed Info

Pkgdef Language 1.2.73 Basic language support for .pkgdef and .pkgundef files

Plastic SCM 4.0 This package extends Visual Studio to add the main Plastic SCM features as branching, labeling, merging and other features

Project Explorer Extension 1.0 Project Explorer Visual Studio Extension

Project System Tools 1.0 Tools for working with C#, VisualBasic, and F# projects.

Python - Django support 17.0.22115.6 Provides templates and integration for the Django web framework.

Python - Profiling support 17.0.22115.6 Profiling support for Python projects.

Python - VC Project Support 17.0.21344.1 Provides support for launching C++ projects with Python debugging enabled.

Python with Pylance 17.0.22115.6 Provides IntelliSense, projects, templates, debugging, interactive windows, and other support for Python developers.

Razor (ASP.NET Core) 17.0.0.2222701+751db1ebea5e6a9ecc7fa57fe447180422afa610 Provides languages services for ASP.NET Core Razor.

ReAttach 2.5 Gives you an easy way to ReAttach to prior debugging targets. For more information, see https://marketplace.visualstudio.com/items?itemName=ErlandR.ReAttach.

RemoveTrailingWhitespaces 1.0 Trailing whitespace removal tool. Removes either manually or on file save.

Rewrap Extension 1.0 Re-wraps comments and other text

RunAsAdmin 1.0 Run Visual Studio as administrator

RunCommand Extension 1.0 RunCommand Visual Studio Extension Detailed Info

Shifter 1.0.9 String and code manipulations, performed on keyboard shortcut with detection of intended manipulation.

Show Selection Length 1.0.3 Shows the length of the editor text selection in the status bar

Source Server Browser Power Tool 1.0 Power tool to allow browsing of Source Server information in a module.

SQL Server Data Tools 17.0.62204.01010 Microsoft SQL Server Data Tools

SQLite & SQL Server Compact Toolbox 4.8 SQLite & SQL Server Compact Toolbox adds scripting, import, export, rename, query execution and much more to SQL Server Compact & SQLite Data Connections.

SVG Viewer 1.0.15 Makes it much easier to work with SVG files by showing a live preview in the bottom-right corner of the code window

Syncfusion ASP.NET Core Project Templates 16.1.0.32 Provides project templates for creating an ASP.NET Core Web Application using Syncfusion ASP.NET Core components.

Syncfusion EJ2 Web Conversion and Migration 13.4.0.53 Converts and migrates a web project into a Syncfusion web project.

SyncfusionCodeGeneratorMenuCommand Extension 16.1.0.32 SyncfusionCodeGeneratorMenuCommand Visual Studio Extension Detailed Info

SyncfusionMenu Extension 1.0 SyncfusionMenu Visual Studio Extension Detailed Info

Syntax Visualizer 1.0 An extension for visualizing Roslyn SyntaxTrees.

Test Adapter for Boost.Test 1.0 Enables Visual Studio's testing tools with unit tests written for Boost.Test. The use terms and Third Party Notices are available in the extension installation directory.

Test Adapter for Google Test 1.0 Enables Visual Studio's testing tools with unit tests written for Google Test. The use terms and Third Party Notices are available in the extension installation directory.

Toggle Editor Tooltips 1.0.9 Disable editor tooltips on mouse hover to remove the visual noise

TOML Editor 1.0.14 TOML language support for Visual Studio with syntax highlighting, validation, outlining, and more...

ToolWindowHostedEditor 1.0 Hosting json editor into a tool window

Tweaks 2022 1.1.134 A collection of minor fixes and tweaks for Visual Studio to reduce the paper cuts and make you a happier developer

TypeScript Tools 17.0.10420.2001 TypeScript Tools for Microsoft Visual Studio

UnoPlatformPackage Extension 1.0 UnoPlatformPackage Visual Studio Extension Detailed Info

Visual Basic Tools 4.3.0-1.22254.1+9919d7e7bd753404a5d2328e5e3fb2de635169f3 Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.

Visual C++ for Cross Platform Mobile Development (Android) 17.0.32505.426 Visual C++ for Cross Platform Mobile Development (Android)

Visual C++ for Cross Platform Mobile Development (iOS) 17.0.32505.426 Visual C++ for Cross Platform Mobile Development (iOS)

Visual C++ for Linux Development 1.0.9.32505 Visual C++ for Linux Development

Visual F# Tools 17.1.0-beta.22178.3+6da0245a7ce4bb8483b8d1f2993c8ecaea967ad9 Microsoft Visual F# Tools

Visual Studio Extension for SpecFlow 1.0 Visual Studio extension for working with SpecFlow projects and Gherkin feature files.

Visual Studio IntelliCode 2.2 AI-assisted development for Visual Studio.

Visual Studio Tools for Unity 17.2.4.0 Visual Studio Tools for Unity

VisualStudio.DeviceLog 1.0 Information about my package

VisualStudio.Mac 1.0 Mac Extension for Visual Studio

VS Theme Colors 2022 1.0.11 Makes it easy to browse all the brushes and select the right theme color for your Visual Studio extension UI.

VSCode Theme Converter 1.0.13 A super easy way to convert VS Code themes to Visual Studio using the official CLI tool under the hood

VSColorOutput64 2022.2 Color output for build and debug windows - https://mike-ward.net/vscoloroutput

VSIX Synchronizer 1.0.39 Provides the ability to generate code-behind files for .vsixmanfiest and .vsct files in managed code to make the information easy to consume from the rest of the extension.

VsTranslator Extension 1.0 VsTranslator Visual Studio Extension Detailed Info

w3wp HUD 1.0 IIS worker process IDs at a glance

WiX Toolset Visual Studio Extension 1.0.0.18 WiX Toolset Visual Studio Extension version 1.0.0.18 Copyright (c) .NET Foundation and contributors. All rights reserved.

Workflow Manager Tools 1.0 1.0 This package contains the necessary Visual Studio integration components for Workflow Manager.

Xamarin 17.3.0.151 (d17-3-p1.1@5a59bfa) Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.

Xamarin Designer 17.3.0.33 (remotes/origin/d17-3-1@9c0d11a29) Visual Studio extension to enable Xamarin Designer tools in Visual Studio.

Xamarin.Android SDK 12.3.99.58 (main/64b22fc) Xamarin.Android Reference Assemblies and MSBuild support. Mono: adf1bc4 Java.Interop: xamarin/java.interop/release/6.0.3xx@2a882d2d ProGuard: Guardsquare/proguard/v7.0.1@912d149 SQLite: xamarin/sqlite/3.38.2@7b1e016 Xamarin.Android Tools: xamarin/xamarin-android-tools/main@fc3c2ac

Anything else we need to know?

Supported API test

FAILED

Supported APIs

jeromelaban commented 2 years ago

Thanks for the report. This is a Microsoft issue for either WinUI or WinAppSDK. Make sure to open an issue there.

sharpninja commented 2 years ago

Just to be clear, the UWP project references Uno.UI and the only way to get to WebView2 is through the WebView tag from my MainPage.xaml.

<Page x:Class="Activate.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Activate"
        xmlns:models="using:Activate.Models" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
        xmlns:converters="using:Activate.Converters"
      >
    <!-- stuff -->
        <WebView Grid.Row="1" x:Name="Web" Visibility="Collapsed" HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch" />
    <!-- other stuff -->
</Page>

References image

I don't know whether Microsoft.UI.Xaml or Uno.UI are responsible for assigning the WebView control to a WebView2 instance. I need to understand that before I open a ticket.

jeromelaban commented 2 years ago

The UWP project only references Uno.UI for one class (VisibleBoundsPadding), you can remove it if you don't use that class. The rest is not provided by WinUI, but by UWP itself and Uno does not have any effect on WebView for that platform.