Example #1
0
        internal static void ReinstallAddon(string _AddonName, WowVersionEnum _WowVersion)
        {
            //Delete WTF files
            var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(_AddonName, _WowVersion);

            savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(_AddonName, _WowVersion));
            foreach (string savedVariableFile in savedVariableFiles)
            {
                Utility.DeleteFile(savedVariableFile);
            }
            //Delete WTF files
        }
Example #2
0
        internal static string BackupAddons(List <string> _AddonNames, WowVersionEnum _WowVersion, AddonBackupMode _BackupMode = AddonBackupMode.BackupWTF_And_AddonFiles)
        {
            int    fileID         = System.Threading.Interlocked.Increment(ref g_UniqueFileIDCounter);
            string backupFileName = StaticValues.LauncherBackupsDirectory + DateTime.Now.ToString("yyyy_MM_dd") + "/BackupAddons_" + DateTime.Now.ToString("HH_mm_ss") + "." + fileID + ".zip";

            Utility.AssertFilePath(backupFileName);

            ZipFile zipFile;

            if (System.IO.File.Exists(backupFileName) == true)
            {
                backupFileName = Utility.ConvertToUniqueFilename(backupFileName, '.');
            }
            if (System.IO.File.Exists(backupFileName) == true)
            {
                throw new Exception("Backup file already exists");
            }

            zipFile = ZipFile.Create(backupFileName);

            zipFile.BeginUpdate();

            foreach (var addonName in _AddonNames)
            {
                if (_BackupMode.HasFlag(AddonBackupMode.BackupWTF))
                {
                    string wtfAccStartPath    = Settings.GetWowDirectory(_WowVersion);
                    var    savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(addonName, _WowVersion);
                    savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(addonName, _WowVersion));

                    foreach (string savedVariableFile in savedVariableFiles)
                    {
                        zipFile.Add(savedVariableFile, savedVariableFile.Substring(wtfAccStartPath.Length));
                    }
                }
                if (_BackupMode.HasFlag(AddonBackupMode.BackupAddonFiles))
                {
                    if (System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addonName))
                    {
                        zipFile.AddDirectoryFilesRecursive(Settings.GetWowDirectory(_WowVersion), Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addonName);
                    }
                }
            }
            zipFile.CommitUpdate();
            zipFile.Close();
            return(backupFileName);
        }
Example #3
0
        internal static bool UninstallAddon(string _AddonName, WowVersionEnum _WowVersion)
        {
            if (System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + _AddonName))
            {
                Utility.DeleteDirectory(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + _AddonName);

                //Delete WTF files
                var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(_AddonName, _WowVersion);
                savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(_AddonName, _WowVersion));
                foreach (string savedVariableFile in savedVariableFiles)
                {
                    Utility.DeleteFile(savedVariableFile);
                }
                //Delete WTF files
            }
            return(System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + _AddonName) == false);
        }
Example #4
0
        internal static List <string> InstallAddonPackage(string _AddonZipFilePackage, WowVersionEnum _WowVersion, Action <float> _InstallProgress = null, bool _ClearWTFSettings = false)
        {
            List <string> addonsInPackage = GetAddonsInAddonPackage(_AddonZipFilePackage);

            _InstallProgress(0.2f);
            string backupFile = BackupAddons(addonsInPackage, _WowVersion);

            _InstallProgress(0.4f);
            for (int i = 0; i < addonsInPackage.Count; ++i)
            {
                string addon = addonsInPackage[i];
                if (_ClearWTFSettings == true)
                {
                    var savedVariableFiles = WowUtility.GetPerCharacterSavedVariableFilePaths(addon, _WowVersion);
                    savedVariableFiles.AddRange(WowUtility.GetSavedVariableFilePaths(addon, _WowVersion));
                    foreach (string savedVariableFile in savedVariableFiles)
                    {
                        Utility.DeleteFile(savedVariableFile);
                    }
                }
                if (System.IO.Directory.Exists(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addon))
                {
                    Utility.DeleteDirectory(Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\" + addon);
                }
                _InstallProgress(0.4f + ((float)(i + 1) / (float)addonsInPackage.Count) * 0.4f);
            }

            _InstallProgress(0.8f);
            try
            {
                FastZip fastZip = new FastZip();
                fastZip.ExtractZip(_AddonZipFilePackage, Settings.GetWowDirectory(_WowVersion) + "Interface\\AddOns\\", null);
                _InstallProgress(1.0f);
                return(addonsInPackage);
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
                Utility.MessageBoxShow("There was an error extracting the AddonPackage, Backup of anything deleted/replaced exists in the \"" + backupFile + "\" unfortunately automatic restoration is not implemented yet");
            }
            return(null);
        }