Compare commits
31 commits
Author | SHA1 | Date | |
---|---|---|---|
84dc1367d8 | |||
18816f3fbe | |||
625e509ede | |||
0a5227b071 | |||
c46294b46b | |||
672449fb3e | |||
09730bfbaf | |||
b019023344 | |||
ee6489e090 | |||
a4a97f7b99 | |||
76425a3c50 | |||
9eba20f28a | |||
a271150b0c | |||
bbe0e8dde9 | |||
48bb49671a | |||
6a97161ddd | |||
1aa93e2267 | |||
8ce6a92146 | |||
19cf5fb38e | |||
b9e7aac55f | |||
3f925ee17a | |||
9bd5cc3d88 | |||
b7590538f0 | |||
44c0e0ce91 | |||
3231cd4db2 | |||
3855076457 | |||
|
657ebb0d5f | ||
aeaae1f827 | |||
a87a6deab4 | |||
babc550b6d | |||
e932255f59 |
17 changed files with 329 additions and 93 deletions
|
@ -77,11 +77,11 @@
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<ui:CardControl Margin="0,12,0,0" Grid.Row="4" Icon="Color24" Header="Studio Driver">
|
<ui:CardControl Margin="0,12,0,0" Grid.Row="4" Icon="Color24" Header="Studio Driver">
|
||||||
<ui:ToggleSwitch x:Name="switchStudioDriver" IsChecked="False" Checked="switchStudioDriver_Checked" Unchecked="switchStudioDriver_Unchecked" />
|
<ui:ToggleSwitch x:Name="switchStudioDriver" Checked="switchStudioDriver_Checked" Unchecked="switchStudioDriver_Unchecked" />
|
||||||
</ui:CardControl>
|
</ui:CardControl>
|
||||||
|
|
||||||
<ui:CardControl Margin="0,12,0,0" Grid.Row="5" Icon="LightbulbFilament48" Header="{x:Static p:Resources.ui_autostart}">
|
<ui:CardControl Margin="0,12,0,0" Grid.Row="5" Icon="LightbulbFilament48" Header="{x:Static p:Resources.ui_autostart}">
|
||||||
<ui:ToggleSwitch x:Name="switchAutostart" IsChecked="False" Click="switchAutostart_Click" />
|
<ui:ToggleSwitch x:Name="switchAutostart" Click="switchAutostart_Click" />
|
||||||
</ui:CardControl>
|
</ui:CardControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
<ui:Snackbar x:Name="snackbarInfo" Timeout="0"/>
|
<ui:Snackbar x:Name="snackbarInfo" Timeout="0"/>
|
||||||
|
|
|
@ -112,10 +112,10 @@ namespace EnvyUpdate
|
||||||
switchStudioDriver.IsChecked = false;
|
switchStudioDriver.IsChecked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (File.Exists(GlobalVars.exedirectory + "skip.envy"))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory,"skip.envy")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Found version skip config.");
|
Debug.LogToFile("INFO Found version skip config.");
|
||||||
skippedVer = File.ReadLines(GlobalVars.exedirectory + "skip.envy").First();
|
skippedVer = File.ReadLines(Path.Combine(GlobalVars.saveDirectory, "skip.envy")).First();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This little bool check is necessary for debug fake mode.
|
// This little bool check is necessary for debug fake mode.
|
||||||
|
@ -137,9 +137,9 @@ namespace EnvyUpdate
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// disable SD and try with GRD
|
// disable SD and try with GRD
|
||||||
if (File.Exists(GlobalVars.exedirectory + "sd.envy"))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
|
||||||
{
|
{
|
||||||
File.Delete(GlobalVars.exedirectory + "sd.envy");
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, "sd.envy"));
|
||||||
}
|
}
|
||||||
|
|
||||||
gpuURL = Util.GetGpuUrl(); //try again with GRD
|
gpuURL = Util.GetGpuUrl(); //try again with GRD
|
||||||
|
@ -210,6 +210,15 @@ 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();
|
||||||
}
|
}
|
||||||
|
@ -226,15 +235,15 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Skipped version is surpassed, deleting setting.");
|
Debug.LogToFile("INFO Skipped version is surpassed, deleting setting.");
|
||||||
skippedVer = null;
|
skippedVer = null;
|
||||||
if (File.Exists(GlobalVars.exedirectory + "skip.envy"))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "skip.envy")))
|
||||||
File.Delete(GlobalVars.exedirectory + "skip.envy");
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, "skip.envy"));
|
||||||
buttonSkipVersion.ToolTip = Properties.Resources.ui_skipversion;
|
buttonSkipVersion.ToolTip = Properties.Resources.ui_skipversion;
|
||||||
buttonSkipVersion.IsEnabled = true;
|
buttonSkipVersion.IsEnabled = true;
|
||||||
buttonSkipVersion.Visibility = Visibility.Visible;
|
buttonSkipVersion.Visibility = Visibility.Visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if update file already exists and display install button instead
|
// Check if update file already exists and display install button instead
|
||||||
if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Found downloaded driver installer, no need to redownload.");
|
Debug.LogToFile("INFO Found downloaded driver installer, no need to redownload.");
|
||||||
buttonDownload.Visibility = Visibility.Collapsed;
|
buttonDownload.Visibility = Visibility.Collapsed;
|
||||||
|
@ -244,20 +253,20 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
private void switchStudioDriver_Unchecked(object sender, RoutedEventArgs e)
|
private void switchStudioDriver_Unchecked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (File.Exists(GlobalVars.exedirectory + "sd.envy"))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Switching to game ready driver.");
|
Debug.LogToFile("INFO Switching to game ready driver.");
|
||||||
File.Delete(GlobalVars.exedirectory + "sd.envy");
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, "sd.envy"));
|
||||||
Load();
|
Load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void switchStudioDriver_Checked(object sender, RoutedEventArgs e)
|
private void switchStudioDriver_Checked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (!File.Exists(GlobalVars.exedirectory + "sd.envy"))
|
if (!File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Switching to studio driver.");
|
Debug.LogToFile("INFO Switching to studio driver.");
|
||||||
File.Create(GlobalVars.exedirectory + "sd.envy").Close();
|
File.Create(Path.Combine(GlobalVars.saveDirectory, "sd.envy")).Close();
|
||||||
Load();
|
Load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,7 +281,7 @@ namespace EnvyUpdate
|
||||||
if (switchAutostart.IsChecked == true)
|
if (switchAutostart.IsChecked == true)
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Creating autostart entry.");
|
Debug.LogToFile("INFO Creating autostart entry.");
|
||||||
Util.CreateShortcut("EnvyUpdate", Environment.GetFolderPath(Environment.SpecialFolder.Startup), GlobalVars.exeloc, "NVidia Update Checker", "/minimize");
|
Util.CreateShortcut("EnvyUpdate", Environment.GetFolderPath(Environment.SpecialFolder.Startup), GlobalVars.pathToAppExe, "NVidia Update Checker", "/minimize");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,7 +289,7 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Skipping version.");
|
Debug.LogToFile("INFO Skipping version.");
|
||||||
skippedVer = onlineDriv;
|
skippedVer = onlineDriv;
|
||||||
File.WriteAllText(GlobalVars.exedirectory + "skip.envy", onlineDriv);
|
File.WriteAllText(Path.Combine(GlobalVars.saveDirectory, "skip.envy"), onlineDriv);
|
||||||
buttonSkipVersion.IsEnabled = false;
|
buttonSkipVersion.IsEnabled = false;
|
||||||
buttonSkipVersion.ToolTip = Properties.Resources.ui_skipped;
|
buttonSkipVersion.ToolTip = Properties.Resources.ui_skipped;
|
||||||
MessageBox.Show(Properties.Resources.skip_confirm);
|
MessageBox.Show(Properties.Resources.skip_confirm);
|
||||||
|
@ -340,25 +349,34 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
private void buttonDownload_Click(object sender, RoutedEventArgs e)
|
private void buttonDownload_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
progressbarDownload.Visibility = Visibility.Visible;
|
if (GlobalVars.isDownloading)
|
||||||
buttonDownload.IsEnabled = false;
|
|
||||||
|
|
||||||
if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading")))
|
|
||||||
{
|
{
|
||||||
Debug.LogToFile("WARN Found previous unfinished download, retrying.");
|
Debug.LogToFile("WARN A download is already running.");
|
||||||
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
|
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Danger, Wpf.Ui.Common.SymbolRegular.ErrorCircle24, Properties.Resources.info_download_running, Properties.Resources.info_download_running_title);
|
||||||
}
|
}
|
||||||
Thread thread = new Thread(() => {
|
else
|
||||||
using (WebClient client = new WebClient())
|
{
|
||||||
|
progressbarDownload.Visibility = Visibility.Visible;
|
||||||
|
buttonDownload.IsEnabled = false;
|
||||||
|
GlobalVars.isDownloading = true;
|
||||||
|
|
||||||
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading")))
|
||||||
{
|
{
|
||||||
client.Headers["User-Agent"] = GlobalVars.useragent;
|
Debug.LogToFile("WARN Found previous unfinished download, retrying.");
|
||||||
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
|
||||||
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
|
|
||||||
client.DownloadFileAsync(new Uri(Util.GetDirectDownload(gpuURL)), Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
|
|
||||||
}
|
}
|
||||||
});
|
Thread thread = new Thread(() => {
|
||||||
thread.Start();
|
using (WebClient client = new WebClient())
|
||||||
Debug.LogToFile("INFO Started installer download.");
|
{
|
||||||
|
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)
|
||||||
|
@ -376,6 +394,7 @@ 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)
|
||||||
{
|
{
|
||||||
|
@ -385,13 +404,13 @@ namespace EnvyUpdate
|
||||||
buttonInstall.Visibility = Visibility.Visible;
|
buttonInstall.Visibility = Visibility.Visible;
|
||||||
Debug.LogToFile("INFO Download successful.");
|
Debug.LogToFile("INFO Download successful.");
|
||||||
}));
|
}));
|
||||||
if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")))
|
||||||
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"));
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"));
|
||||||
File.Move(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"), Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"));
|
File.Move(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"), Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"));
|
||||||
Application.Current.Dispatcher.Invoke(new Action(() => {
|
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);
|
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());
|
Debug.LogToFile("INFO Download NOT successful. Error: " + e.Error.ToString());
|
||||||
|
@ -406,8 +425,8 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Info, Wpf.Ui.Common.SymbolRegular.FolderZip24, Properties.Resources.info_extracting, Properties.Resources.info_extracting_title);
|
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.exedirectory, onlineDriv + "-nvidia-installer.exe");
|
string filePath = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe");
|
||||||
string destinationDir = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted");
|
string destinationDir = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted");
|
||||||
|
|
||||||
if (!Directory.Exists(destinationDir))
|
if (!Directory.Exists(destinationDir))
|
||||||
Directory.CreateDirectory(destinationDir);
|
Directory.CreateDirectory(destinationDir);
|
||||||
|
@ -420,7 +439,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;
|
||||||
|
@ -430,13 +449,13 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
private void ExtractionFinished(object sender, EventArgs e)
|
private void ExtractionFinished(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string extractedPath = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted");
|
string extractedPath = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted");
|
||||||
Application.Current.Dispatcher.Invoke(new Action(() => {
|
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);
|
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.");
|
Debug.LogToFile("INFO Extraction exited, deleting 7-zip executable.");
|
||||||
|
|
||||||
File.Delete(Path.Combine(GlobalVars.exedirectory, "7zr.exe"));
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, "7zr.exe"));
|
||||||
|
|
||||||
Util.CleanInstallConfig(Path.Combine(extractedPath, "setup.cfg"));
|
Util.CleanInstallConfig(Path.Combine(extractedPath, "setup.cfg"));
|
||||||
|
|
||||||
|
@ -462,13 +481,14 @@ namespace EnvyUpdate
|
||||||
ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Success, Wpf.Ui.Common.SymbolRegular.CheckmarkCircle24, Properties.Resources.info_install_complete, Properties.Resources.info_install_complete_title);
|
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.IsEnabled = true;
|
||||||
buttonInstall.Visibility = Visibility.Collapsed;
|
buttonInstall.Visibility = Visibility.Collapsed;
|
||||||
buttonDownload.Visibility = Visibility.Visible;
|
buttonDownload.IsEnabled = true;
|
||||||
|
buttonDownload.Visibility = Visibility.Collapsed;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
Debug.LogToFile("INFO Driver setup complete. Cleaning up setup files.");
|
Debug.LogToFile("INFO Driver setup complete. Cleaning up setup files.");
|
||||||
|
|
||||||
File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"));
|
File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"));
|
||||||
Directory.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted"), true);
|
Directory.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted"), true);
|
||||||
GlobalVars.isInstalling = false;
|
GlobalVars.isInstalling = false;
|
||||||
Application.Current.Dispatcher.Invoke(delegate
|
Application.Current.Dispatcher.Invoke(delegate
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,9 +15,6 @@ namespace EnvyUpdate
|
||||||
public static bool isVerbose = false;
|
public static bool isVerbose = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
public static string debugFile = Path.Combine(GlobalVars.exedirectory, "envyupdate.log");
|
|
||||||
|
|
||||||
public static int LoadFakeIDs(string idType)
|
public static int LoadFakeIDs(string idType)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -52,7 +49,12 @@ namespace EnvyUpdate
|
||||||
public static void LogToFile(string content)
|
public static void LogToFile(string content)
|
||||||
{
|
{
|
||||||
if (isVerbose)
|
if (isVerbose)
|
||||||
System.IO.File.AppendAllText(Debug.debugFile, content + "\n");
|
{
|
||||||
|
if (GlobalVars.useAppdata)
|
||||||
|
File.AppendAllText(Path.Combine(GlobalVars.appdata, "envyupdate.log"), content + "\n");
|
||||||
|
else
|
||||||
|
File.AppendAllText(Path.Combine(GlobalVars.directoryOfExe, "envyupdate.log"), content + "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.0</Version>
|
<Version>6.8.1</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>7.0.3</Version>
|
<Version>8.0.4</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="WPF-UI">
|
<PackageReference Include="WPF-UI">
|
||||||
<Version>2.1.0</Version>
|
<Version>2.1.0</Version>
|
||||||
|
|
|
@ -6,14 +6,20 @@ namespace EnvyUpdate
|
||||||
class GlobalVars
|
class GlobalVars
|
||||||
{
|
{
|
||||||
public static bool isMobile = false;
|
public static bool isMobile = false;
|
||||||
public static readonly string exeloc = System.Reflection.Assembly.GetEntryAssembly().Location;
|
public static readonly string pathToAppExe = System.Reflection.Assembly.GetEntryAssembly().Location;
|
||||||
public static readonly string exedirectory = Path.GetDirectoryName(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 startmenu = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);
|
public static readonly string startmenu = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);
|
||||||
public static readonly string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\";
|
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 startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
|
public static readonly string startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
|
||||||
public static bool monitoringInstall = false;
|
public static bool monitoringInstall = false;
|
||||||
public static bool startMinimized = false;
|
public static bool startMinimized = false;
|
||||||
public static bool isInstalling = 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 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
ExtendsContentIntoTitleBar="True"
|
ExtendsContentIntoTitleBar="True"
|
||||||
WindowBackdropType="Mica"
|
WindowBackdropType="Mica"
|
||||||
|
|
||||||
Title="EnvyUpdate" MinHeight="500" Height="500" MinWidth="600" Width="600" Icon="icon.ico" StateChanged="Window_StateChanged" Closing="Window_Closing" ResizeMode="CanMinimize" WindowStyle="None">
|
Title="EnvyUpdate" MinHeight="500" Height="550" MinWidth="700" Width="750" 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" />
|
||||||
|
|
|
@ -28,8 +28,22 @@ namespace EnvyUpdate
|
||||||
// This is necessary, since .NET throws an exception if you check for a non-existant arg.
|
// 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
|
// Check if Debug file exists
|
||||||
if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log")))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log")))
|
||||||
{
|
{
|
||||||
Debug.isVerbose = true;
|
Debug.isVerbose = true;
|
||||||
Debug.LogToFile("------");
|
Debug.LogToFile("------");
|
||||||
|
@ -37,6 +51,7 @@ namespace EnvyUpdate
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.LogToFile("INFO Starting EnvyUpdate, version " + System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
|
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.
|
// Check if running on supported Windows version.
|
||||||
if (Environment.OSVersion.Version.Major < 10)
|
if (Environment.OSVersion.Version.Major < 10)
|
||||||
|
@ -60,9 +75,9 @@ namespace EnvyUpdate
|
||||||
SystemEvents.UserPreferenceChanged += AdjustTheme;
|
SystemEvents.UserPreferenceChanged += AdjustTheme;
|
||||||
|
|
||||||
// Delete installed legacy versions, required for people upgrading from very old versions.
|
// Delete installed legacy versions, required for people upgrading from very old versions.
|
||||||
if (Directory.Exists(GlobalVars.appdata))
|
if (Directory.Exists(GlobalVars.legacyAppdata))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Found old appdata installation, uninstalling.");
|
Debug.LogToFile("INFO Found legacy appdata installation, uninstalling.");
|
||||||
Util.UninstallAll();
|
Util.UninstallAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,8 +102,25 @@ 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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,9 +6,16 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
public static void ShowDrivUpdatePopup()
|
public static void ShowDrivUpdatePopup()
|
||||||
{
|
{
|
||||||
var toast = new ToastContentBuilder();
|
try
|
||||||
toast.AddText(Properties.Resources.update_popup_message);
|
{
|
||||||
toast.Show();
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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.1")]
|
[assembly: AssemblyVersion("3.6")]
|
||||||
[assembly: AssemblyFileVersion("3.1")]
|
[assembly: AssemblyFileVersion("3.6")]
|
||||||
|
|
36
EnvyUpdate/Properties/Resources.Designer.cs
generated
36
EnvyUpdate/Properties/Resources.Designer.cs
generated
|
@ -105,6 +105,24 @@ 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>
|
||||||
|
@ -258,6 +276,24 @@ 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>
|
/// <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>
|
||||||
|
|
|
@ -132,6 +132,12 @@
|
||||||
<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>
|
||||||
|
@ -183,6 +189,12 @@
|
||||||
<data name="ui_download" xml:space="preserve">
|
<data name="ui_download" xml:space="preserve">
|
||||||
<value>Herunterladen</value>
|
<value>Herunterladen</value>
|
||||||
</data>
|
</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">
|
<data name="ui_enable_logging" xml:space="preserve">
|
||||||
<value>Programm-Log in Datei schreiben</value>
|
<value>Programm-Log in Datei schreiben</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -132,6 +132,12 @@
|
||||||
<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>
|
||||||
|
@ -183,6 +189,12 @@
|
||||||
<data name="ui_download" xml:space="preserve">
|
<data name="ui_download" xml:space="preserve">
|
||||||
<value>Download</value>
|
<value>Download</value>
|
||||||
</data>
|
</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">
|
<data name="ui_enable_logging" xml:space="preserve">
|
||||||
<value>Enable logging to file</value>
|
<value>Enable logging to file</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -15,7 +15,8 @@
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid Grid.Row="0">
|
<Grid Grid.Row="0">
|
||||||
|
@ -34,8 +35,22 @@
|
||||||
<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>
|
||||||
|
|
||||||
<Label Grid.Row="3" Content="{x:Static p:Resources.ui_licenses}" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="Bold"/>
|
<Grid Grid.Row="3">
|
||||||
<ScrollViewer Grid.Row="4" MaxHeight="700" HorizontalAlignment="Stretch">
|
<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">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<Expander Header="EnvyUpdate">
|
<Expander Header="EnvyUpdate">
|
||||||
<TextBox x:Name="textBoxLicEnvyupdate" IsReadOnly="True" TextWrapping="Wrap"/>
|
<TextBox x:Name="textBoxLicEnvyupdate" IsReadOnly="True" TextWrapping="Wrap"/>
|
||||||
|
|
|
@ -21,9 +21,25 @@ namespace EnvyUpdate
|
||||||
if (GlobalVars.monitoringInstall)
|
if (GlobalVars.monitoringInstall)
|
||||||
textBlockVer.FontStyle = FontStyles.Italic;
|
textBlockVer.FontStyle = FontStyles.Italic;
|
||||||
|
|
||||||
if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log")))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log")) || File.Exists(Path.Combine(GlobalVars.appdata, "envyupdate.log")))
|
||||||
chkLog.IsChecked = true;
|
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;
|
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;
|
||||||
|
@ -54,10 +70,54 @@ namespace EnvyUpdate
|
||||||
if (Debug.isVerbose)
|
if (Debug.isVerbose)
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Disabled logging to file.");
|
Debug.LogToFile("INFO Disabled logging to file.");
|
||||||
if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log")))
|
if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log")))
|
||||||
File.Move(Path.Combine(GlobalVars.exedirectory, "envyupdate.log"), Path.Combine(GlobalVars.exedirectory, "envyupdate." + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log"));
|
File.Move(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log"), Path.Combine(GlobalVars.saveDirectory, "envyupdate." + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".log"));
|
||||||
Debug.isVerbose = false;
|
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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using IWshRuntimeLibrary;
|
using IWshRuntimeLibrary;
|
||||||
|
using Microsoft.Build.Framework.XamlTypes;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
@ -130,13 +131,11 @@ namespace EnvyUpdate
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void SelfDelete()
|
public static void SelfDelete()
|
||||||
{
|
{
|
||||||
string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\";
|
|
||||||
|
|
||||||
Process process = new Process();
|
Process process = new Process();
|
||||||
ProcessStartInfo startInfo = new ProcessStartInfo
|
ProcessStartInfo startInfo = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
WindowStyle = ProcessWindowStyle.Hidden,
|
WindowStyle = ProcessWindowStyle.Hidden,
|
||||||
WorkingDirectory = appdata,
|
WorkingDirectory = GlobalVars.legacyAppdata,
|
||||||
FileName = "cmd.exe",
|
FileName = "cmd.exe",
|
||||||
Arguments = "/C timeout 5 && del EnvyUpdate.exe"
|
Arguments = "/C timeout 5 && del EnvyUpdate.exe"
|
||||||
};
|
};
|
||||||
|
@ -338,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 )((.tx )|(mx))?\\w*\\d*( ti)?").Value;
|
GPUName = Regex.Match(GPUName, "(geforce )((.t.? )|(mx ))?\\w*\\d*( ti)?").Value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
GPUName = obj["VideoProcessor"].ToString();
|
GPUName = obj["VideoProcessor"].ToString();
|
||||||
|
@ -433,7 +432,7 @@ namespace EnvyUpdate
|
||||||
*/
|
*/
|
||||||
//TODO: find way to differentiate between driver types
|
//TODO: find way to differentiate between driver types
|
||||||
|
|
||||||
if (System.IO.File.Exists(GlobalVars.exedirectory + "sd.envy"))
|
if (System.IO.File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy")))
|
||||||
return 18;
|
return 18;
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -510,27 +509,27 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
public static void UninstallAll()
|
public static void UninstallAll()
|
||||||
{
|
{
|
||||||
if (System.IO.File.Exists(GlobalVars.startup + "\\EnvyUpdate.lnk"))
|
if (System.IO.File.Exists(Path.Combine(GlobalVars.startup, "\\EnvyUpdate.lnk")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Deleted startup entry.");
|
Debug.LogToFile("INFO Deleted startup entry.");
|
||||||
System.IO.File.Delete(GlobalVars.startup + "\\EnvyUpdate.lnk");
|
System.IO.File.Delete(Path.Combine(GlobalVars.startup, "\\EnvyUpdate.lnk"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (System.IO.File.Exists(GlobalVars.startmenu + "\\EnvyUpdate.lnk"))
|
if (System.IO.File.Exists(Path.Combine(GlobalVars.startmenu, "\\EnvyUpdate.lnk")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Deleted start menu entry.");
|
Debug.LogToFile("INFO Deleted start menu entry.");
|
||||||
System.IO.File.Delete(GlobalVars.startmenu + "\\EnvyUpdate.lnk");
|
System.IO.File.Delete(Path.Combine(GlobalVars.startmenu, "\\EnvyUpdate.lnk"));
|
||||||
}
|
}
|
||||||
if ((GlobalVars.exedirectory == GlobalVars.appdata) && System.IO.File.Exists(GlobalVars.appdata + "EnvyUpdate.exe"))
|
if ((GlobalVars.saveDirectory == GlobalVars.legacyAppdata) && System.IO.File.Exists(Path.Combine(GlobalVars.legacyAppdata, "EnvyUpdate.exe")))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Deleting EnvyUpdate appdata and self.");
|
Debug.LogToFile("INFO Deleting EnvyUpdate appdata and self.");
|
||||||
MessageBox.Show(Properties.Resources.uninstall_legacy_message);
|
MessageBox.Show(Properties.Resources.uninstall_legacy_message);
|
||||||
Util.SelfDelete();
|
Util.SelfDelete();
|
||||||
}
|
}
|
||||||
else if (Directory.Exists(GlobalVars.appdata))
|
else if (Directory.Exists(GlobalVars.legacyAppdata))
|
||||||
{
|
{
|
||||||
Debug.LogToFile("INFO Deleting EnvyUpdate appdata folder");
|
Debug.LogToFile("INFO Deleting EnvyUpdate appdata folder");
|
||||||
Directory.Delete(GlobalVars.appdata, true);
|
Directory.Delete(GlobalVars.legacyAppdata, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,7 +578,7 @@ namespace EnvyUpdate
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
path = Path.Combine(GlobalVars.exedirectory, "7zr.exe");
|
path = Path.Combine(GlobalVars.saveDirectory, "7zr.exe");
|
||||||
using (WebClient client = new WebClient())
|
using (WebClient client = new WebClient())
|
||||||
{
|
{
|
||||||
client.Headers["User-Agent"] = GlobalVars.useragent;
|
client.Headers["User-Agent"] = GlobalVars.useragent;
|
||||||
|
@ -664,5 +663,37 @@ namespace EnvyUpdate
|
||||||
}
|
}
|
||||||
return null;
|
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"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019-2023 Jakob Senkl
|
Copyright (c) 2019-2024 fyr77
|
||||||
|
|
||||||
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
|
||||||
|
|
29
README.md
29
README.md
|
@ -1,21 +1,18 @@
|
||||||

|
# 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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
# EnvyUpdate
|
# EnvyUpdate
|
||||||
A small portable update checker application for Nvidia GPUs
|
A small portable update checker application for Nvidia GPUs
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|
||||||
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.
|
Download the latest release 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.
|
Enabling Autostart will create a shortcut of EnvyUpdate in the Windows startup folder (shell:startup).
|
||||||
|
|
||||||
### Virus warnings
|
### Virus warnings
|
||||||
|
|
||||||
|
@ -23,15 +20,21 @@ 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.
|
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
|
## 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.
|
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. Generally others might work, but they are (currently) untested.
|
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.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
This application is currently maintained and developed by me (fyr77) alone in my free time.
|
This application is currently unmaintained 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.
|
||||||
|
|
||||||
|
@ -48,7 +51,7 @@ EnvyUpdate is not a replacement for any of these tools. I will still try to impl
|
||||||
|
|
||||||
## Licenses
|
## Licenses
|
||||||
|
|
||||||
* This project: [MIT](https://github.com/fyr77/EnvyUpdate/blob/master/LICENSE)
|
* This project: [MIT](https://https://vcs.diluvian.cc/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/)
|
||||||
|
|
Reference in a new issue