Compare commits

..

No commits in common. "master" and "3.2" have entirely different histories.
master ... 3.2

15 changed files with 44 additions and 169 deletions

View file

@ -210,15 +210,6 @@ namespace EnvyUpdate
if (skippedVer != onlineDriv) if (skippedVer != onlineDriv)
{ {
if (GlobalVars.autoDownload)
{
if (buttonDownload.IsVisible)
{
Debug.LogToFile("INFO Auto-Downloading driver.");
buttonDownload_Click(null, null);
}
}
Debug.LogToFile("INFO Showing update popup notification."); Debug.LogToFile("INFO Showing update popup notification.");
Notify.ShowDrivUpdatePopup(); Notify.ShowDrivUpdatePopup();
} }
@ -349,34 +340,25 @@ namespace EnvyUpdate
private void buttonDownload_Click(object sender, RoutedEventArgs e) private void buttonDownload_Click(object sender, RoutedEventArgs e)
{ {
if (GlobalVars.isDownloading) progressbarDownload.Visibility = Visibility.Visible;
{ buttonDownload.IsEnabled = false;
Debug.LogToFile("WARN A download is already running.");
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Danger, Wpf.Ui.Common.SymbolRegular.ErrorCircle24, Properties.Resources.info_download_running, Properties.Resources.info_download_running_title);
}
else
{
progressbarDownload.Visibility = Visibility.Visible;
buttonDownload.IsEnabled = false;
GlobalVars.isDownloading = true;
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"))) if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading")))
{ {
Debug.LogToFile("WARN Found previous unfinished download, retrying."); Debug.LogToFile("WARN Found previous unfinished download, retrying.");
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading")); File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
}
Thread thread = new Thread(() => {
using (WebClient client = new WebClient())
{
client.Headers["User-Agent"] = GlobalVars.useragent;
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri(Util.GetDirectDownload(gpuURL)), Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
}
});
thread.Start();
Debug.LogToFile("INFO Started installer download.");
} }
Thread thread = new Thread(() => {
using (WebClient client = new WebClient())
{
client.Headers["User-Agent"] = GlobalVars.useragent;
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri(Util.GetDirectDownload(gpuURL)), Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
}
});
thread.Start();
Debug.LogToFile("INFO Started installer download.");
} }
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
@ -394,7 +376,6 @@ namespace EnvyUpdate
Application.Current.Dispatcher.Invoke(new Action(() => { Application.Current.Dispatcher.Invoke(new Action(() => {
buttonDownload.IsEnabled = true; buttonDownload.IsEnabled = true;
progressbarDownload.Visibility = Visibility.Collapsed; progressbarDownload.Visibility = Visibility.Collapsed;
GlobalVars.isDownloading = false;
})); }));
if (e.Error == null) if (e.Error == null)
{ {
@ -439,7 +420,7 @@ namespace EnvyUpdate
WindowStyle = ProcessWindowStyle.Minimized, WindowStyle = ProcessWindowStyle.Minimized,
WorkingDirectory = destinationDir, WorkingDirectory = destinationDir,
FileName = sevenZipPath, FileName = sevenZipPath,
Arguments = "x -aoa -y \"" + filePath + "\" Display.Driver Display.Nview Display.Optimus HDAudio MSVCR NVI2 NVPCF PhysX PPC ShieldWirelessController EULA.txt ListDevices.txt setup.cfg setup.exe" Arguments = "x -aoa -y " + filePath + " Display.Driver Display.Nview Display.Optimus HDAudio MSVCR NVI2 NVPCF PhysX PPC ShieldWirelessController EULA.txt ListDevices.txt setup.cfg setup.exe"
}; };
process.EnableRaisingEvents = true; process.EnableRaisingEvents = true;
process.StartInfo = startInfo; process.StartInfo = startInfo;

View file

