private void ValidateSupportedFfuPath()
        {
            try
            {
                if (IsSupportedFfuNeeded)
                {
                    if (SupportedFFUPath == null)
                    {
                        IsSupportedFfuValid = true; // No visible warning when there is no SupportedFFU selected yet.
                    }
                    else
                    {
                        if (!TargetHasNewFlashProtocol)
                        {
                            if (App.Config.FFURepository.Any(e => ((e.Path == SupportedFFUPath) && (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V1.1-EFIESP").First().TargetVersions.Any(v => v.Description == e.OSVersion)))))
                            {
                                IsSupportedFfuValid = true;
                            }
                            else
                            {
                                FFU SupportedFFU = new FFU(SupportedFFUPath);
                                if (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V1.1-EFIESP").First().TargetVersions.Any(v => v.Description == SupportedFFU.GetOSVersion()))
                                {
                                    IsSupportedFfuValid = true;
                                }
                                else
                                {
                                    IsSupportedFfuValid = false;
                                }
                            }
                        }
                        else
                        {
                            if (App.Config.FFURepository.Any(e => ((e.Path == SupportedFFUPath) && (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V2-EFIESP").First().TargetVersions.Any(v => v.Description == e.OSVersion)))))
                            {
                                IsSupportedFfuValid = true;
                            }
                            else
                            {
                                FFU SupportedFFU = new FFU(SupportedFFUPath);
                                if (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V2-EFIESP").First().TargetVersions.Any(v => v.Description == SupportedFFU.GetOSVersion()))
                                {
                                    IsSupportedFfuValid = true;
                                }
                                else
                                {
                                    IsSupportedFfuValid = false;
                                }
                            }
                        }
                    }
                }
                else
                {
                    IsSupportedFfuValid = true;
                }

                if (IsSupportedFfuValid && (SupportedFFUPath != null))
                {
                    ValidatedSupportedFfuPath = SupportedFFUPath;
                }
            }
            catch
            {
                IsSupportedFfuValid = false;
            }
        }
Пример #2
0
 internal void AddFfuToRepository(string FFUPath)
 {
     try
     {
         FFU NewFFU = new FFU(FFUPath);
         AddFfuToRepository(FFUPath, NewFFU.PlatformID, NewFFU.GetFirmwareVersion(), NewFFU.GetOSVersion());
     }
     catch (Exception Ex)
     {
         LogFile.LogException(Ex, LogType.FileAndConsole);
     }
 }
        private void SetSupportedFFUPath()
        {
            if (!TargetHasNewFlashProtocol)
            {
                if (this is BootRestoreResourcesViewModel)
                {
                    IsSupportedFfuNeeded = false;
                    return;
                }

                try
                {
                    FFU FFU = new FFU(_FFUPath);
                    IsSupportedFfuNeeded = !(App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V1.1-EFIESP").First().TargetVersions.Any(v => v.Description == FFU.GetOSVersion()));
                }
                catch
                {
                    IsSupportedFfuNeeded = false;
                    return;
                }

                if (IsSupportedFfuNeeded)
                {
                    FFU SupportedFFU;

                    try
                    {
                        if (_SupportedFFUPath != null)
                        {
                            SupportedFFU = new FFU(_SupportedFFUPath);
                            if (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V1.1-EFIESP").First().TargetVersions.Any(v => v.Description == SupportedFFU.GetOSVersion()))
                            {
                                return;
                            }
                        }
                    }
                    catch { }

                    try
                    {
                        string TempSupportedFFUPath = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\WPInternals", "SupportedFFUPath", null);
                        if (TempSupportedFFUPath != null)
                        {
                            SupportedFFU = new FFU(TempSupportedFFUPath);
                            if (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V1.1-EFIESP").First().TargetVersions.Any(v => v.Description == SupportedFFU.GetOSVersion()))
                            {
                                ValidatedSupportedFfuPath = TempSupportedFFUPath;
                                SupportedFFUPath          = TempSupportedFFUPath;
                                IsSupportedFfuValid       = true;
                                return;
                            }
                        }
                    }
                    catch { }

                    List <FFUEntry> FFUs = App.Config.FFURepository.Where(e => App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V1.1-EFIESP").First().TargetVersions.Any(v => v.Description == e.OSVersion)).ToList();
                    if (FFUs.Count() > 0)
                    {
                        ValidatedSupportedFfuPath = FFUs[0].Path;
                        SupportedFFUPath          = FFUs[0].Path;
                        IsSupportedFfuValid       = true;
                    }
                }
            }
            else
            {
                if ((this is BootRestoreResourcesViewModel) || (_ProfileFFUPath == null))
                {
                    IsSupportedFfuNeeded = false;
                    return;
                }

                try
                {
                    FFU ProfileFFU = new FFU(_ProfileFFUPath);
                    IsSupportedFfuNeeded = !(App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V2-EFIESP").First().TargetVersions.Any(v => v.Description == ProfileFFU.GetOSVersion()));
                }
                catch
                {
                    IsSupportedFfuNeeded = false;
                    return;
                }

                if (IsSupportedFfuNeeded)
                {
                    FFU SupportedFFU;

                    try
                    {
                        if (_SupportedFFUPath != null)
                        {
                            SupportedFFU = new FFU(_SupportedFFUPath);
                            if (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V2-EFIESP").First().TargetVersions.Any(v => v.Description == SupportedFFU.GetOSVersion()))
                            {
                                return;
                            }
                        }
                    }
                    catch { }

                    try
                    {
                        string TempSupportedFFUPath = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\WPInternals", "SupportedFFUPath", null);
                        if (TempSupportedFFUPath != null)
                        {
                            SupportedFFU = new FFU(TempSupportedFFUPath);
                            if (App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V2-EFIESP").First().TargetVersions.Any(v => v.Description == SupportedFFU.GetOSVersion()))
                            {
                                ValidatedSupportedFfuPath = TempSupportedFFUPath;
                                SupportedFFUPath          = TempSupportedFFUPath;
                                IsSupportedFfuValid       = true;
                                return;
                            }
                        }
                    }
                    catch { }

                    List <FFUEntry> FFUs = App.Config.FFURepository.Where(e => App.PatchEngine.PatchDefinitions.Where(p => p.Name == "SecureBootHack-V2-EFIESP").First().TargetVersions.Any(v => v.Description == e.OSVersion)).ToList();
                    if (FFUs.Count() > 0)
                    {
                        ValidatedSupportedFfuPath = FFUs[0].Path;
                        SupportedFFUPath          = FFUs[0].Path;
                        IsSupportedFfuValid       = true;
                    }
                }
            }
        }