GitXplorerGitXplorer
l

ancm-arm64

public
8 stars
3 forks
0 issues

Commits

List of commits on branch main.
Verified
a7fac8b7f9e532452d785d4dffa6d90682680d97

Improved the steps with more details.

llextm committed 9 months ago
Verified
687dae83c9265cec61c57e3bcb0abb16f10d8bd0

Fixed #1 by using an alternative way to detect child folder.

llextm committed 9 months ago
Verified
16e06a38aa53c67cd17a483841abd5bf5f390e04

Update README.md

llextm committed 9 months ago
Verified
375ad7b3f9359eb16d5f024babedeff304190ca5

Added a link to my post.

llextm committed 2 years ago
Verified
56d50478d109a60f74546e488233230da9c1bcd7

Update README.md

llextm committed 2 years ago
Verified
6cca760221ae1e57be8dcb7e16886d879dbcc503

Update README.md

llextm committed 2 years ago

README

The README file for this repository.

ancm-arm64, installer patches for ASP.NET Core module on Windows 11 ARM64 and IIS.

Background

The official installer for .NET 7.0/8.0 at this moment only properly installs ASP.NET Core module ARM64 bits on the machine, so that only pure ARM64 ASP.NET Core web apps can run on IIS. The application pool simply crashes when you try to host x86 or x64 web apps.

Note that .NET 6.0 web apps can only run in x64/x86 modes on IIS/Windows 11 ARM64. There wasn't no Windows ARM64 support in 6.0 release.

The changes made by this repo have been delivered to Microsoft ASP.NET Core team in dotnet/aspnetcore/issues/47115. However, they decided that no immediate action to take. You can vote it up there and describe why the patch is important and should be included in the official installer. That might help prioritize the issue on their roadmap.

I also wrote about my investigation on this topic in details and hope you find the technical details useful.

Preparation

Perform the following steps to prepare the environment on your development machine,

  1. Download the original 64 bit installer from Microsoft.

  2. Download WiX Toolset if it isn't installed to %ProgramFilesX86%\WiX Toolset v3.11\bin\.

  3. Extract all contents from original Microsoft installer using dark.exe with

    dark.exe dotnet-hosting-7.0.4-win.exe -x .\msi

At this stage, all useful bits can be found in \msi\AttachedContainer folder, such as AspNetCoreModuleV2_*.msi. This folder provides all files are later used for patching.

Note that here we use .NET 7.0.4 as an example. The same approach should apply to other versions (including .NET 8 Preview) till Microsoft officially ships the necessary changes in future releases.

Apply the Patch

  1. Execute the official installer to install ARM64 bits to IIS.
  2. Clone this repo to your local disk.
  3. Execute patch.ps1 -msiFolder <folder> (this points to the AttachedContainer folder in earlier steps) as administrator so that it extracts the necessary files from those MSI packages and install to the desired places.

    Note that this install script also installs a few helper files compiled by me. They are ARM64X pure forwarders required for ARM64/x64 side by side execution. The source code and build script are in src folder.

Restore to Default

  1. Execute restore.ps1 as administrator.

You should restore to default before upgrading the hosting bundle to a newer version.