@ -271,7 +271,7 @@
<Version>5.7.0</Version> <Version>5.7.0</Version>
</PackageReference> </PackageReference>
<PackageReference Include="Fody"> <PackageReference Include="Fody">
<Version>6.8.1</Version> <Version>6.8.0</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
@ -282,7 +282,7 @@
<Version>2.2.0</Version> <Version>2.2.0</Version>
</PackageReference> </PackageReference>
<PackageReference Include="System.Text.Json"> <PackageReference Include="System.Text.Json">
<Version>8.0.4</Version> <Version>7.0.3</Version>
</PackageReference> </PackageReference>
<PackageReference Include="WPF-UI"> <PackageReference Include="WPF-UI">
<Version>2.1.0</Version> <Version>2.1.0</Version>

View file

@ -19,7 +19,5 @@ namespace EnvyUpdate
public static readonly string useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:115.0) Gecko/20100101 Firefox/115.0"; public static readonly string useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:115.0) Gecko/20100101 Firefox/115.0";
public static bool useAppdata = false; public static bool useAppdata = false;
public static bool hasWrite = true; public static bool hasWrite = true;
public static bool autoDownload = false;
public static bool isDownloading = false;
} }
} }

View file

@ -11,7 +11,7 @@
ExtendsContentIntoTitleBar="True" ExtendsContentIntoTitleBar="True"
WindowBackdropType="Mica" WindowBackdropType="Mica"
Title="EnvyUpdate" MinHeight="500" Height="550" MinWidth="700" Width="750" Icon="icon.ico" StateChanged="Window_StateChanged" Closing="Window_Closing" ResizeMode="CanMinimize" WindowStyle="None"> Title="EnvyUpdate" MinHeight="500" Height="500" MinWidth="600" Width="600" Icon="icon.ico" StateChanged="Window_StateChanged" Closing="Window_Closing" ResizeMode="CanMinimize" WindowStyle="None">
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />

View file

@ -102,25 +102,8 @@ namespace EnvyUpdate
GlobalVars.startMinimized = true; GlobalVars.startMinimized = true;
} }
//Check for old unfinished downloads
string[] leftovers = Directory.GetFiles(GlobalVars.directoryOfExe, "*-nvidia-installer.exe.downloading");
if (leftovers.Length > 0)
{
foreach (string leftover in leftovers)
{
Debug.LogToFile("INFO Deleting leftover download " + leftover);
File.Delete(leftover);
}
}
GlobalVars.isMobile = Util.IsMobile(); GlobalVars.isMobile = Util.IsMobile();
Debug.LogToFile("INFO Mobile: " + GlobalVars.isMobile); Debug.LogToFile("INFO Mobile: " + GlobalVars.isMobile);
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "autodl.envy")))
{
Debug.LogToFile("INFO Auto-download is enabled.");
GlobalVars.autoDownload = true;
}
} }
private void Window_StateChanged(object sender, EventArgs e) private void Window_StateChanged(object sender, EventArgs e)
{ {

View file

@ -6,16 +6,9 @@ namespace EnvyUpdate
{ {
public static void ShowDrivUpdatePopup() public static void ShowDrivUpdatePopup()
{ {
try var toast = new ToastContentBuilder();
{ toast.AddText(Properties.Resources.update_popup_message);
var toast = new ToastContentBuilder(); toast.Show();
toast.AddText(Properties.Resources.update_popup_message);
toast.Show();
}
catch (System.Exception ex)
{
Debug.LogToFile("WARN Could not show notification. Error: " + ex.Message);
}
} }
} }
} }

View file

@ -49,5 +49,5 @@ using System.Windows;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.6")] [assembly: AssemblyVersion("3.2")]
[assembly: AssemblyFileVersion("3.6")] [assembly: AssemblyFileVersion("3.2")]

View file

