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", ""));
        }