public static void SendStatsAsync(string uninstallEvent) { new Thread((ThreadStart)(() => UninstallerStats.SendStats(uninstallEvent, (Dictionary <string, string>)null))) { IsBackground = true }.Start(); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); this.SetUninstallerProperties(e.Args); UninstallerStats.SendStatsAsync(UninstallerStatsEvent.UninstallStarted); new MainWindow().Show(); }
public static Dictionary <string, string> GetCommonData(string eventName) { return(new Dictionary <string, string>() { { "event", eventName }, { "install_id", UninstallerProperties.UninstallId }, { "engine_version", "4.250.0.1070" }, { "client_version", "4.250.0.1070" }, { "installer_arch", UninstallerStats.GetInstallerArch() }, { "guid", UninstallerProperties.GUID }, { "oem", "bgp" }, { "campaign_hash", UninstallerProperties.CampaignMD5 }, { "campaign_name", UninstallerProperties.CampaignName }, { "locale", UninstallerProperties.CurrentLocale }, { "time_since_launch", (App.sClock.ElapsedMilliseconds / 1000L).ToString() }, { "comment", UninstallerStats.UninstallerComment.ToString() } }); }
public static void SendUninstallCompletedStats(string userComment, string uninstallReason) { UninstallerStats.SendStats(UninstallerStatsEvent.UninstallCompleted, new Dictionary <string, string>() { { "user_comment", userComment }, { "uninstall_reason", uninstallReason } }); }
private static string ParseEnumToString(int enumVal) { string str = ""; foreach (UninstallerComments uninstallerComments in Enum.GetValues(typeof(UninstallerComments)).Cast <UninstallerComments>().ToList <UninstallerComments>()) { if (((UninstallerComments)enumVal & uninstallerComments) != (UninstallerComments)0) { str = str + UninstallerStats.ConvertIntToEnumString((int)uninstallerComments) + ","; } } int length = str.LastIndexOf(','); return(length > 0 ? str.Substring(0, length) : ""); }
public static void ReportUninstallFailedStats(string uninstallEvent) { Dictionary <string, string> commonData = UninstallerStats.GetCommonData(uninstallEvent); commonData.Add("failure_reason", UninstallerStats.ParseEnumToString(UninstallerStats.UninstallerComment)); try { Logger.Debug("Response for uninstall failed logs upload : " + BstHttpClient.HTTPGaeFileUploader(UninstallerStats.UninstallerStatsUrl, commonData, (Dictionary <string, string>)null, UninstallerProperties.LogFilePath, "text/plain", false, (string)null)); } catch (Exception ex) { Logger.Error("Failed to upload uninstall failed logs."); Logger.Error(ex.ToString()); } }
private void UninstallerBackgroundWorker_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e) { Logger.Info("uninstallation clean value : " + UninstallerStats.UninstallerComment.ToString()); if (!MainWindow.sWasUninstallationClean) { UninstallerStats.ReportUninstallFailedStats(UninstallerStatsEvent.UninstallFailed); } if (UninstallerProperties.IsRunningInSilentMode) { App.ExitApplication(); } else { this.StopProgressAnimationTimers(); this.mUninstallProgresslUserControl.Visibility = Visibility.Hidden; this.mUninstallFinishUserControl.Visibility = Visibility.Visible; this.mCloseButton.SetNormalState(); } }
public static void SendStats(string uninstallEvent, Dictionary <string, string> extraData = null) { Dictionary <string, string> commonData = UninstallerStats.GetCommonData(uninstallEvent); if (extraData != null) { foreach (KeyValuePair <string, string> keyValuePair in extraData) { commonData.Add(keyValuePair.Key, keyValuePair.Value); } } try { string str = BstHttpClient.Post(UninstallerStats.UninstallerStatsUrl, commonData, (Dictionary <string, string>)null, false, (string)null, 0, 1, 0, false, "bgp"); Logger.Debug(string.Format("Response for event {0}: {1}", (object)uninstallEvent, (object)str)); } catch (Exception ex) { Logger.Error("Failed to send stats for event: " + uninstallEvent); Logger.Error(ex.ToString()); } }
private void UninstallerBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { this.StartProgressAnimationTimers(); this.mUninstallerBackgroundWorker.ReportProgress(10, (object)LocaleStrings.GetLocalizedString("STRING_ENGINE_UNINSTALL", "")); this.QuitAndKillBlueStacks(); if (string.Equals("bgp", "bgp", StringComparison.InvariantCultureIgnoreCase)) { this.RemoveHelper(); } string tempPath = Path.GetTempPath(); string installDir = RegistryStrings.InstallDir; try { CommonInstallUtils.DeleteDirectory(RegistryStrings.InstallDir); } catch (Exception ex) { Logger.Warning("An error occured while deleting installDir"); Logger.Warning(ex.ToString()); UninstallerStats.UninstallerComment |= 1; MainWindow.sWasUninstallationClean = false; } try { CommonInstallUtils.DeleteDirectory(RegistryManager.Instance.UserDefinedDir); } catch (Exception ex) { Logger.Warning("An error occured while deleting datadir"); Logger.Warning(ex.ToString()); UninstallerStats.UninstallerComment |= 2; MainWindow.sWasUninstallationClean = false; } try { CommonInstallUtils.DeleteDirectory(RegistryManager.Instance.SetupFolder); } catch { } this.DeleteShortcuts(); this.DeleteRegistryHelper(RegistryManager.Instance.BaseKeyPath); this.DeleteRegistryHelper(Path.Combine("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", "BlueStacks" + Strings.OEMTag)); try { if (!ServiceManager.UninstallService(Strings.BlueStacksDriverName, true)) { UninstallerStats.UninstallerComment |= 8; MainWindow.sWasUninstallationClean = false; } } catch (Exception ex) { Logger.Warning("An error occured while uninstalling services"); Logger.Warning(ex.ToString()); UninstallerStats.UninstallerComment |= 8; MainWindow.sWasUninstallationClean = false; } this.mUninstallerBackgroundWorker.ReportProgress(80, (object)LocaleStrings.GetLocalizedString("STRING_CLIENT_UNINSTALL", "")); string path = Path.Combine(tempPath, "game_config.json"); try { if (File.Exists(path)) { File.Delete(path); } } catch (Exception ex) { Logger.Error("Couldnt delete " + path + ". Ex: " + ex.Message); } if (Oem.Instance.IsCreateInstallApkRegistry) { CommonInstallUtils.DeleteInstallApkScheme(installDir, "BlueStacks.Apk"); CommonInstallUtils.DeleteInstallApkScheme(installDir, "BlueStacks.Xapk"); } UninstallerStats.SendUninstallCompletedStats(this.mUserCommentString, this.mUninstallReasonString); Thread.Sleep(1000); this.mUninstallerBackgroundWorker.ReportProgress(100, (object)LocaleStrings.GetLocalizedString("STRING_UNINSTALL_FINISHED", "")); }