@ -105,24 +105,6 @@ namespace EnvyUpdate.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to A download process is already running!.
/// </summary>
public static string info_download_running {
get {
return ResourceManager.GetString("info_download_running", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Download running.
/// </summary>
public static string info_download_running_title {
get {
return ResourceManager.GetString("info_download_running_title", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Driver installer successfully downloaded.. /// Looks up a localized string similar to Driver installer successfully downloaded..
/// </summary> /// </summary>
@ -285,15 +267,6 @@ namespace EnvyUpdate.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to Download updates automatically.
/// </summary>
public static string ui_enable_autodownload {
get {
return ResourceManager.GetString("ui_enable_autodownload", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Enable logging to file. /// Looks up a localized string similar to Enable logging to file.
/// </summary> /// </summary>

View file

@ -132,12 +132,6 @@
<data name="info_download_error_title" xml:space="preserve"> <data name="info_download_error_title" xml:space="preserve">
<value>Fehler beim Herunterladen</value> <value>Fehler beim Herunterladen</value>
</data> </data>
<data name="info_download_running" xml:space="preserve">
<value>Ein Downloadvorgang läuft bereits!</value>
</data>
<data name="info_download_running_title" xml:space="preserve">
<value>Download läuft</value>
</data>
<data name="info_download_success" xml:space="preserve"> <data name="info_download_success" xml:space="preserve">
<value>Treiber-Installationsdatei erfolgreich heruntergeladen.</value> <value>Treiber-Installationsdatei erfolgreich heruntergeladen.</value>
</data> </data>
@ -192,9 +186,6 @@
<data name="ui_enable_appdata" xml:space="preserve"> <data name="ui_enable_appdata" xml:space="preserve">
<value>Programmdaten in AppData speichern</value> <value>Programmdaten in AppData speichern</value>
</data> </data>
<data name="ui_enable_autodownload" xml:space="preserve">
<value>Updates automatisch herunterladen</value>
</data>
<data name="ui_enable_logging" xml:space="preserve"> <data name="ui_enable_logging" xml:space="preserve">
<value>Programm-Log in Datei schreiben</value> <value>Programm-Log in Datei schreiben</value>
</data> </data>

View file

@ -132,12 +132,6 @@
<data name="info_download_error_title" xml:space="preserve"> <data name="info_download_error_title" xml:space="preserve">
<value>Error while downloading</value> <value>Error while downloading</value>
</data> </data>
<data name="info_download_running" xml:space="preserve">
<value>A download process is already running!</value>
</data>
<data name="info_download_running_title" xml:space="preserve">
<value>Download running</value>
</data>
<data name="info_download_success" xml:space="preserve"> <data name="info_download_success" xml:space="preserve">
<value>Driver installer successfully downloaded.</value> <value>Driver installer successfully downloaded.</value>
</data> </data>
@ -192,9 +186,6 @@
<data name="ui_enable_appdata" xml:space="preserve"> <data name="ui_enable_appdata" xml:space="preserve">
<value>Save files to AppData</value> <value>Save files to AppData</value>
</data> </data>
<data name="ui_enable_autodownload" xml:space="preserve">
<value>Download updates automatically</value>
</data>
<data name="ui_enable_logging" xml:space="preserve"> <data name="ui_enable_logging" xml:space="preserve">
<value>Enable logging to file</value> <value>Enable logging to file</value>
</data> </data>

View file

@ -35,19 +35,9 @@
<ui:ToggleSwitch x:Name="chkLog" Checked="chkLog_Checked" Unchecked="chkLog_Unchecked"/> <ui:ToggleSwitch x:Name="chkLog" Checked="chkLog_Checked" Unchecked="chkLog_Unchecked"/>
</ui:CardControl> </ui:CardControl>
<Grid Grid.Row="3"> <ui:CardControl Grid.Row="3" Margin="0,12,0,0" Icon="Folder24" Header="{x:Static p:Resources.ui_enable_appdata}" >
<Grid.ColumnDefinitions> <ui:ToggleSwitch x:Name="chkAppdata" Checked="chkAppdata_Checked" Unchecked="chkAppdata_Unchecked"/>
<ColumnDefinition Width="1*"/> </ui:CardControl>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ui:CardControl Grid.Column="0" Margin="0,12,0,0" Icon="Folder24" Header="{x:Static p:Resources.ui_enable_appdata}" VerticalAlignment="Top" >
<ui:ToggleSwitch x:Name="chkAppdata" Checked="chkAppdata_Checked" Unchecked="chkAppdata_Unchecked"/>
</ui:CardControl>
<ui:CardControl Grid.Column="2" Margin="0,12,0,0" Icon="ArrowDownload24" Header="{x:Static p:Resources.ui_enable_autodownload}" VerticalAlignment="Top">
<ui:ToggleSwitch x:Name="chkAutodl" Checked="chkAutodl_Checked" Unchecked="chkAutodl_Unchecked"/>
</ui:CardControl>
</Grid>
<Label Grid.Row="4" Content="{x:Static p:Resources.ui_licenses}" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="Bold"/> <Label Grid.Row="4" Content="{x:Static p:Resources.ui_licenses}" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="Bold"/>
<ScrollViewer Grid.Row="5" MaxHeight="700" HorizontalAlignment="Stretch"> <ScrollViewer Grid.Row="5" MaxHeight="700" HorizontalAlignment="Stretch">

View file

@ -30,16 +30,6 @@ namespace EnvyUpdate
if (!GlobalVars.hasWrite) if (!GlobalVars.hasWrite)
chkAppdata.IsEnabled = false; chkAppdata.IsEnabled = false;
if (GlobalVars.autoDownload)
chkAutodl.IsChecked = true;
if (GlobalVars.isDownloading)
{
chkAppdata.IsEnabled = false;
}
else
chkAppdata.IsEnabled = true;
textBoxLicEnvyupdate.Text = Properties.Licenses.EnvyUpdate; textBoxLicEnvyupdate.Text = Properties.Licenses.EnvyUpdate;
textBoxLicFody.Text = Properties.Licenses.Fody; textBoxLicFody.Text = Properties.Licenses.Fody;
textBoxLicCostura.Text = Properties.Licenses.CosturaFody; textBoxLicCostura.Text = Properties.Licenses.CosturaFody;
@ -101,23 +91,5 @@ namespace EnvyUpdate
Debug.LogToFile("INFO Switched to EXE directory."); Debug.LogToFile("INFO Switched to EXE directory.");
} }
private void chkAutodl_Checked(object sender, RoutedEventArgs e)
{
GlobalVars.autoDownload = true;
if (!File.Exists(Path.Combine(GlobalVars.saveDirectory, "autodl.envy")))
{
File.Create(Path.Combine(GlobalVars.saveDirectory, "autodl.envy"));
}
}
private void chkAutodl_Unchecked(object sender, RoutedEventArgs e)
{
GlobalVars.autoDownload = false;
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "autodl.envy")))
{
File.Delete(Path.Combine(GlobalVars.saveDirectory, "autodl.envy"));
}
}
} }
} }

