hexagon-oss / openhardwaremonitor

Open Hardware Monitor - a tool for monitoring hardware performance. Includes support for various temperature sensors, disk I/O ratings and power consumption.
Mozilla Public License 2.0
188 stars 21 forks source link

installer for Windows on Arm64 #39

Open chirontt opened 2 years ago

chirontt commented 2 years ago

The currently-available installer OpenHardwareMonitorSetup.exe was compiled for x64 architecture, but I have an Arm64 machine running Windows 11 natively (i.e. Windows on Arm64), with the .NET desktop runtime 6.0.8 for Arm64 already installed. Can an installer for Arm64 architecture be provided?

Installing the self-extracting (x64) OpenHardwareMonitorSetup.exe is no problem on my Arm64 box, but running the resulting OpenHardwareMonitor.exe gives me the following error box:

image

Obviously the OpenHardwareMonitor.exe executable is for x64, hence it requires the .NET runtime for x64. But I don't need/want to install the runtime for x64 on my Arm64 box. The obvious solution is to recompile the OpenHardwareMonitor program for Arm64, so that it will run natively on my Arm64 box.

Again, can an installer for Arm64 architecture be provided/compiled? I hope it's just a recompile to be needed i.e. no code change; after all they all run under Windows anyway.

pgrawehr commented 2 years ago

I'll try, but I have never worked with Arm64 on Windows, so it's a bit of a trial-and-error for me. Could you try running dotnet openhardwaremonitor.dll from the command line? Does that work?

chirontt commented 1 year ago

Can you compile the app for Arm64 on your x64 box (i.e. cross compiling to Arm64)? I can test-run the resulting package on my Arm64 box if you need it.

As to running dotnet openhardwaremonitor.dll (this is using the native Arm64 dotnet command invoking the openhardwaremonitor.dll from your distribution (x64)), it gives me the error box:

image

The Aga.Controls.dll file is there in the same folder, so why is it complaining about not finding it? My guess is that the native dotnet command can't load that .dll file which was built for x64 (?)

I eventually bit the bullet and re-compiled this application using the native Arm64 tools (VS 2022, .NET 6, etc.) and the build.cmd, and it produced some Debug/Release distributions in the OpenHardwareMonitor\bin folder. But then double-clicking on the resulting OpenHardwareMonitor.exe would show nothing, as if it just silently quits. Is there any logs produced somewhere by the app?

Examining the resulting OpenHardwareMonitor.exe shows that it's a native Arm64 executable alright, so the whole distribution is also for native Arm64, right? Note that I'm quite a newbie in these .NET things, so I may have done incorrect things somewhere...

Then I try the command line option: dotnet openhardwaremonitor.dll in either Debug/Release directories, but it just gives the same error box about Aga.Controls.dll as above. Now I need to examine all those .dll files in the bin folder to see if they are really for Arm64 or not ...

FYI, here are my .NET env info:

>dotnet --info
.NET SDK:
 Version:   7.0.100-preview.7.22377.5
 Commit:    ba310d9309

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.22000
 OS Platform: Windows
 RID:         win10-arm64
 Base Path:   C:\Program Files\dotnet\sdk\7.0.100-preview.7.22377.5\

Host:
  Version:      7.0.0-preview.7.22375.6
  Architecture: arm64
  Commit:       eecb028078

.NET SDKs installed:
  6.0.400 [C:\Program Files\dotnet\sdk]
  7.0.100-preview.7.22377.5 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.0-preview.7.22376.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.0-preview.7.22375.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 6.0.8 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 7.0.0-preview.7.22377.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
  x64   [C:\Program Files\dotnet\x64]
...
pgrawehr commented 1 year ago

@chirontt Thanks for your investigation. Aga.Controls.dll is an external library that is not built by me. It is also not a .NET Core library, but built for .NET Framework 4.8. It does (magically?) work on Windows, even though OHM is now compiled for .NET 6.0, but I believe this could be the reason it's not working on Arm. When I last checked, there was no newer version of this library available.

pgrawehr commented 1 year ago

I need to rebuild this library, it seems. I will look into this, hopefully soon.