Add support for Studio without automatic detection
This commit is contained in:
parent
71cdd9ab92
commit
29e65e6f0a
7 changed files with 84 additions and 14 deletions
|
@ -6,11 +6,10 @@ namespace EnvyUpdate
|
||||||
{
|
{
|
||||||
class Debug
|
class Debug
|
||||||
{
|
{
|
||||||
readonly static string debugFilePath = GlobalVars.exepath + "debug.txt";
|
|
||||||
public static int LoadFakeIDs(string idType)
|
public static int LoadFakeIDs(string idType)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Usage: Supply /debug flag to exe. Imitates a GTX 1080ti on Win10 x64 non-dch.
|
* Usage: Supply /debug flag to exe. Imitates a GTX 1080ti on Win10 x64 non-dch Game Ready Driver.
|
||||||
*/
|
*/
|
||||||
switch (idType)
|
switch (idType)
|
||||||
{
|
{
|
||||||
|
@ -22,6 +21,8 @@ namespace EnvyUpdate
|
||||||
return 57;
|
return 57;
|
||||||
case "dtcid":
|
case "dtcid":
|
||||||
return 0;
|
return 0;
|
||||||
|
case "dtid":
|
||||||
|
return 1;
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,19 +7,23 @@
|
||||||
xmlns:p="clr-namespace:EnvyUpdate.Properties"
|
xmlns:p="clr-namespace:EnvyUpdate.Properties"
|
||||||
xmlns:tb="http://www.hardcodet.net/taskbar"
|
xmlns:tb="http://www.hardcodet.net/taskbar"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="EnvyUpdate" Height="160" Width="290" Icon="icon.ico" StateChanged="Window_StateChanged" Closing="Window_Closing" ResizeMode="CanMinimize">
|
Title="EnvyUpdate" Height="250" Width="300" Icon="icon.ico" StateChanged="Window_StateChanged" Closing="Window_Closing" ResizeMode="CanMinimize">
|
||||||
<Grid Margin="0,0,0,0">
|
<Grid Margin="0,0,0,0">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="17*"/>
|
<RowDefinition Height="17*"/>
|
||||||
<RowDefinition Height="86*"/>
|
<RowDefinition Height="86*"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<tb:TaskbarIcon IconSource="/icon.ico" ToolTipText="EnvyUpdate" TrayLeftMouseDown="TaskbarIcon_TrayLeftMouseDown" Grid.RowSpan="3" />
|
<tb:TaskbarIcon IconSource="/icon.ico" ToolTipText="EnvyUpdate" TrayLeftMouseDown="TaskbarIcon_TrayLeftMouseDown" Grid.RowSpan="3" />
|
||||||
<TextBlock HorizontalAlignment="Left" Margin="10,19,0,0" TextWrapping="Wrap" FontWeight="Bold" Width="151" Height="16" VerticalAlignment="Top" Grid.Row="1"><Run Text="{x:Static p:Resources.ui_localdriver}"/></TextBlock>
|
<TextBlock HorizontalAlignment="Left" Margin="10,81,0,0" TextWrapping="Wrap" FontWeight="Bold" Width="140" Height="16" VerticalAlignment="Top" Grid.Row="1"><Run Text="{x:Static p:Resources.ui_localdriver}"/></TextBlock>
|
||||||
<TextBlock x:Name="textblockGPU" HorizontalAlignment="Right" Margin="0,19,10,0" TextWrapping="Wrap" Text="<none>" Width="106" Height="16" VerticalAlignment="Top" TextAlignment="Right" Grid.Row="1"/>
|
<TextBlock x:Name="textblockGPU" HorizontalAlignment="Right" Margin="0,81,10,0" TextWrapping="Wrap" Text="<none>" Width="134" Height="16" VerticalAlignment="Top" TextAlignment="Right" Grid.Row="1"/>
|
||||||
<Button x:Name="buttonHelp" Content="..." Margin="0,12,10,0" Click="buttonHelp_Click" HorizontalAlignment="Right" Width="20" Height="20" VerticalAlignment="Top" Grid.RowSpan="2"/>
|
<Button x:Name="buttonHelp" Content="..." Margin="0,12,10,0" Click="buttonHelp_Click" HorizontalAlignment="Right" Width="20" Height="20" VerticalAlignment="Top" Grid.RowSpan="2"/>
|
||||||
<TextBlock Margin="10,40,0,0" TextWrapping="Wrap" FontWeight="Bold" Grid.Row="1" HorizontalAlignment="Left" Width="151" Height="16" VerticalAlignment="Top"><Run Text="{x:Static p:Resources.ui_onlinedriver}"/></TextBlock>
|
<TextBlock Margin="10,102,0,0" TextWrapping="Wrap" FontWeight="Bold" Grid.Row="1" HorizontalAlignment="Left" Width="140" Height="16" VerticalAlignment="Top"><Run Text="{x:Static p:Resources.ui_onlinedriver}"/></TextBlock>
|
||||||
<TextBlock x:Name="textblockOnline" HorizontalAlignment="Right" Margin="0,40,10,0" TextWrapping="Wrap" Text="<none>" Width="106" Grid.Row="1" Height="16" VerticalAlignment="Top" TextAlignment="Right"/>
|
<TextBlock x:Name="textblockOnline" HorizontalAlignment="Right" Margin="0,102,10,0" TextWrapping="Wrap" Text="<none>" Width="134" Grid.Row="1" Height="16" VerticalAlignment="Top" TextAlignment="Right"/>
|
||||||
<Button x:Name="buttonDL" Content="⟱" Margin="0,0,10,10" FontSize="20" Click="buttonDL_Click" Foreground="White" Background="#FF3CDA00" Visibility="Hidden" Grid.Row="1" HorizontalAlignment="Right" Width="30" Height="30" VerticalAlignment="Bottom"/>
|
<Button x:Name="buttonDL" Content="⟱" Margin="10,130,10,10" FontSize="20" Click="buttonDL_Click" Foreground="White" Background="#FF3CDA00" Grid.Row="1" IsEnabled="False"/>
|
||||||
<TextBlock x:Name="textblockGPUName" Margin="10,14,35,0" TextWrapping="Wrap" Text="GPU..." Height="16" VerticalAlignment="Top" TextAlignment="Center" Grid.RowSpan="2" FontWeight="Bold"/>
|
<TextBlock x:Name="textblockGPUName" Margin="10,14,35,0" TextWrapping="Wrap" Text="GPU..." Height="16" VerticalAlignment="Top" TextAlignment="Center" Grid.RowSpan="2" FontWeight="Bold"/>
|
||||||
|
<TextBlock HorizontalAlignment="Left" Margin="10,19,0,0" TextWrapping="Wrap" FontWeight="Bold" Width="140" Height="16" VerticalAlignment="Top" Grid.Row="1" Text="{x:Static p:Resources.ui_localdriver_type}"/>
|
||||||
|
<TextBlock x:Name="textblockLocalType" HorizontalAlignment="Right" Margin="0,19,10,0" TextWrapping="Wrap" Width="134" Height="16" VerticalAlignment="Top" TextAlignment="Right" Grid.Row="1"><Run Text="<none>"/><LineBreak/><Run/></TextBlock>
|
||||||
|
<RadioButton x:Name="radioGRD" Content="Game Ready Driver" HorizontalAlignment="Left" Margin="10,40,0,0" Grid.Row="1" VerticalAlignment="Top" IsChecked="True" Checked="radioGRD_Checked"/>
|
||||||
|
<RadioButton x:Name="radioSD" Content="Studio Driver" HorizontalAlignment="Left" Margin="10,60,0,0" Grid.Row="1" VerticalAlignment="Top" Checked="radioSD_Checked"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
|
|
@ -46,6 +46,11 @@ namespace EnvyUpdate
|
||||||
|
|
||||||
GlobalVars.isMobile = Util.IsMobile();
|
GlobalVars.isMobile = Util.IsMobile();
|
||||||
|
|
||||||
|
if (Util.IsDCH())
|
||||||
|
textblockLocalType.Text = "DCH";
|
||||||
|
else
|
||||||
|
textblockLocalType.Text = "Standard";
|
||||||
|
|
||||||
string locDriv = Util.GetLocDriv();
|
string locDriv = Util.GetLocDriv();
|
||||||
if (locDriv != null)
|
if (locDriv != null)
|
||||||
{
|
{
|
||||||
|
@ -95,8 +100,12 @@ namespace EnvyUpdate
|
||||||
int pfid = 0;
|
int pfid = 0;
|
||||||
int osid = 0;
|
int osid = 0;
|
||||||
int dtcid = 0;
|
int dtcid = 0;
|
||||||
|
int dtid = 0;
|
||||||
//int langid;
|
//int langid;
|
||||||
|
|
||||||
|
if (File.Exists(GlobalVars.exepath + "sd.envy"))
|
||||||
|
radioSD.IsChecked = true;
|
||||||
|
|
||||||
// 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 (!isDebug)
|
||||||
{
|
{
|
||||||
|
@ -104,6 +113,7 @@ namespace EnvyUpdate
|
||||||
pfid = Util.GetIDs("pfid");
|
pfid = Util.GetIDs("pfid");
|
||||||
osid = Util.GetIDs("osid");
|
osid = Util.GetIDs("osid");
|
||||||
dtcid = Util.GetDTCID();
|
dtcid = Util.GetDTCID();
|
||||||
|
//dtid = Util.GetDTID();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -111,27 +121,38 @@ namespace EnvyUpdate
|
||||||
pfid = Debug.LoadFakeIDs("pfid");
|
pfid = Debug.LoadFakeIDs("pfid");
|
||||||
osid = Debug.LoadFakeIDs("osid");
|
osid = Debug.LoadFakeIDs("osid");
|
||||||
dtcid = Debug.LoadFakeIDs("dtcid");
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
gpuURL = "http://www.nvidia.com/Download/processDriver.aspx?psid=" + psid.ToString() + "&pfid=" + pfid.ToString() + "&osid=" + osid.ToString() + "&dtcid=" + dtcid.ToString(); // + "&lid=" + langid.ToString();
|
//Temporary Studio Driver override logic
|
||||||
|
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();
|
||||||
WebClient c = new WebClient();
|
WebClient c = new WebClient();
|
||||||
gpuURL = c.DownloadString(gpuURL);
|
gpuURL = c.DownloadString(gpuURL);
|
||||||
string pContent = c.DownloadString(gpuURL);
|
string pContent = c.DownloadString(gpuURL);
|
||||||
var pattern = @"\d{3}\.\d{2} ";
|
var pattern = @"Windows\/\d{3}\.\d{2}";
|
||||||
Regex rgx = new Regex(pattern);
|
Regex rgx = new Regex(pattern);
|
||||||
var matches = rgx.Matches(pContent);
|
var matches = rgx.Matches(pContent);
|
||||||
onlineDriv = Convert.ToString(matches[0]);
|
onlineDriv = Regex.Replace(Convert.ToString(matches[0]), "Windows/", "");
|
||||||
onlineDriv = onlineDriv.Remove(onlineDriv.Length - 5);
|
|
||||||
textblockOnline.Text = onlineDriv;
|
textblockOnline.Text = onlineDriv;
|
||||||
c.Dispose();
|
c.Dispose();
|
||||||
|
|
||||||
if (float.Parse(localDriv) < float.Parse(onlineDriv))
|
if (float.Parse(localDriv) < float.Parse(onlineDriv))
|
||||||
{
|
{
|
||||||
textblockOnline.Foreground = Brushes.Red;
|
textblockOnline.Foreground = Brushes.Red;
|
||||||
buttonDL.Visibility = Visibility.Visible;
|
buttonDL.IsEnabled = true;
|
||||||
Notify.ShowDrivUpdatePopup();
|
Notify.ShowDrivUpdatePopup();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -191,5 +212,23 @@ namespace EnvyUpdate
|
||||||
else
|
else
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void radioGRD_Checked(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (File.Exists(GlobalVars.exepath + "sd.envy"))
|
||||||
|
{
|
||||||
|
File.Delete(GlobalVars.exepath + "sd.envy");
|
||||||
|
Load();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void radioSD_Checked(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (!File.Exists(GlobalVars.exepath + "sd.envy"))
|
||||||
|
{
|
||||||
|
File.Create(GlobalVars.exepath + "sd.envy").Close();
|
||||||
|
Load();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
9
EnvyUpdate/Properties/Resources.Designer.cs
generated
9
EnvyUpdate/Properties/Resources.Designer.cs
generated
|
@ -177,6 +177,15 @@ namespace EnvyUpdate.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Local driver type:.
|
||||||
|
/// </summary>
|
||||||
|
public static string ui_localdriver_type {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ui_localdriver_type", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Online driver version:.
|
/// Looks up a localized string similar to Online driver version:.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -156,6 +156,9 @@
|
||||||
<data name="ui_localdriver" xml:space="preserve">
|
<data name="ui_localdriver" xml:space="preserve">
|
||||||
<value>Lokale Treiberversion:</value>
|
<value>Lokale Treiberversion:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ui_localdriver_type" xml:space="preserve">
|
||||||
|
<value>Lokaler Treibertyp:</value>
|
||||||
|
</data>
|
||||||
<data name="ui_onlinedriver" xml:space="preserve">
|
<data name="ui_onlinedriver" xml:space="preserve">
|
||||||
<value>Online Treiberversion:</value>
|
<value>Online Treiberversion:</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -156,6 +156,9 @@
|
||||||
<data name="ui_localdriver" xml:space="preserve">
|
<data name="ui_localdriver" xml:space="preserve">
|
||||||
<value>Local driver version:</value>
|
<value>Local driver version:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ui_localdriver_type" xml:space="preserve">
|
||||||
|
<value>Local driver type:</value>
|
||||||
|
</data>
|
||||||
<data name="ui_onlinedriver" xml:space="preserve">
|
<data name="ui_onlinedriver" xml:space="preserve">
|
||||||
<value>Online driver version:</value>
|
<value>Online driver version:</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -336,7 +336,7 @@ namespace EnvyUpdate
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
if (ex.InnerException is NullReferenceException)
|
if (ex.Message == "Object reference not set to an instance of an object." || ex.InnerException is NullReferenceException)
|
||||||
{
|
{
|
||||||
// Assume no DCH driver is installed if key is not found.
|
// Assume no DCH driver is installed if key is not found.
|
||||||
return false;
|
return false;
|
||||||
|
@ -369,5 +369,16 @@ namespace EnvyUpdate
|
||||||
}
|
}
|
||||||
return dtcid;
|
return dtcid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int GetDTID()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* 1 = Game Ready Driver (GRD)
|
||||||
|
* 18 = Studio Driver (SD)
|
||||||
|
*/
|
||||||
|
//TODO: find way to differentiate between driver types
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in a new issue