View file

@ -337,7 +337,7 @@ namespace EnvyUpdate
{ {
GPUName = obj["VideoProcessor"].ToString().ToLower(); GPUName = obj["VideoProcessor"].ToString().ToLower();
// Remove any 3GB, 6GB or similar from name. We don't need to know the VRAM to get results. // Remove any 3GB, 6GB or similar from name. We don't need to know the VRAM to get results.
GPUName = Regex.Match(GPUName, "(geforce )((.t.? )|(mx ))?\\w*\\d*( ti)?").Value; GPUName = Regex.Match(GPUName, "(geforce )((.tx )|(mx))?\\w*\\d*( ti)?").Value;
} }
else else
GPUName = obj["VideoProcessor"].ToString(); GPUName = obj["VideoProcessor"].ToString();

View file

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2019-2024 fyr77 Copyright (c) 2019-2023 Jakob Senkl
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -1,18 +1,21 @@
# Important Information ![Logo](https://github.com/fyr77/envyupdate/blob/master/res/banner_bg.png?raw=true)
## I am no longer working on this project and I am looking for a new maintainer. Please see [the corresponding issue](https://vcs.diluvian.cc/fyr77/EnvyUpdate/issues/53) for more details.
![Logo](https://vcs.diluvian.cc/fyr77/EnvyUpdate/raw/branch/master/res/banner.png)
# EnvyUpdate # EnvyUpdate
A small portable update checker application for Nvidia GPUs A small portable update checker application for Nvidia GPUs
![License](https://img.shields.io/github/license/fyr77/envyupdate?style=for-the-badge)
![Issues](https://img.shields.io/github/issues/fyr77/envyupdate?style=for-the-badge)
![Version](https://img.shields.io/github/v/release/fyr77/envyupdate?style=for-the-badge)
## How to use ## How to use
Download the latest release and run it. Windows SmartScreen Messages can be safely ignored. They only happen because this project is not digitally signed. Download the [latest release](https://github.com/fyr77/EnvyUpdate/releases/latest/download/EnvyUpdate.exe) (or as a [.zip](https://github.com/fyr77/EnvyUpdate/releases/latest/download/EnvyUpdate.zip)) and run it. Windows SmartScreen Messages can be safely ignored. They only happen because this project is not digitally signed.
Legacy 2.x versions (old UI, no automatic driver installation) will continue to be supported and fixed for the time being. Please see [the v2 branch](https://github.com/fyr77/EnvyUpdate/tree/v2) for these.
The application itself does not update itself. If you notice any bugs or issues, be sure to check for a new version on GitHub! The application itself does not update itself. If you notice any bugs or issues, be sure to check for a new version on GitHub!
Enabling Autostart will create a shortcut of EnvyUpdate in the Windows startup folder (shell:startup). Enabling Autostart will create a shortcut of EnvyUpdate in the Windows startup folder.
### Virus warnings ### Virus warnings
@ -30,11 +33,11 @@ If EnvyUpdate fails to write to the folder containing the exe file, this option
The application should be compatible with all Nvidia GeForce GPUs that have their drivers available on the nvidia.com download page and runs on Windows 10 and up. The application should be compatible with all Nvidia GeForce GPUs that have their drivers available on the nvidia.com download page and runs on Windows 10 and up.
It is tested with GeForce Series GPUs. Other series (e.g. Quadro) are unlikely to work and are not supported - if you have a Quadro card and are willing to implement support for them, feel free to reach out or create a PR. It is tested with GeForce Series GPUs. Generally others might work, but they are (currently) untested.
## Development ## Development
This application is currently unmaintained and developed by me (fyr77) alone in my free time. This application is currently maintained and developed by me (fyr77) alone in my free time.
I always try to implement critical fixes as fast as I can, but other features and minor bug fixes may take a few days or weeks to implement. I always try to implement critical fixes as fast as I can, but other features and minor bug fixes may take a few days or weeks to implement.
@ -51,7 +54,7 @@ EnvyUpdate is not a replacement for any of these tools. I will still try to impl
## Licenses ## Licenses
* This project: [MIT](https://https://vcs.diluvian.cc/fyr77/EnvyUpdate/blob/master/LICENSE) * This project: [MIT](https://github.com/fyr77/EnvyUpdate/blob/master/LICENSE)
* Fody (dependency of Costura.Fody): [MIT](https://github.com/Fody/Fody/blob/master/License.txt) * Fody (dependency of Costura.Fody): [MIT](https://github.com/Fody/Fody/blob/master/License.txt)
* Costura.Fody (for embedding DLLs into the main executable): [MIT](https://github.com/Fody/Costura/blob/develop/LICENSE) * Costura.Fody (for embedding DLLs into the main executable): [MIT](https://github.com/Fody/Costura/blob/develop/LICENSE)
* Resource Embedder: [MIT](https://www.nuget.org/packages/Resource.Embedder/) * Resource Embedder: [MIT](https://www.nuget.org/packages/Resource.Embedder/)