fyr77 / envyupdate Goto Github PK
View Code? Open in Web Editor NEWSmall update checker application for NVIDIA GeForce GPUs
License: MIT License
Small update checker application for NVIDIA GeForce GPUs
License: MIT License
When starting the application for the first time, the online version displayed is wrong.
I don't know why this happens, a restart fixes it permanently.
It should be simple to prevent the application from being openend twice.
I will add this together with the language update.
The drivers support multiple download locations and locales. Detecting them and using the correct download would be nice.
Supported languages:
Using native Windows notifications would look a lot better on Windows 10, since it will integrate with the OS better.
This would make notifications incompatible with Windows 8.1 and earlier.
As of 2.0, EnvyUpdate gets all information at runtime. This is great for portable uses, but when in "installed" mode, caching some of that info could lead to better start time and performance.
Whenever you have the latest Hotfix driver installed (451.85 currently) EnvyUpdate still tells you your driver is out of date and prompts you to download a older version (451.67 currently).
The current tray icon library does not feel quite native on Windows 11. Including a context menu would also be nice.
I wish I could give you logs but I don't have any.
When using the autostart version, it crashes.
Gotta look into that.
Useful program, but should be able to distinguish whether the installed driver version is GRD (Game Ready Driver) or SD (Driver Studio) and consequently check the availability of updates related to the installed driver type.
EnvyUpdate always leads you to download the standard version of the Nvidia driver but what if the user is required the DCH version? A option to let you chose between standard and DCH would be handy.
Quadro GPUs have a different version system. Would be nice if EnvyUpdate supported those as well.
When Standard drivers are upgraded to DCH, EnvyUpdate may still think Standard drivers are being used.
There are currently 2 checks in place for DCH:
nvsvs.dll
in system32, which does not exist after upgrading to DCH.Checking for a unique file would be optimal, since Registry support is flaky. I need to find out which files are truly unique to Standard or DCH.
virustotal does give some hits back as well https://www.virustotal.com/gui/file/0203f52776e0b567b1816e44fb325c03f12f0221134e25f70ae7329f6643f80d
Currently EnvyUpdate saves all config and downloads next to the main .exe file. It would be nice to allow users to toggle whether to use appdata instead.
This would be off by default to keep the app portable, but enabled when either failing to acquire write permissions for the directory or being saved on the desktop.
V2 would benefit from checking for write permissions as well, so this should be backported.
I'm having an issue with EnvyUpdate which I think makes it not work at all at the moment (I wondered why I wasn't prompted to install new drivers when they were released, but I knew EnvyUpdate was scheduled to run on startup).
In EventHistory there are two "Errors" that appear each time I try to start EnvyUpdate. This is regardless if I start it normally, as admin, or as a scheduled task.
The first error is the following (unfortunately in Swedish):
Tillämpningsprogram: EnvyUpdate.exe
Framework-version: v4.0.30319
Beskrivning: Processen avslutades på grund av ett ohanterat undantag.
Undantagsinformation: System.IO.DirectoryNotFoundException
vid System.IO.__Error.WinIOError(Int32, System.String)
vid System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean, Boolean)
vid System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions, System.String, Boolean)
vid System.Net.FileWebStream..ctor(System.Net.FileWebRequest, System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, Boolean)
vid System.Net.FileWebResponse..ctor(System.Net.FileWebRequest, System.Uri, System.IO.FileAccess, Boolean)
Undantagsinformation: System.Net.WebException
vid System.Net.FileWebResponse..ctor(System.Net.FileWebRequest, System.Uri, System.IO.FileAccess, Boolean)
vid System.Net.FileWebRequest.GetResponseCallback(System.Object)
Undantagsinformation: System.Net.WebException
vid System.Net.WebClient.DownloadDataInternal(System.Uri, System.Net.WebRequest ByRef)
vid System.Net.WebClient.DownloadString(System.Uri)
vid System.Net.WebClient.DownloadString(System.String)
vid EnvyUpdate.MainWindow+<Load>d__9.MoveNext()
vid System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__6_0(System.Object)
vid System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
vid System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
vid System.Windows.Threading.DispatcherOperation.InvokeImpl()
vid System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
vid MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object)
vid System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
vid System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
vid System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
vid MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
vid System.Windows.Threading.DispatcherOperation.Invoke()
vid System.Windows.Threading.Dispatcher.ProcessQueue()
vid System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
vid MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
vid MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
vid System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
vid System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
vid System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
vid MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
vid MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
vid System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
vid System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
vid System.Windows.Application.RunDispatcher(System.Object)
vid System.Windows.Application.RunInternal(System.Windows.Window)
vid System.Windows.Application.Run(System.Windows.Window)
vid EnvyUpdate.App.Main()
And the second error is:
Felet uppstod i programmet med namn: EnvyUpdate.exe, version 2.13.0.0, tidsstämpel 0xe1b77e98
, felet uppstod i modulen med namn: KERNELBASE.dll, version 10.0.19041.2364, tidsstämpel 0x1e5c8604
Undantagskod: 0xe0434352
Felförskjutning: 0x0012e292
Process-ID: 0x532c
Programmets starttid: 0x01d91b56d62f6893
Sökväg till program: C:\Users\fough\scoop\apps\envyupdate\current\EnvyUpdate.exe
Sökväg till modul: C:\WINDOWS\System32\KERNELBASE.dll
Rapport-ID: fc2f6219-5230-46bb-9aa2-f6227c680e22
Fullständigt namn på felaktigt paket:
Program-ID relativt till felaktigt paket:
I am running Windows 10 Pro (19045.2364) and EnvyUpdate 2.13.0.0 (as can be seen in the error). And I am also using scoop to update the tool (and have disabled auto-update). Though I can see now that scoop doesn't have the absolut latest version yet (should be 2.15, right)?
Publishing EnvyUpdate to chocolatey/scoop/winget would be nice for easier installation.
I couldnt find the answer in README, therefore i wanted to ask here. Which all components of driver does it install? For example, i dont have GeForce Experience installed and would not like to install it. Will it install it together with driver? Will it update the other components of driver, like FrameView SKD, HD Sound Driver and nVidia System Software?
Thank you.
Apparently, TinyNvidiaUpdateChecker can disable telemetry and download driver packages. This may be worth looking into.
Until driver version 471.96 I used the Windows management interface to check the local driver version, which reported to the correct version. This seems to have changed to a new format: 30.0.14.7196
This is for non-DCH 64bit. I need to check other machines to get a full picture.
This means I need to find a new way of getting the local version. Until then, EnvyUpdate will report the wrong version.
https://github.com/ElPumpo/TinyNvidiaUpdateChecker has a nice feature where the changelog is displayed when a new driver is found. It would be nice if EnvyUpdate could show it in the app somewhere. I realize there's a link to the changelog provided, but it would be nice to have everything available at a glance in EnvyUpdate.
The program doesn't work on my end. It opens a gray square and this error prompt shows up.
I'm using the v3.3 downloaded 5 minutes ago from the Releases tab, Windows 11 v22H2 (Build 22621.2283) and my GPU is a GT 1030 manufactured by GIGABYTE.
Tbh, I don't have the intention of updating my drivers just yet since I already did it a few days ago, I just wanted to check if the program was working at all.
When this leaves the pre-release phase, there should be an integrated updater to always download the most recent version from github.
I could try downloading the newest file every reboot, since it's only 24kb or something, but I have to be careful to not trip any antivirus applications when doing that.
This has low priority for now.
I'd like Util.GetLocDriv
to get called occasionally without having to relaunch the program. Ideally we'd hook this to an event for a new program getting installed (Maybe through ManagementEventWatcher
?)
If an event driven model wouldn't work, then it should run once every few hours, with the ability to manually trigger it via a "Refresh" button.
It should be possible tom embed DLLs without the use of external "stuff".
I need to look into that.
Translating this application will probably be a lot easier if there's a way to do it without installing Visual Studio. Weblate seems like a good idea.
I will look into this.
Porting this project to UWP would ease a lot of things like updating or processor compatibility with ARM becoming more popular.
NVIDIA has published the beta of their new app, which merges GeForce Experience and the control panel and crucially does not require an account (finally!).
They do not state clearly if the old control panel will be retired entirely, the only info on this is "During the NVIDIA app beta, GeForce Experience and the NVIDIA Control Panel will continue to be available."
If the old control center gets completely replaced by the app, EnvyUpdate will become obsolete - users may no longer be able to choose to install "just the driver". If that is the case, this project will be retired. However, if NVIDIA continues to provide driver-only packages I will keep working on this.
I want to have a checkbox in options for autodownload new drivers
It might be a good idea to implement a translation feature.
I will do that at some point.
Hey, first off thank you so much for this program. It's been integral to my goal of slimming down my task manager and installed programs (which included removing GeForce Experience).
One small issue I've come across is when there is a new driver version available that I would prefer to skip, but I keep getting notifications popping up regularly about it. It would be great if there were a button or check box somewhere which gave the option "ignore this version".
I don't want to stop notifications entirely -- usually I do get the most recent driver, so I want to continue getting notifications about new ones. The issue is that sometimes certain drivers are reported to not do so well in benchmarks, so I'd prefer to skip them (this is currently true with 512.15). The button/check box I had in mind would basically turn off notifications until the next version is detected.
For future sustainability it would be wise to port this project from .NET Framework to .NET Core / the upcoming .NET 5.
Low priority, probably won't happen before .NET 5 is actually released.
Automatic GPU detection would be preferable over the current manual method using the website.
This probably needs a database to translate the GPU names reported by the system to the seemingly arbitrary GPUIDs used by Nvidia.
I am removing the updater for now, since it is causing a loop again.
I will release a new version soon which seperates the "install" version and the portable version.
After rewriting the updater for the 3rd time and using a third party library, updating EnvyUpdate automatically still causes problems. Ironic I suppose.
I will remove the self-updating functionality. If you want that functionality, use scoop. I will look into publishing it to the MS Store or something.
When I try to install the Nvidia Driver, it aborts due to a missing config file.
It creates a [version]-extracted
folder, but it is empty.
When minimized to the taskbar, does EnvyUpdate check once in a while? Perhaps once a day or something? Or does it only check once, when it is first opened? I checked the readme but I didn't find anything about the timing.
It should be possible to support AMD GPUs as well, especially since AMDs GPU download URLs make much more sense. This has no real priority right now, but it will be considered for a future major release.
Supporting AMD would probably warrant a name change as well, hmm...
Unusual behavior:
launch EvnyUpdate.exe, it's indeed shows up in tray icon then auto-crash without any information.
Windows 11 Pro 22H2
OS Build 22621.755
Windows Feature Experience Pack 1000.22636.1000.0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.