add download button to notification
This commit is contained in:
parent
88e7610a46
commit
ef13c67968
5 changed files with 90 additions and 73 deletions
|
@ -24,13 +24,18 @@ namespace EnvyUpdate
|
||||||
// Obtain the arguments from the notification
|
// Obtain the arguments from the notification
|
||||||
ToastArguments args = ToastArguments.Parse(toastArgs.Argument);
|
ToastArguments args = ToastArguments.Parse(toastArgs.Argument);
|
||||||
|
|
||||||
// Obtain any user input (text boxes, menu selections) from the notification
|
|
||||||
ValueSet userInput = toastArgs.UserInput;
|
|
||||||
|
|
||||||
// Need to dispatch to UI thread if performing UI operations
|
// Need to dispatch to UI thread if performing UI operations
|
||||||
Application.Current.Dispatcher.Invoke(delegate
|
Application.Current.Dispatcher.Invoke(delegate
|
||||||
{
|
{
|
||||||
Util.ShowMain();
|
switch (args.Get("action"))
|
||||||
|
{
|
||||||
|
case "download":
|
||||||
|
Process.Start(Util.GetGpuUrl());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Util.ShowMain();
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
class Debug
|
class Debug
|
||||||
{
|
{
|
||||||
|
public static bool isDebug = false;
|
||||||
|
|
||||||
public static int LoadFakeIDs(string idType)
|
public static int LoadFakeIDs(string idType)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Security.Cryptography;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
@ -20,7 +21,6 @@ namespace EnvyUpdate
|
||||||
private string onlineDriv = null;
|
private string onlineDriv = null;
|
||||||
private string gpuURL = null;
|
private string gpuURL = null;
|
||||||
private string[] arguments = null;
|
private string[] arguments = null;
|
||||||
private bool isDebug = false;
|
|
||||||
private string skippedVer = null;
|
private string skippedVer = null;
|
||||||
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
|
@ -64,8 +64,7 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
if (arguments.Contains("/debug"))
|
if (arguments.Contains("/debug"))
|
||||||
{
|
{
|
||||||
MessageBox.Show("Debug mode!");
|
Debug.isDebug = true;
|
||||||
isDebug = true;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -76,7 +75,7 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
if (Util.IsDCH())
|
if (Util.IsDCH())
|
||||||
textblockLocalType.Text = "DCH";
|
textblockLocalType.Text = "DCH";
|
||||||
else if (isDebug)
|
else if (Debug.isDebug)
|
||||||
textblockLocalType.Text = "DCH (Debug)";
|
textblockLocalType.Text = "DCH (Debug)";
|
||||||
else
|
else
|
||||||
textblockLocalType.Text = "Standard";
|
textblockLocalType.Text = "Standard";
|
||||||
|
@ -116,15 +115,7 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
private async void Load()
|
private async void Load()
|
||||||
{
|
{
|
||||||
int psid = 0;
|
if (Util.GetDTID() == 18)
|
||||||
int pfid = 0;
|
|
||||||
int osid = 0;
|
|
||||||
int dtcid = 0;
|
|
||||||
int dtid = 0;
|
|
||||||
//TODO: Make a list of languages and match OS language to driver
|
|
||||||
//int langid;
|
|
||||||
|
|
||||||
if (File.Exists(GlobalVars.exepath + "sd.envy"))
|
|
||||||
radioSD.IsChecked = true;
|
radioSD.IsChecked = true;
|
||||||
else
|
else
|
||||||
radioGRD.IsChecked = true;
|
radioGRD.IsChecked = true;
|
||||||
|
@ -133,69 +124,24 @@ namespace EnvyUpdate
|
||||||
skippedVer = File.ReadLines(GlobalVars.exepath + "skip.envy").First();
|
skippedVer = File.ReadLines(GlobalVars.exepath + "skip.envy").First();
|
||||||
|
|
||||||
// This little bool check is necessary for debug mode on systems without an Nvidia GPU.
|
// This little bool check is necessary for debug mode on systems without an Nvidia GPU.
|
||||||
if (!isDebug)
|
if (Debug.isDebug)
|
||||||
{
|
{
|
||||||
psid = Util.GetIDs("psid");
|
|
||||||
pfid = Util.GetIDs("pfid");
|
|
||||||
osid = Util.GetIDs("osid");
|
|
||||||
dtcid = Util.GetDTCID();
|
|
||||||
//dtid = Util.GetDTID();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
psid = Debug.LoadFakeIDs("psid");
|
|
||||||
pfid = Debug.LoadFakeIDs("pfid");
|
|
||||||
osid = Debug.LoadFakeIDs("osid");
|
|
||||||
dtcid = Debug.LoadFakeIDs("dtcid");
|
|
||||||
dtid = Debug.LoadFakeIDs("dtid");
|
|
||||||
localDriv = Debug.LocalDriv();
|
localDriv = Debug.LocalDriv();
|
||||||
textblockGPU.Text = localDriv;
|
textblockGPU.Text = localDriv;
|
||||||
textblockGPUName.Text = Debug.GPUname();
|
textblockGPUName.Text = Debug.GPUname();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Temporary Studio Driver override logic until I have figured out how to detect it automatically
|
gpuURL = Util.GetGpuUrl();
|
||||||
//TODO
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (radioSD.IsChecked == true)
|
|
||||||
dtid = 18;
|
|
||||||
else
|
|
||||||
dtid = 1;
|
|
||||||
}
|
|
||||||
catch (NullReferenceException)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
gpuURL = "http://www.nvidia.com/Download/processDriver.aspx?psid=" + psid.ToString() + "&pfid=" + pfid.ToString() + "&osid=" + osid.ToString() + "&dtcid=" + dtcid.ToString() + "&dtid=" + dtid.ToString(); // + "&lid=" + langid.ToString();
|
using (var c = new WebClient())
|
||||||
WebClient c = new WebClient();
|
|
||||||
gpuURL = c.DownloadString(gpuURL);
|
|
||||||
if (gpuURL.Contains("https://") || gpuURL.Contains("http://"))
|
|
||||||
{
|
{
|
||||||
//absolute url
|
string pContent = c.DownloadString(gpuURL);
|
||||||
|
var pattern = @"Windows\/\d{3}\.\d{2}";
|
||||||
|
Regex rgx = new Regex(pattern);
|
||||||
|
var matches = rgx.Matches(pContent);
|
||||||
|
onlineDriv = Regex.Replace(Convert.ToString(matches[0]), "Windows/", "");
|
||||||
|
textblockOnline.Text = onlineDriv;
|
||||||
}
|
}
|
||||||
else if (gpuURL.Contains("//"))
|
|
||||||
{
|
|
||||||
//protocol agnostic url
|
|
||||||
gpuURL = "https:" + gpuURL;
|
|
||||||
}
|
|
||||||
else if (gpuURL.StartsWith("driverResults.aspx"))
|
|
||||||
{
|
|
||||||
//relative url
|
|
||||||
gpuURL = "https://www.nvidia.com/Download/" + gpuURL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//panic.
|
|
||||||
MessageBox.Show("ERROR: Invalid API response from Nvidia. Please file an issue on GitHub.");
|
|
||||||
Environment.Exit(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
string pContent = c.DownloadString(gpuURL);
|
|
||||||
var pattern = @"Windows\/\d{3}\.\d{2}";
|
|
||||||
Regex rgx = new Regex(pattern);
|
|
||||||
var matches = rgx.Matches(pContent);
|
|
||||||
onlineDriv = Regex.Replace(Convert.ToString(matches[0]), "Windows/", "");
|
|
||||||
textblockOnline.Text = onlineDriv;
|
|
||||||
c.Dispose();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -297,7 +243,7 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
if (MessageBox.Show(Properties.Resources.exit_confirm, "", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
|
if (MessageBox.Show(Properties.Resources.exit_confirm, "", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
ToastNotificationManagerCompat.Uninstall();
|
ToastNotificationManagerCompat.Uninstall(); // Uninstall notifications to prevent issues with the app being portable.
|
||||||
Application.Current.Shutdown();
|
Application.Current.Shutdown();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -8,6 +8,9 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
var toast = new ToastContentBuilder();
|
var toast = new ToastContentBuilder();
|
||||||
toast.AddText(Properties.Resources.update_popup_message);
|
toast.AddText(Properties.Resources.update_popup_message);
|
||||||
|
toast.AddButton(new ToastButton()
|
||||||
|
.SetContent("Download")
|
||||||
|
.AddArgument("action", "download"));
|
||||||
toast.Show();
|
toast.Show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,12 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Security.Cryptography;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
using Windows.Devices.Radios;
|
||||||
|
|
||||||
namespace EnvyUpdate
|
namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
|
@ -383,7 +385,66 @@ namespace EnvyUpdate
|
||||||
*/
|
*/
|
||||||
//TODO: find way to differentiate between driver types
|
//TODO: find way to differentiate between driver types
|
||||||
|
|
||||||
return 1;
|
if (System.IO.File.Exists(GlobalVars.exepath + "sd.envy"))
|
||||||
|
return 18;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetGpuUrl()
|
||||||
|
{
|
||||||
|
//TODO: Make a list of languages and match OS language to driver
|
||||||
|
//int langid;
|
||||||
|
int psid;
|
||||||
|
int pfid;
|
||||||
|
int osid;
|
||||||
|
int dtcid;
|
||||||
|
int dtid;
|
||||||
|
|
||||||
|
if (Debug.isDebug)
|
||||||
|
{
|
||||||
|
psid = Debug.LoadFakeIDs("psid");
|
||||||
|
pfid = Debug.LoadFakeIDs("pfid");
|
||||||
|
osid = Debug.LoadFakeIDs("osid");
|
||||||
|
dtcid = Debug.LoadFakeIDs("dtcid");
|
||||||
|
dtid = Debug.LoadFakeIDs("dtid");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
psid = GetIDs("psid");
|
||||||
|
pfid = GetIDs("pfid");
|
||||||
|
osid = GetIDs("osid");
|
||||||
|
dtcid = GetDTCID();
|
||||||
|
dtid = GetDTID();
|
||||||
|
}
|
||||||
|
string gpuURL = "http://www.nvidia.com/Download/processDriver.aspx?psid=" + psid.ToString() + "&pfid=" + pfid.ToString() + "&osid=" + osid.ToString() + "&dtcid=" + dtcid.ToString() + "&dtid=" + dtid.ToString(); // + "&lid=" + langid.ToString();
|
||||||
|
|
||||||
|
using (var c = new WebClient())
|
||||||
|
{
|
||||||
|
gpuURL = c.DownloadString(gpuURL);
|
||||||
|
if (gpuURL.Contains("https://") || gpuURL.Contains("http://"))
|
||||||
|
{
|
||||||
|
//absolute url
|
||||||
|
}
|
||||||
|
else if (gpuURL.Contains("//"))
|
||||||
|
{
|
||||||
|
//protocol agnostic url
|
||||||
|
gpuURL = "https:" + gpuURL;
|
||||||
|
}
|
||||||
|
else if (gpuURL.StartsWith("driverResults.aspx"))
|
||||||
|
{
|
||||||
|
//relative url
|
||||||
|
gpuURL = "https://www.nvidia.com/Download/" + gpuURL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//panic.
|
||||||
|
MessageBox.Show("ERROR: Invalid API response from Nvidia. Please file an issue on GitHub.");
|
||||||
|
Environment.Exit(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return gpuURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DownloadFile(string fileURL, string savePath)
|
public static void DownloadFile(string fileURL, string savePath)
|
||||||
|
|
Reference in a new issue