This commit is contained in:
mika-n 2019-04-23 10:43:14 +03:00
commit 4f87d24ee3
2 changed files with 37 additions and 17 deletions

View File

@ -301,6 +301,27 @@ namespace DS4Windows
return principal.IsInRole(WindowsBuiltInRole.Administrator); return principal.IsInRole(WindowsBuiltInRole.Administrator);
} }
public static bool CheckForDevice(string guid)
{
bool result = false;
Guid deviceGuid = Guid.Parse(guid);
NativeMethods.SP_DEVINFO_DATA deviceInfoData =
new NativeMethods.SP_DEVINFO_DATA();
deviceInfoData.cbSize =
System.Runtime.InteropServices.Marshal.SizeOf(deviceInfoData);
IntPtr deviceInfoSet = NativeMethods.SetupDiGetClassDevs(ref deviceGuid, null, 0,
NativeMethods.DIGCF_DEVICEINTERFACE);
result = NativeMethods.SetupDiEnumDeviceInfo(deviceInfoSet, 0, ref deviceInfoData);
if (deviceInfoSet.ToInt64() != NativeMethods.INVALID_HANDLE_VALUE)
{
NativeMethods.SetupDiDestroyDeviceInfoList(deviceInfoSet);
}
return result;
}
private static bool CheckForSysDevice(string searchHardwareId) private static bool CheckForSysDevice(string searchHardwareId)
{ {
bool result = false; bool result = false;
@ -342,8 +363,7 @@ namespace DS4Windows
public static bool IsViGEmBusInstalled() public static bool IsViGEmBusInstalled()
{ {
return CheckForSysDevice(@"Root\ViGEmBus") || return CheckForDevice("{96E42B22-F5E9-42F8-B043-ED0F932F014F}");
CheckForSysDevice(@"Nefarius\ViGEmBus\Gen1");
} }
public static void FindConfigLocation() public static void FindConfigLocation()

View File

@ -15,6 +15,10 @@ namespace DS4Windows
{ {
public partial class WelcomeDialog : Form public partial class WelcomeDialog : Form
{ {
private const string InstallerDL =
"https://github.com/ViGEm/ViGEmBus/releases/download/v1.16.112/ViGEmBus_Setup_1.16.112.exe";
private const string InstFileName = "ViGEmBus_Setup_1.16.112.exe";
public WelcomeDialog(bool loadConfig=false) public WelcomeDialog(bool loadConfig=false)
{ {
if (loadConfig) if (loadConfig)
@ -40,9 +44,14 @@ namespace DS4Windows
private void bnStep1_Click(object sender, EventArgs e) private void bnStep1_Click(object sender, EventArgs e)
{ {
if (File.Exists(exepath + $"\\{InstFileName}"))
{
File.Delete(exepath + $"\\{InstFileName}");
}
WebClient wb = new WebClient(); WebClient wb = new WebClient();
wb.DownloadFileAsync(new Uri("https://github.com/Ryochan7/DS4Windows/raw/jay/extras/ViGEmBusInstaller_DS4Win.zip"), wb.DownloadFileAsync(new Uri(InstallerDL), exepath + $"\\{InstFileName}");
exepath + "\\ViGEmBusInstaller_DS4Win.zip");
wb.DownloadProgressChanged += wb_DownloadProgressChanged; wb.DownloadProgressChanged += wb_DownloadProgressChanged;
wb.DownloadFileCompleted += wb_DownloadFileCompleted; wb.DownloadFileCompleted += wb_DownloadFileCompleted;
} }
@ -59,18 +68,10 @@ namespace DS4Windows
Directory.Delete(exepath + "\\ViGEmBusInstaller", true); Directory.Delete(exepath + "\\ViGEmBusInstaller", true);
} }
if (File.Exists(exepath + "\\ViGEmBusInstaller_DS4Win.zip")) if (File.Exists(exepath + $"\\{InstFileName}"))
{
Directory.CreateDirectory(exepath + "\\ViGEmBusInstaller");
try { ZipFile.ExtractToDirectory(exepath + "\\ViGEmBusInstaller_DS4Win.zip",
exepath + "\\ViGEmBusInstaller"); } //Saved so the user can uninstall later
catch { }
}
if (File.Exists(exepath + "\\ViGEmBusInstaller\\ViGEmBusInstaller.exe"))
{ {
bnStep1.Text = Properties.Resources.OpeningInstaller; bnStep1.Text = Properties.Resources.OpeningInstaller;
Process.Start(exepath + "\\ViGEmBusInstaller\\ViGEmBusInstaller.exe", "--silent"); Process.Start(exepath + $"\\{InstFileName}", "/quiet");
bnStep1.Text = Properties.Resources.Installing; bnStep1.Text = Properties.Resources.Installing;
} }
@ -81,7 +82,7 @@ namespace DS4Windows
private void timer_Tick(object sender, EventArgs e) private void timer_Tick(object sender, EventArgs e)
{ {
Process[] processes = Process.GetProcessesByName("ViGEmBusInstaller"); Process[] processes = Process.GetProcessesByName("ViGEmBus_Setup_1.16.112");
if (processes.Length < 1) if (processes.Length < 1)
{ {
if (Global.IsViGEmBusInstalled()) if (Global.IsViGEmBusInstalled())
@ -93,8 +94,7 @@ namespace DS4Windows
this.BeginInvoke((Action)(() => { bnStep1.Text = Properties.Resources.InstallFailed; }), null); this.BeginInvoke((Action)(() => { bnStep1.Text = Properties.Resources.InstallFailed; }), null);
} }
File.Delete(exepath + $"\\{InstFileName}");
File.Delete(exepath + "\\ViGEmBusInstaller_DS4Win.zip");
((NonFormTimer)sender).Stop(); ((NonFormTimer)sender).Stop();
} }
} }