Наверное, не только у меня, но и у многих стоит дофига аддонов с "WowAce.com". Понятно, что для того, что бы они работали они все используют библиотеку "Ace", однако поскольку каждый из этих аддонов тащит с собой эту самую библиотеку в итоге получается фигня. Объективное решение - поставить библиотеку "Ace2" и удалить потом все ненужные ее копии. Это позволит сэкономить немного памяти при работе аддонов, и естественно чуть улучшит латенси на стороне клиента.
Поэтому я наваял скриптик под винду, может быть кому пригодится. Особенно удобен будет при использовании "WUU"
=============================
Как пользоваться :
1. Изменить путь к директории с аддонами
2. сохранить текст в файл с расширением "js"
3. запускать после обновления аддонов
3.1 результат пишется в папку с аддонами, в файл AceCleanup.log
Естественно, что у процесса Windows Scripting Host должны быть права на удаление файлов и директорий
=============================
// Name : "AceLibs cleaner" // Version : 0.1 // Author : Mimikriya [kartun@yandex.ru] // где искать var dir = "D:\\World of Warcraft\\Interface\\AddOns"; // что искать (все папки, которые содержат текст "Ace") var regex = new RegExp("Ace*", "i"); var libs = "\\libs"; var filesys = WScript.CreateObject("Scripting.FileSystemObject"); var filelist = filesys.CreateTextFile(dir+"\\AceCleanup.log", true, false); var counter = 0; filelist.WriteLine("Starting : "); function deal_with_dir(dir1) { // чё с ними делать // WScript.Echo('deleted: ' + dir + "\\" +dir1); filelist.WriteLine(dir+ "\\"+dir1); if (filesys.DeleteFolder(dir + "\\" +dir1, true)) { counter++ }; } // основной цикл var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); for ( var datam=new Enumerator(fileSystem.GetFolder(dir).SubFolders); !datam.atEnd(); datam.moveNext()) { if (fileSystem.FolderExists(datam.item().Name+libs)) { for ( var datas=new Enumerator(fileSystem.GetFolder(datam.item().Name+libs).SubFolders); !datas.atEnd(); datas.moveNext()) { //filelist.WriteLine(datam.item().Name); //WScript.Echo(datas.item().Name); if ( regex.test(datas.item().Name) ) deal_with_dir(datam.item().Name+libs+"\\"+datas.item().Name); } } } filelist.WriteLine("Finished : \nDeleted:"+counter); filelist.Close();
Смотрите, пробуйте. У меня работает, пожелания и предложения приветствуются. Багрепорты тоже.
Собственно opensource, gpl, вся перда. Копирайты мои ))