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 }
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); }
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); }
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); }
internal static List <string> SendAddonData(string _UserID, string _AddonName, WowVersionEnum _WowVersion, string _ClearLuaVariableName, int _LuaVariableDataLengthThreshold, out bool _SentAll) { var savedVariableFiles = WowUtility.GetSavedVariableFilePaths(_AddonName, _WowVersion);//For Accounts only _LuaVariableDataLengthThreshold = _LuaVariableDataLengthThreshold + 12 /*newlines = {} osv osv*/ + _ClearLuaVariableName.Length; VF.NetworkClient netClient = sm_Client; if (netClient != null && netClient.IsConnected() == false) { netClient.Disconnect(); netClient = null; } List <string> sentAddonFiles = new List <string>(); _SentAll = true;//Default läge try { foreach (var luaFilePath in savedVariableFiles) { string luaFileData = System.IO.File.ReadAllText(luaFilePath); string resultFileData = ""; string variableData = ""; if (WowUtility.ExtractLuaVariableFromFile(luaFileData, _ClearLuaVariableName, out resultFileData, out variableData) == true) { if (variableData.Length < _LuaVariableDataLengthThreshold) { continue; } if (netClient == null) { Logger.ConsoleWriteLine("Trying to connect to server...", ConsoleColor.Gray); netClient = new VF.NetworkClient(g_Host, g_Port); //realmplayers.com Logger.ConsoleWriteLine("Connected to server!", ConsoleColor.Green); } WLN_UploadPacket_AddonData addonData = new WLN_UploadPacket_AddonData(); addonData.AddonName = _AddonName; addonData.UserID = _UserID; addonData.FileStatus = WowUtility.GetFileStatus(luaFilePath); addonData.Data = luaFileData; var newMessage = netClient.CreateMessage(); newMessage.WriteByte((byte)WLN_PacketType.Upload_AddonData); newMessage.WriteClass(addonData); netClient.WaitForConnect(TimeSpan.FromSeconds(60)); netClient.SendMessage(newMessage); Logger.ConsoleWriteLine("Sent SavedVariables file \"" + luaFilePath + "\". Waiting for Response...", ConsoleColor.Gray); WLN_UploadPacket_SuccessResponse response; if (netClient.RecvPacket_VF(WLN_PacketType.Upload_SuccessResponse, out response, TimeSpan.FromSeconds(60)) == true) { Logger.ConsoleWriteLine("Received Response. Data was sent successfully!. Deleting old data", ConsoleColor.Gray); sentAddonFiles.Add(luaFilePath); if (response.MessageToUser != "") { Utility.MessageBoxShow(response.MessageToUser, "Message from Server"); } //TODO: Do something with "response.MessageToUser" System.IO.File.WriteAllText(luaFilePath, resultFileData); //Save the lua file with the variable cleared Logger.ConsoleWriteLine("Operation Successfull! Preparing for next file.", ConsoleColor.Green); } else { Logger.ConsoleWriteLine("Operation Failed! Preparing for next file.", ConsoleColor.Red); _SentAll = false; } } else { } } } catch (Exception ex) { Logger.LogException(ex); _SentAll = false; } finally { if (_SentAll == false) { if (netClient != null) { netClient.Disconnect(); netClient = null; } } sm_Client = netClient; } return(sentAddonFiles); }