Compare commits

..

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

17 changed files with 95 additions and 331 deletions

View file

@ -77,11 +77,11 @@
</Grid>
<ui:CardControl Margin="0,12,0,0" Grid.Row="4" Icon="Color24" Header="Studio Driver">
<ui:ToggleSwitch x:Name="switchStudioDriver" Checked="switchStudioDriver_Checked" Unchecked="switchStudioDriver_Unchecked" />
<ui:ToggleSwitch x:Name="switchStudioDriver" IsChecked="False" Checked="switchStudioDriver_Checked" Unchecked="switchStudioDriver_Unchecked" />
</ui:CardControl>
<ui:CardControl Margin="0,12,0,0" Grid.Row="5" Icon="LightbulbFilament48" Header="{x:Static p:Resources.ui_autostart}">
<ui:ToggleSwitch x:Name="switchAutostart" Click="switchAutostart_Click" />
<ui:ToggleSwitch x:Name="switchAutostart" IsChecked="False" Click="switchAutostart_Click" />
</ui:CardControl>
</Grid>
<ui:Snackbar x:Name="snackbarInfo" Timeout="0"/>

View file

@ -112,10 +112,10 @@ namespace EnvyUpdate
switchStudioDriver.IsChecked = false;
}
if (File.Exists(Path.Combine(GlobalVars.saveDirectory,"skip.envy")))
if (File.Exists(GlobalVars.exedirectory + "skip.envy"))
{
Debug.LogToFile("INFO Found version skip config.");
skippedVer = File.ReadLines(Path.Combine(GlobalVars.saveDirectory, "skip.envy")).First();
skippedVer = File.ReadLines(GlobalVars.exedirectory + "skip.envy").First();
}
// This little bool check is necessary for debug fake mode.
@ -137,9 +137,9 @@ namespace EnvyUpdate
try
{
// disable SD and try with GRD
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
if (File.Exists(GlobalVars.exedirectory + "sd.envy"))
{
File.Delete(Path.Combine(GlobalVars.saveDirectory, "sd.envy"));
File.Delete(GlobalVars.exedirectory + "sd.envy");
}
gpuURL = Util.GetGpuUrl(); //try again with GRD
@ -210,15 +210,6 @@ namespace EnvyUpdate
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.");
Notify.ShowDrivUpdatePopup();
}
@ -235,15 +226,15 @@ namespace EnvyUpdate
{
Debug.LogToFile("INFO Skipped version is surpassed, deleting setting.");
skippedVer = null;
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "skip.envy")))
File.Delete(Path.Combine(GlobalVars.saveDirectory, "skip.envy"));
if (File.Exists(GlobalVars.exedirectory + "skip.envy"))
File.Delete(GlobalVars.exedirectory + "skip.envy");
buttonSkipVersion.ToolTip = Properties.Resources.ui_skipversion;
buttonSkipVersion.IsEnabled = true;
buttonSkipVersion.Visibility = Visibility.Visible;
}
// Check if update file already exists and display install button instead
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")))
if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")))
{
Debug.LogToFile("INFO Found downloaded driver installer, no need to redownload.");
buttonDownload.Visibility = Visibility.Collapsed;
@ -253,20 +244,20 @@ namespace EnvyUpdate
private void switchStudioDriver_Unchecked(object sender, RoutedEventArgs e)
{
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
if (File.Exists(GlobalVars.exedirectory + "sd.envy"))
{
Debug.LogToFile("INFO Switching to game ready driver.");
File.Delete(Path.Combine(GlobalVars.saveDirectory, "sd.envy"));
File.Delete(GlobalVars.exedirectory + "sd.envy");
Load();
}
}
private void switchStudioDriver_Checked(object sender, RoutedEventArgs e)
{
if (!File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
if (!File.Exists(GlobalVars.exedirectory + "sd.envy"))
{
Debug.LogToFile("INFO Switching to studio driver.");
File.Create(Path.Combine(GlobalVars.saveDirectory, "sd.envy")).Close();
File.Create(GlobalVars.exedirectory + "sd.envy").Close();
Load();
}
}
@ -281,7 +272,7 @@ namespace EnvyUpdate
if (switchAutostart.IsChecked == true)
{
Debug.LogToFile("INFO Creating autostart entry.");
Util.CreateShortcut("EnvyUpdate", Environment.GetFolderPath(Environment.SpecialFolder.Startup), GlobalVars.pathToAppExe, "NVidia Update Checker", "/minimize");
Util.CreateShortcut("EnvyUpdate", Environment.GetFolderPath(Environment.SpecialFolder.Startup), GlobalVars.exeloc, "NVidia Update Checker", "/minimize");
}
}
@ -289,7 +280,7 @@ namespace EnvyUpdate
{
Debug.LogToFile("INFO Skipping version.");
skippedVer = onlineDriv;
File.WriteAllText(Path.Combine(GlobalVars.saveDirectory, "skip.envy"), onlineDriv);
File.WriteAllText(GlobalVars.exedirectory + "skip.envy", onlineDriv);
buttonSkipVersion.IsEnabled = false;
buttonSkipVersion.ToolTip = Properties.Resources.ui_skipped;
MessageBox.Show(Properties.Resources.skip_confirm);
@ -348,22 +339,14 @@ namespace EnvyUpdate
}
private void buttonDownload_Click(object sender, RoutedEventArgs e)
{
if (GlobalVars.isDownloading)
{
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.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading")))
{
Debug.LogToFile("WARN Found previous unfinished download, retrying.");
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
}
Thread thread = new Thread(() => {
using (WebClient client = new WebClient())
@ -371,13 +354,12 @@ namespace EnvyUpdate
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"));
client.DownloadFileAsync(new Uri(Util.GetDirectDownload(gpuURL)), Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
}
});
thread.Start();
Debug.LogToFile("INFO Started installer download.");
}
}
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
@ -394,7 +376,6 @@ namespace EnvyUpdate
Application.Current.Dispatcher.Invoke(new Action(() => {
buttonDownload.IsEnabled = true;
progressbarDownload.Visibility = Visibility.Collapsed;
GlobalVars.isDownloading = false;
}));
if (e.Error == null)
{
@ -404,13 +385,13 @@ namespace EnvyUpdate
buttonInstall.Visibility = Visibility.Visible;
Debug.LogToFile("INFO Download successful.");
}));
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")))
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"));
File.Move(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"), Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"));
if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")))
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"));
File.Move(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"), Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"));
}
else
{
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
Application.Current.Dispatcher.Invoke(new Action(() => {
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Danger, Wpf.Ui.Common.SymbolRegular.ErrorCircle24, Properties.Resources.info_download_error, Properties.Resources.info_download_error_title);
Debug.LogToFile("INFO Download NOT successful. Error: " + e.Error.ToString());
@ -425,8 +406,8 @@ namespace EnvyUpdate
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Info, Wpf.Ui.Common.SymbolRegular.FolderZip24, Properties.Resources.info_extracting, Properties.Resources.info_extracting_title);
string filePath = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe");
string destinationDir = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted");
string filePath = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe");
string destinationDir = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted");
if (!Directory.Exists(destinationDir))
Directory.CreateDirectory(destinationDir);
@ -439,7 +420,7 @@ namespace EnvyUpdate
WindowStyle = ProcessWindowStyle.Minimized,
WorkingDirectory = destinationDir,
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.StartInfo = startInfo;
@ -449,13 +430,13 @@ namespace EnvyUpdate
private void ExtractionFinished(object sender, EventArgs e)
{
string extractedPath = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted");
string extractedPath = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted");
Application.Current.Dispatcher.Invoke(new Action(() => {
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Success, Wpf.Ui.Common.SymbolRegular.FolderZip24, Properties.Resources.info_extract_complete, Properties.Resources.info_extract_complete_title);
}));
Debug.LogToFile("INFO Extraction exited, deleting 7-zip executable.");
File.Delete(Path.Combine(GlobalVars.saveDirectory, "7zr.exe"));
File.Delete(Path.Combine(GlobalVars.exedirectory, "7zr.exe"));
Util.CleanInstallConfig(Path.Combine(extractedPath, "setup.cfg"));
@ -481,14 +462,13 @@ namespace EnvyUpdate
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Success, Wpf.Ui.Common.SymbolRegular.CheckmarkCircle24, Properties.Resources.info_install_complete, Properties.Resources.info_install_complete_title);
buttonInstall.IsEnabled = true;
buttonInstall.Visibility = Visibility.Collapsed;
buttonDownload.IsEnabled = true;
buttonDownload.Visibility = Visibility.Collapsed;
buttonDownload.Visibility = Visibility.Visible;
}));
Debug.LogToFile("INFO Driver setup complete. Cleaning up setup files.");
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"));
Directory.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted"), true);
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"));
Directory.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted"), true);
GlobalVars.isInstalling = false;
Application.Current.Dispatcher.Invoke(delegate
{

View file

@ -15,6 +15,9 @@ namespace EnvyUpdate
public static bool isVerbose = false;
#endif
public static string debugFile = Path.Combine(GlobalVars.exedirectory, "envyupdate.log");
public static int LoadFakeIDs(string idType)
{
/*
@ -49,12 +52,7 @@ namespace EnvyUpdate
public static void LogToFile(string content)
{
if (isVerbose)
{
if (GlobalVars.useAppdata)
File.AppendAllText(Path.Combine(GlobalVars.appdata, "envyupdate.log"), content + "\n");
else
File.AppendAllText(Path.Combine(GlobalVars.directoryOfExe, "envyupdate.log"), content + "\n");
}
System.IO.File.AppendAllText(Debug.debugFile, content + "\n");
}
}
}

View file

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

View file

@ -6,20 +6,14 @@ namespace EnvyUpdate
class GlobalVars
{
public static bool isMobile = false;
public static readonly string pathToAppExe = System.Reflection.Assembly.GetEntryAssembly().Location;
public static readonly string directoryOfExe = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
public static string saveDirectory = directoryOfExe;
public static readonly string exeloc = System.Reflection.Assembly.GetEntryAssembly().Location;
public static readonly string exedirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\";
public static readonly string startmenu = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);
public static readonly string legacyAppdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\";
public static readonly string appdata = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "EnvyUpdate_Data");
public static readonly string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\";
public static readonly string startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
public static bool monitoringInstall = false;
public static bool startMinimized = false;
public static bool isInstalling = false;
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 hasWrite = true;
public static bool autoDownload = false;
public static bool isDownloading = false;
}
}

View file

@ -11,7 +11,7 @@
ExtendsContentIntoTitleBar="True"
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.RowDefinitions>
<RowDefinition Height="Auto" />

View file

@ -28,22 +28,8 @@ namespace EnvyUpdate
// This is necessary, since .NET throws an exception if you check for a non-existant arg.
}
if (!Util.HasWritePermissions())
{
if (!Directory.Exists(GlobalVars.appdata))
Directory.CreateDirectory(GlobalVars.appdata);
GlobalVars.hasWrite = false;
}
if (Directory.Exists(GlobalVars.appdata))
{
GlobalVars.useAppdata = true;
GlobalVars.saveDirectory = GlobalVars.appdata;
}
// Check if Debug file exists
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log")))
if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log")))
{
Debug.isVerbose = true;
Debug.LogToFile("------");
@ -51,7 +37,6 @@ namespace EnvyUpdate
}
Debug.LogToFile("INFO Starting EnvyUpdate, version " + System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
Debug.LogToFile("INFO Save directory: " + GlobalVars.saveDirectory);
// Check if running on supported Windows version.
if (Environment.OSVersion.Version.Major < 10)
@ -75,9 +60,9 @@ namespace EnvyUpdate
SystemEvents.UserPreferenceChanged += AdjustTheme;
// Delete installed legacy versions, required for people upgrading from very old versions.
if (Directory.Exists(GlobalVars.legacyAppdata))
if (Directory.Exists(GlobalVars.appdata))
{
Debug.LogToFile("INFO Found legacy appdata installation, uninstalling.");
Debug.LogToFile("INFO Found old appdata installation, uninstalling.");
Util.UninstallAll();
}
@ -102,25 +87,8 @@ namespace EnvyUpdate
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();
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)
{

View file

@ -5,17 +5,10 @@ namespace EnvyUpdate
internal class Notify
{
public static void ShowDrivUpdatePopup()
{
try
{
var toast = new ToastContentBuilder();
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
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.6")]
[assembly: AssemblyFileVersion("3.6")]
[assembly: AssemblyVersion("3.1")]
[assembly: AssemblyFileVersion("3.1")]

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>
/// Looks up a localized string similar to Driver installer successfully downloaded..
/// </summary>
@ -276,24 +258,6 @@ namespace EnvyUpdate.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Save files to AppData.
/// </summary>
public static string ui_enable_appdata {
get {
return ResourceManager.GetString("ui_enable_appdata", resourceCulture);
}
}
/// <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>
/// Looks up a localized string similar to Enable logging to file.
/// </summary>

View file

@ -132,12 +132,6 @@
<data name="info_download_error_title" xml:space="preserve">
<value>Fehler beim Herunterladen</value>
</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">
<value>Treiber-Installationsdatei erfolgreich heruntergeladen.</value>
</data>
@ -189,12 +183,6 @@
<data name="ui_download" xml:space="preserve">
<value>Herunterladen</value>
</data>
<data name="ui_enable_appdata" xml:space="preserve">
<value>Programmdaten in AppData speichern</value>
</data>
<data name="ui_enable_autodownload" xml:space="preserve">
<value>Updates automatisch herunterladen</value>
</data>
<data name="ui_enable_logging" xml:space="preserve">
<value>Programm-Log in Datei schreiben</value>
</data>

View file

@ -132,12 +132,6 @@
<data name="info_download_error_title" xml:space="preserve">
<value>Error while downloading</value>
</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">
<value>Driver installer successfully downloaded.</value>
</data>
@ -189,12 +183,6 @@
<data name="ui_download" xml:space="preserve">
<value>Download</value>
</data>
<data name="ui_enable_appdata" xml:space="preserve">
<value>Save files to AppData</value>
</data>
<data name="ui_enable_autodownload" xml:space="preserve">
<value>Download updates automatically</value>
</data>
<data name="ui_enable_logging" xml:space="preserve">
<value>Enable logging to file</value>
</data>

View file

@ -16,7 +16,6 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
@ -35,22 +34,8 @@
<ui:ToggleSwitch x:Name="chkLog" Checked="chkLog_Checked" Unchecked="chkLog_Unchecked"/>
</ui:CardControl>
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<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"/>
<ScrollViewer Grid.Row="5" MaxHeight="700" HorizontalAlignment="Stretch">
<Label Grid.Row="3" Content="{x:Static p:Resources.ui_licenses}" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="Bold"/>
<ScrollViewer Grid.Row="4" MaxHeight="700" HorizontalAlignment="Stretch">
<StackPanel>
<Expander Header="EnvyUpdate">
<TextBox x:Name="textBoxLicEnvyupdate" IsReadOnly="True" TextWrapping="Wrap"/>

View file

@ -21,25 +21,9 @@ namespace EnvyUpdate
if (GlobalVars.monitoringInstall)
textBlockVer.FontStyle = FontStyles.Italic;
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log")) || File.Exists(Path.Combine(GlobalVars.appdata, "envyupdate.log")))
if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log")))
chkLog.IsChecked = true;
if (GlobalVars.useAppdata)
chkAppdata.IsChecked = true;
if (!GlobalVars.hasWrite)
chkAppdata.IsEnabled = false;
if (GlobalVars.autoDownload)
chkAutodl.IsChecked = true;
if (GlobalVars.isDownloading)
{
chkAppdata.IsEnabled = false;
}
else
chkAppdata.IsEnabled = true;
textBoxLicEnvyupdate.Text = Properties.Licenses.EnvyUpdate;
textBoxLicFody.Text = Properties.Licenses.Fody;
textBoxLicCostura.Text = Properties.Licenses.CosturaFody;
@ -70,54 +54,10 @@ namespace EnvyUpdate
if (Debug.isVerbose)
{
Debug.LogToFile("INFO Disabled logging to file.");
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log")))
File.Move(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log"), Path.Combine(GlobalVars.saveDirectory, "envyupdate." + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log"));
if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log")))
File.Move(Path.Combine(GlobalVars.exedirectory, "envyupdate.log"), Path.Combine(GlobalVars.exedirectory, "envyupdate." + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log"));
Debug.isVerbose = false;
}
}
private void chkAppdata_Checked(object sender, RoutedEventArgs e)
{
if (!Directory.Exists(GlobalVars.appdata))
Directory.CreateDirectory(GlobalVars.appdata);
GlobalVars.useAppdata = true;
GlobalVars.saveDirectory = GlobalVars.appdata;
Util.MoveFilesToAppdata();
Debug.LogToFile("INFO Switched to AppData directory.");
}
private void chkAppdata_Unchecked(object sender, RoutedEventArgs e)
{
GlobalVars.useAppdata = false;
GlobalVars.saveDirectory = GlobalVars.directoryOfExe;
if (Directory.Exists(GlobalVars.appdata))
{
Util.MoveFilesToExe();
Directory.Delete(GlobalVars.appdata, true);
}
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

@ -1,5 +1,4 @@
using IWshRuntimeLibrary;
using Microsoft.Build.Framework.XamlTypes;
using Microsoft.Win32;
using System;
using System.Diagnostics;
@ -131,11 +130,13 @@ namespace EnvyUpdate
/// </summary>
public static void SelfDelete()
{
string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\";
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
WorkingDirectory = GlobalVars.legacyAppdata,
WorkingDirectory = appdata,
FileName = "cmd.exe",
Arguments = "/C timeout 5 && del EnvyUpdate.exe"
};
@ -337,7 +338,7 @@ namespace EnvyUpdate
{
GPUName = obj["VideoProcessor"].ToString().ToLower();
// 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
GPUName = obj["VideoProcessor"].ToString();
@ -432,7 +433,7 @@ namespace EnvyUpdate
*/
//TODO: find way to differentiate between driver types
if (System.IO.File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
if (System.IO.File.Exists(GlobalVars.exedirectory + "sd.envy"))
return 18;
else
return 1;
@ -509,27 +510,27 @@ namespace EnvyUpdate
public static void UninstallAll()
{
if (System.IO.File.Exists(Path.Combine(GlobalVars.startup, "\\EnvyUpdate.lnk")))
if (System.IO.File.Exists(GlobalVars.startup + "\\EnvyUpdate.lnk"))
{
Debug.LogToFile("INFO Deleted startup entry.");
System.IO.File.Delete(Path.Combine(GlobalVars.startup, "\\EnvyUpdate.lnk"));
System.IO.File.Delete(GlobalVars.startup + "\\EnvyUpdate.lnk");
}
if (System.IO.File.Exists(Path.Combine(GlobalVars.startmenu, "\\EnvyUpdate.lnk")))
if (System.IO.File.Exists(GlobalVars.startmenu + "\\EnvyUpdate.lnk"))
{
Debug.LogToFile("INFO Deleted start menu entry.");
System.IO.File.Delete(Path.Combine(GlobalVars.startmenu, "\\EnvyUpdate.lnk"));
System.IO.File.Delete(GlobalVars.startmenu + "\\EnvyUpdate.lnk");
}
if ((GlobalVars.saveDirectory == GlobalVars.legacyAppdata) && System.IO.File.Exists(Path.Combine(GlobalVars.legacyAppdata, "EnvyUpdate.exe")))
if ((GlobalVars.exedirectory == GlobalVars.appdata) && System.IO.File.Exists(GlobalVars.appdata + "EnvyUpdate.exe"))
{
Debug.LogToFile("INFO Deleting EnvyUpdate appdata and self.");
MessageBox.Show(Properties.Resources.uninstall_legacy_message);
Util.SelfDelete();
}
else if (Directory.Exists(GlobalVars.legacyAppdata))
else if (Directory.Exists(GlobalVars.appdata))
{
Debug.LogToFile("INFO Deleting EnvyUpdate appdata folder");
Directory.Delete(GlobalVars.legacyAppdata, true);
Directory.Delete(GlobalVars.appdata, true);
}
}
@ -578,7 +579,7 @@ namespace EnvyUpdate
}
else
{
path = Path.Combine(GlobalVars.saveDirectory, "7zr.exe");
path = Path.Combine(GlobalVars.exedirectory, "7zr.exe");
using (WebClient client = new WebClient())
{
client.Headers["User-Agent"] = GlobalVars.useragent;
@ -663,37 +664,5 @@ namespace EnvyUpdate
}
return null;
}
public static bool HasWritePermissions()
{
try
{
System.IO.File.Create(Path.Combine(GlobalVars.saveDirectory, "writeable.envy")).Close();
System.IO.File.Delete(Path.Combine(GlobalVars.saveDirectory, "writeable.envy"));
return true;
}
catch (Exception)
{
return false;
}
}
public static void MoveFilesToAppdata()
{
string[] envyFiles = Directory.GetFiles(GlobalVars.directoryOfExe, "*.envy");
foreach (var item in envyFiles)
System.IO.File.Move(item, Path.Combine(GlobalVars.appdata, Path.GetFileName(item)));
if (System.IO.File.Exists(Path.Combine(GlobalVars.directoryOfExe, "envyupdate.log")))
System.IO.File.Move(Path.Combine(GlobalVars.directoryOfExe, "envyupdate.log"), Path.Combine(GlobalVars.appdata, "envyupdate.log"));
}
public static void MoveFilesToExe()
{
string[] envyFiles = Directory.GetFiles(GlobalVars.appdata, "*.envy");
foreach (var item in envyFiles)
System.IO.File.Move(item, Path.Combine(GlobalVars.directoryOfExe, Path.GetFileName(item)));
if (System.IO.File.Exists(Path.Combine(GlobalVars.appdata, "envyupdate.log")))
System.IO.File.Move(Path.Combine(GlobalVars.appdata, "envyupdate.log"), Path.Combine(GlobalVars.directoryOfExe, "envyupdate.log"));
}
}
}

View file

@ -1,6 +1,6 @@
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
of this software and associated documentation files (the "Software"), to deal

View file

@ -1,18 +1,21 @@
# Important Information
## 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)
![Logo](https://github.com/fyr77/envyupdate/blob/master/res/banner_bg.png?raw=true)
# EnvyUpdate
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
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!
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
@ -20,21 +23,15 @@ Sometimes EnvyUpdate is flagged as a virus by Windows Defender or other antiviru
For extracting the driver installer 7-Zip is downloaded if it cannot be found on the user's system. This may also trigger antivirus warnings, but is necessary for the automatic driver installation to work.
### Using AppData for configuration files
Starting with 3.2, EnvyUpdate supports saving its configuration files to AppData/Roaming instead of saving it next to the main exe file. You can enable it in the settings of the application.
If EnvyUpdate fails to write to the folder containing the exe file, this option will be enabled automatically.
## Compatibility
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
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.
@ -51,7 +48,7 @@ EnvyUpdate is not a replacement for any of these tools. I will still try to impl
## 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)
* 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/)