Наверное, не только у меня, но и у многих стоит дофига аддонов с "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, вся перда. Копирайты мои ))