private void mUpgradeBluestacksStatus_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (this.mUpgradeBluestacksStatusTextBlock.Text.ToString((IFormatProvider)CultureInfo.InvariantCulture).Equals(LocaleStrings.GetLocalizedString("STRING_DOWNLOAD_UPDATE", ""), StringComparison.OrdinalIgnoreCase)) { ClientStats.SendBluestacksUpdaterUIStatsAsync(ClientStatsEvent.SettingsGearDwnld, ""); UpdatePrompt updatePrompt1 = new UpdatePrompt(BlueStacksUpdater.sBstUpdateData); updatePrompt1.Height = 215.0; updatePrompt1.Width = 400.0; UpdatePrompt updatePrompt2 = updatePrompt1; ContainerWindow containerWindow = new ContainerWindow(this.ParentWindow, (UserControl)updatePrompt2, (double)(int)updatePrompt2.Width, (double)(int)updatePrompt2.Height, false, true, false, -1.0, (Brush)null); } else if (this.mUpgradeBluestacksStatusTextBlock.Text.ToString((IFormatProvider)CultureInfo.InvariantCulture).Equals(LocaleStrings.GetLocalizedString("STRING_DOWNLOADING_UPDATE", ""), StringComparison.OrdinalIgnoreCase)) { this.ParentWindow.mTopBar.mSettingsMenuPopup.IsOpen = false; BlueStacksUpdater.ShowDownloadProgress(); } else { if (!this.mUpgradeBluestacksStatusTextBlock.Text.ToString((IFormatProvider)CultureInfo.InvariantCulture).Equals(LocaleStrings.GetLocalizedString("STRING_INSTALL_UPDATE", ""), StringComparison.OrdinalIgnoreCase)) { return; } this.ParentWindow.ShowInstallPopup(); } }
internal static void DownloadNow(BlueStacksUpdateData bstUpdateData, bool hiddenMode) { new Thread((ThreadStart)(() => { BlueStacksUpdater.IsDownloadingInHiddenMode = hiddenMode; BlueStacksUpdater.SUpdateState = BlueStacksUpdater.UpdateState.DOWNLOADING; if (System.IO.File.Exists(bstUpdateData.UpdateDownloadLocation)) { BlueStacksUpdater.DownloadComplete(); } else { BlueStacksUpdater.ParentWindow.Dispatcher.Invoke((Delegate)(() => { BlueStacksUIBinding.Bind(BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpgradeBluestacksStatusTextBlock, "STRING_DOWNLOADING_UPDATE", ""); BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpdateDownloadProgressPercentage.Visibility = Visibility.Visible; BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpdateDownloadProgressPercentage.Content = (object)"0%"; BlueStacksUpdater.sUpdateDownloadProgress = new UpdateDownloadProgress(); BlueStacksUpdater.sUpdateDownloadProgress.mUpdateDownloadProgressPercentage.Content = (object)"0%"; BlueStacksUpdater.sUpdateDownloadProgress.Owner = (Window)BlueStacksUpdater.ParentWindow; if (hiddenMode) { return; } BlueStacksUpdater.sUpdateDownloadProgress.Show(); })); BlueStacksUpdater.DownloadUpdate(bstUpdateData); } })) { IsBackground = true }.Start(); }
private void DownloadNowButton_Click(object sender, RoutedEventArgs e) { Logger.Info("Clicked Download_Now button"); ClientStats.SendBluestacksUpdaterUIStatsAsync(ClientStatsEvent.UpgradePopupDwnld, ""); BlueStacksUpdater.DownloadNow(this.mBstUpdateData, false); BlueStacksUIUtils.CloseContainerWindow((FrameworkElement)this); }
private void mCheckUpdateBtn_Click(object sender, RoutedEventArgs e) { if (string.Equals(this.mCheckUpdateBtn.Content.ToString(), LocaleStrings.GetLocalizedString("STRING_DOWNLOAD_UPDATE", ""), StringComparison.InvariantCulture)) { BlueStacksUpdater.DownloadNow(BlueStacksUpdater.sBstUpdateData, false); ClientStats.SendBluestacksUpdaterUIStatsAsync(ClientStatsEvent.SettingDownloadUpdate, ""); } else if (string.Equals(this.mCheckUpdateBtn.Content.ToString(), LocaleStrings.GetLocalizedString("STRING_INSTALL_UPDATE", ""), StringComparison.InvariantCulture)) { this.ParentWindow.ShowInstallPopup(); ClientStats.SendBluestacksUpdaterUIStatsAsync(ClientStatsEvent.SettingInstallUpdate, ""); } else { if (!string.Equals(this.mCheckUpdateBtn.Content.ToString(), LocaleStrings.GetLocalizedString("STRING_CHECK_UPDATES", ""), StringComparison.InvariantCulture) && !string.Equals(this.mCheckUpdateBtn.Content.ToString(), LocaleStrings.GetLocalizedString("STRING_RETRY_CONNECTION_ISSUE_TEXT1", ""), StringComparison.InvariantCulture)) { return; } this.ShowCheckingForUpdateGrid(); BlueStacksUpdater.sCheckUpdateBackgroundWorker.RunWorkerCompleted -= new RunWorkerCompletedEventHandler(this.HandleCheckForUpdateResult); BlueStacksUpdater.sCheckUpdateBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.HandleCheckForUpdateResult); BlueStacksUpdater.SetupBlueStacksUpdater(this.ParentWindow, false); ClientStats.SendBluestacksUpdaterUIStatsAsync(ClientStatsEvent.SettingCheckUpdate, ""); } }
internal static void HandleUpgrade(string downloadedFilePath) { if (BlueStacksUpdater.CheckIfUpdateIsFullOrClientOnly(downloadedFilePath) == BlueStacksUpdater.UpdateType.ClientOnly) { BlueStacksUpdater.HandleClientOnlyUpgrade(downloadedFilePath); } else { BlueStacksUpdater.HandleFullUpgrade(downloadedFilePath); } RegistryManager.Instance.UpdaterFileDeletePath = RegistryManager.Instance.DownloadedUpdateFile; RegistryManager.Instance.DownloadedUpdateFile = ""; }
private static void CheckUpdateBackgroundWorker_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e) { BlueStacks.Common.Tuple <BlueStacksUpdateData, bool> result = (BlueStacks.Common.Tuple <BlueStacksUpdateData, bool>)e.Result; BlueStacksUpdateData bstUpdateData = result.Item1; bool flag = result.Item2; if (bstUpdateData.IsUpdateAvailble) { BlueStacksUpdater.ParentWindow.mTopBar.mConfigButton.ImageName = "cfgmenu_update"; BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpgradeBluestacksStatus.Visibility = Visibility.Visible; BlueStacksUIBinding.Bind(BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpgradeBluestacksStatusTextBlock, "STRING_DOWNLOAD_UPDATE", ""); BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpdateDownloadProgressPercentage.Visibility = Visibility.Collapsed; if (bstUpdateData.IsFullInstaller) { if (!flag) { return; } if (bstUpdateData.UpdateType.Equals("hard", StringComparison.InvariantCultureIgnoreCase)) { Logger.Info("Forced full installer update, starting download."); BlueStacksUpdater.DownloadNow(bstUpdateData, true); } else { if (!bstUpdateData.UpdateType.Equals("soft", StringComparison.InvariantCultureIgnoreCase) || string.Compare(bstUpdateData.EngineVersion.Trim(), RegistryManager.Instance.LastUpdateSkippedVersion.Trim(), StringComparison.OrdinalIgnoreCase) == 0) { return; } ClientStats.SendBluestacksUpdaterUIStatsAsync(ClientStatsEvent.UpgradePopup, ""); UpdatePrompt updatePrompt1 = new UpdatePrompt(bstUpdateData); updatePrompt1.Height = 215.0; updatePrompt1.Width = 400.0; UpdatePrompt updatePrompt2 = updatePrompt1; ContainerWindow containerWindow = new ContainerWindow(BlueStacksUpdater.ParentWindow, (UserControl)updatePrompt2, (double)(int)updatePrompt2.Width, (double)(int)updatePrompt2.Height, false, true, false, -1.0, (Brush)null); } } else { Logger.Info("Only client installer update, starting download."); BlueStacksUpdater.DownloadNow(bstUpdateData, true); } } else { BlueStacksUpdater.SUpdateState = BlueStacksUpdater.UpdateState.NO_UPDATE; } }
private static void DownloadComplete() { Logger.Info("Installer download completed"); BlueStacksUpdater.SUpdateState = BlueStacksUpdater.UpdateState.DOWNLOADED; BlueStacksUpdater.ParentWindow.Dispatcher.Invoke((Delegate)(() => { BlueStacksUIBinding.Bind(BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpgradeBluestacksStatusTextBlock, "STRING_INSTALL_UPDATE", ""); BlueStacksUpdater.ParentWindow.mTopBar.mPreferenceDropDownControl.mUpdateDownloadProgressPercentage.Visibility = Visibility.Collapsed; if (BlueStacksUpdater.sUpdateDownloadProgress == null) { return; } BlueStacksUpdater.sUpdateDownloadProgress.Close(); })); BlueStacksUpdater.DownloadCompleted(new BlueStacks.Common.Tuple <BlueStacksUpdateData, bool>(BlueStacksUpdater.sBstUpdateData, BlueStacksUpdater.IsDownloadingInHiddenMode)); }
private static void HandleClientOnlyUpgrade(string downloadedFilePath) { Logger.Info("In HandleClientOnlyUpgrade"); try { int num = BlueStacksUpdater.ExtractingClientInstaller(downloadedFilePath); if (num == 0) { BluestacksProcessHelper.RunUpdateInstaller(Path.Combine(Path.Combine(RegistryManager.Instance.SetupFolder, Path.GetFileNameWithoutExtension(downloadedFilePath)), "Bootstrapper.exe"), "", false); } else { Logger.Warning("Update extraction failed, ExitCode: {0}", (object)num); System.IO.File.Delete(downloadedFilePath); } } catch (Exception ex) { Logger.Error("Some Error in Client Upgrade err: ", (object)ex.ToString()); } }
public static void SetupBlueStacksUpdater(MainWindow window, bool isStartup) { BlueStacksUpdater.ParentWindow = window; if (BlueStacksUpdater.sCheckUpdateBackgroundWorker == null) { BlueStacksUpdater.sCheckUpdateBackgroundWorker = new BackgroundWorker(); BlueStacksUpdater.sCheckUpdateBackgroundWorker.DoWork += (DoWorkEventHandler)((sender, e) => { bool flag = (bool)e.Argument; BlueStacksUpdateData stacksUpdateData = BlueStacksUpdater.CheckForUpdate(!flag); BlueStacksUpdater.sBstUpdateData = stacksUpdateData; e.Result = (object)new BlueStacks.Common.Tuple <BlueStacksUpdateData, bool>(stacksUpdateData, flag); }); BlueStacksUpdater.sCheckUpdateBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BlueStacksUpdater.CheckUpdateBackgroundWorker_RunWorkerCompleted); } if (!BlueStacksUpdater.sCheckUpdateBackgroundWorker.IsBusy) { BlueStacksUpdater.sCheckUpdateBackgroundWorker.RunWorkerAsync((object)isStartup); } else { Logger.Info("Not launching update checking thread, since already running"); } }
internal static void CheckDownloadedUpdateFileAndUpdate() { using (BackgroundWorker backgroundWorker = new BackgroundWorker()) { backgroundWorker.DoWork += (DoWorkEventHandler)((sender, args) => BlueStacksUpdater.HandleUpgrade(RegistryManager.Instance.DownloadedUpdateFile)); backgroundWorker.RunWorkerCompleted += (RunWorkerCompletedEventHandler)((sender, args2) => App.ExitApplication()); backgroundWorker.RunWorkerAsync(); } }
private static void Downloader_DownloadFileCompleted(object sender, EventArgs args) { Logger.Info("File downloaded successfully at {0}", (object)BlueStacksUpdater.sBstUpdateData?.UpdateDownloadLocation); BlueStacksUpdater.DownloadComplete(); }
public static void Main(string[] args) { Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); App.InitExceptionAndLogging(); ProcessUtils.LogParentProcessDetails(); if (args != null) { App.ParseWebMagnetArgs(ref args); Opt.Instance.Parse(args); } string path = Path.Combine(Path.Combine(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory.Trim('\\')).FullName, "Engine"), "Oem.cfg"); Oem.CurrentOemFilePath = System.IO.File.Exists(path) ? path : Path.Combine(RegistryManager.Instance.EngineDataDir, "Oem.cfg"); PortableInstaller.CheckAndRunPortableInstaller(); if (!RegistryManager.Instance.Guest.ContainsKey(Opt.Instance.vmname)) { Opt.Instance.vmname = "Android"; } BlueStacks.Common.Strings.CurrentDefaultVmName = Opt.Instance.vmname; if (Opt.Instance.mergeCfg) { KMManager.MergeConfig(Opt.Instance.newPDPath); Environment.Exit(0); } string mBSTProcessIdentifier = "Bluestacks/" + RegistryManager.Instance.ClientVersion; if (!string.Join(string.Empty, args).Contains(mBSTProcessIdentifier)) { Logger.Info("BOOT_STAGE: Client starting"); if (Oem.IsOEMDmm) { Logger.Info("checking DMMGamePlayer process"); if (!ProcessUtils.FindProcessByName("DMMGamePlayer") && !ProcessUtils.FindProcessByName("dmmemulatorsandboxlauncher")) { Logger.Info("DMM game player not running, so exiting"); Environment.Exit(0); } } RegistryManager.ClientThemeName = RegistryManager.Instance.GetClientThemeNameFromRegistry(); if (Oem.IsOEMDmm || !BlueStacksUpdater.CheckIfDownloadedFileExist()) { App app = new App(); app.Startup += new StartupEventHandler(App.Application_Startup); app.ShutdownMode = ShutdownMode.OnExplicitShutdown; app.InitializeComponent(); App.CheckIfAlreadyRunning(); RegistryManager.Instance.ClientLaunchParams = Opt.Instance.Json; App.defaultResolution = new Fraction((long)RegistryManager.Instance.Guest[BlueStacks.Common.Strings.CurrentDefaultVmName].GuestWidth, (long)RegistryManager.Instance.Guest[BlueStacks.Common.Strings.CurrentDefaultVmName].GuestHeight); SystemEvents.DisplaySettingsChanged += new EventHandler(App.HandleDisplaySettingsChanged); BGPHelper.InitHttpServerAsync(); BlueStacksUIUtils.RunInstance(BlueStacks.Common.Strings.CurrentDefaultVmName, Opt.Instance.h, Opt.Instance.Json); AppUsageTimer.SessionEventHandler(); if (!Oem.IsOEMDmm) { PromotionManager.ReloadPromotionsAsync(); GrmManager.UpdateGrmAsync((IEnumerable <string>)null); GuidanceCloudInfoManager.Instance.AppsGuidanceCloudInfoRefresh(); } if (!FeatureManager.Instance.IsHtmlHome) { BlueStacksUIUtils.DictWindows[BlueStacks.Common.Strings.CurrentDefaultVmName].CreateFirebaseBrowserControl(); } MemoryManager.TrimMemory(true); app.Run(); } else { BlueStacksUpdater.HandleUpgrade(RegistryManager.Instance.DownloadedUpdateFile); } } else { CefHelper.InitCef(args, mBSTProcessIdentifier); } AppUsageTimer.DetachSessionEventHandler(); CefRuntime.Shutdown(); App.ExitApplication(); }