Страница 1 из 4
Uninstaller64
Добавлено: Сб июн 09, 2012 01:18
CaptainFlint
Представляю на суд общественности новый плагин
Uninstaller64, разработанный как современная альтернатива старенькому UnInstaller'у. Основное отличие, ради чего плагин, собственно, и задумывался — поддержка 64-битных систем, причём не только в виде наличия 64-битной версии плагина как таковой, но и в виде отображения в списке как 32-битных, так и 64-битных установленных программ. Разумеется, не был обойдён стороной и Юникод, без поддержки которого уже было бы просто стыдно выкладывать плагин; нашлось местечко и для других, более мелких приятностей типа информационных полей, возможности хранения настроек в разных каталогах и т.п. Полный список отличий можно найти в истории изменений, опубликованной как в ReadMe-файлах в архиве с плагином, так и на
странице плагина.
Ссылки на версию 1.0.1 (25.06.2012):
x32+x64 /
зеркало (234 Кб)
Исходный код (C++) /
зеркало (69 Кб)
Добавлено: Сб июн 09, 2012 03:02
Mishail
CaptainFlint
Спасибо.
Почему-то у меня плагин показывает уже удаленные программы. Галки про Show Hotfixes и Hidden Updates *не* стоят.
Вот такие
http://dl.dropbox.com/u/1296492/uninst/uninstbug.png
Windows Unistall их не показывает
http://dl.dropbox.com/u/1296492/uninst/uninst.png
TC 8, x64
Добавлено: Сб июн 09, 2012 03:19
LonerD
Спасибо.
WinXP SP3 Rus TC 8.0.
Попробовал три программы удалить.
После удаления программ это никак не отображается, они не исчезают из списка и иконки не изменяют свой вид.
После обновления страницы одно из удалённых приложений пропало из списка, ещё два - остались (у них пропали только иконки).
Вышел/вошёл в плагин - не помогло.
В то же время в другой программе-удалялке эти приложения уже не отображались (то есть "помнил" о них только плагин).
После перезапуска Тотала приложения наконец исчезли из списка в плагине.
Добавлено: Сб июн 09, 2012 10:41
CaptainFlint
Mishail
Скопируй эти записи как файлы и выложи куда-нибудь вместе с дампом указанных там веток реестра, чтобы я мог глянуть. Но вообще, алгоритм показа записей деинсталляции в самой Windows остаётся тайной за семью печатями, и не факт, что удастся разгадать точный критерий.
LonerD
Странно, у себя такого не наблюдал. Боюсь, что тут нужны эксперименты. Если что-то такое произойдёт снова, нужно проверить, остались ли в реестре соответствующие ключи. Если остались, то это та же проблема, что и выше — незнание точных критериев скрытия записи. Если исчезли, то запись однозначно должна исчезнуть из списка. Я тогда вставлю код логирования в плагин, чтобы можно было понять, что он видит и почему не очищает несуществующие элементы.
Добавлено: Сб июн 09, 2012 13:38
LonerD
CaptainFlint
Если что-то такое произойдёт снова
А оно только такое и происходит.
Записи в реестре удаляются после удаления программ.
Значки (иконки) программ после удаления так и остаются висеть в списке.
В некоторых случаях после ручного обновления панели (cm_RereadSource) удалённые программы исчезают из списка.
В других случаях - остаются в списке, и даже не обновляется иконка. После того, как зайду-выйду из плагина - иконка изменится, символизируя, что программа удалена. Но только после перезагрузки Тотала запись об удалённой программе исчезнет.
Более того. Захожу в плагин, то-сё, выхожу из плагина. Удаляю какую-нибудь программу (штатным или виндовским или сторонним деинсталлятором), захожу опять в плагин - а удалённая программа висит в списке и продолжает висеть до перезагрузки Тотала.
Плагин попросту не перечитывает (не обновляет) состояние установленных программ.
Добавлено: Сб июн 09, 2012 16:24
CaptainFlint
Добавлено: Сб июн 09, 2012 16:37
LonerD
CaptainFlint
Попробовал на нескольких программах.
Удаляются, после удаления остаются висеть записи в списке, которые исчезают после cm_RereadSource.
Может, стоит ещё добавить принудительное перечитывание панели после удаления каждой программы? Или плагин "не знает", что запущенный деинсталлятор уже отработал?
Добавлено: Сб июн 09, 2012 17:01
CaptainFlint
LonerD писал(а):Может, стоит ещё добавить принудительное перечитывание панели после удаления каждой программы? Или плагин "не знает", что запущенный деинсталлятор уже отработал?
Думал об этом, но здесь есть много подводных камней. Когда я запустил деинсталлятор, я возвращаю управление Тоталу, чтобы он не оставался в подвисшем состоянии, пока деинсталлятор не завершится. Плагин мог бы ожидать завершения работы деинсталлятора в фоновом потоке, но представь, что ты запустил деинсталляцию (долгую), а сам в это время продолжаешь работать в Тотале. Уже ушёл из плагина, и, например, открыл какой-то архив. И тут деинсталлятор завершается, мой фоновый поток посылает в Тотал команду обновления панели, и тебя тут же выкидывает из архива, потому что именно такова реакция Тотала на эту команду. Или сбрасывает быстрый фильтр. Или вызывает обновление мега-тормозного сетевого диска, которого ты дожидался две минуты и буквально только что дождался…
Добавлено: Сб июн 09, 2012 17:22
LonerD
Да, всё верно. И старенький деинсталлятор тоже не обновлял список программ. Тогда, думаю, можно остановиться на нынешнем результате.
Когда я запустил деинсталлятор, я возвращаю управление Тоталу, чтобы он не оставался в подвисшем состоянии, пока деинсталлятор не завершится.
Полностью возвращает? Или частично в памяти сидит и "наблюдает за процессом"?
Что если после деинсталляции сделать проверку - открыт ли у пользователя на панели плагин? Если открыт - перечитать содержимое списка, а если не открыт - то ничего не делать (раз пользователь перешёл в другой каталог, то всё-равно список установленных программ автоматом перечитается при следующем открытии плагина).
Добавлено: Сб июн 09, 2012 18:14
CaptainFlint
LonerD писал(а):Полностью возвращает? Или частично в памяти сидит и "наблюдает за процессом"?
Сейчас — полностью. В памяти он, разумеется, продолжает сидеть, как любой другой загруженный и инициализированный плагин, но это сидение пассивное.
LonerD писал(а):Что если после деинсталляции сделать проверку - открыт ли у пользователя на панели плагин? Если открыт - перечитать содержимое списка, а если не открыт - то ничего не делать (раз пользователь перешёл в другой каталог, то всё-равно список установленных программ автоматом перечитается при следующем открытии плагина).
Это недостаточное условие. Надо ещё проверить, не активна ли сейчас быстрая фильтрация, т.к. перечитывание панели её убьёт, причём нормального способа это проверить не существует (разве что получить из Тотала количество элементов в списке и сравнить с реальным количеством, да и то, может так получиться, что все элементы подошли под условие фильтра). Кроме того, определить принадлежность панели плагину я смогу только по имени в заголовке или около командной строки. Но пользователь мог и переименовать плагин. Например, если у него разные команды и кнопки работали со старым Uninstaller'ом, он может его удалить, поставить Uninstaller64, а имя виртуальной папки дать Uninstaller, чтобы все прежние скрипты работали без модификации.
Я уж не говорю, что подобные действия являются серьёзным отклонением от стандартного API, и это может привести к неработоспособности плагина в будущем. Гислер обеспечивает совместимость плагинов с Тоталом в рамках предусмотренного набора функциональности, а если плагин лезет за его пределы, то существенно повышается риск огрести проблем. И хорошо, если просто автообновление перестанет работать, а то ведь может случиться, как, например, с плагином AceHelper, в котором невиннейшая система автообновления спсика при переходе на Windows Vista стала зацикливаться и сделала использование плагина невозможным.
Добавлено: Сб июн 09, 2012 23:39
Mishail
CaptainFlint писал(а):Mishail
Скопируй эти записи как файлы и выложи куда-нибудь вместе с дампом указанных там веток реестра, чтобы я мог глянуть.
_ttps://dl.dropbox.com/u/1296492/uninst/JavaFX%202.0.2.W008C.htm
_ttps://dl.dropbox.com/u/1296492/uninst/re.reg
Добавлено: Вс июн 10, 2012 00:48
CaptainFlint
Mishail
Спасибо. Как я и боялся, ничем особенным не выделяется.
Впрочем, есть одна идейка… Проверь, пожалуйста, существует ли у тебя хотя бы один из следующих ключей:
Код: Выделить всё
HKEY_CLASSES_ROOT\Installer\Products\F6071111A6667304777702328267D401
HKEY_CLASSES_ROOT\Wow6432Node\Installer\Products\F6071111A6667304777702328267D401
HKEY_CURRENT_USER\Software\Microsoft\Installer\Products\F6071111A6667304777702328267D401
Если да, то тоже хотелось бы дамп глянуть.
Добавлено: Вс июн 10, 2012 00:48
flm
Потестим! Ещё бы кто взялся за современные аналоги Services и Task manager'а...
Добавлено: Вс июн 10, 2012 02:47
Mishail
CaptainFlint
Нет, таких ключей нет, но есть
Код: Выделить всё
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-21-1374901071-2721160156-2645670812-500\Products\F6071111A6667304777702328267D401]
Дамп тут _ttps://dl.dropbox.com/u/1296492/uninst/reg2.reg
Добавлено: Пн июн 11, 2012 04:49
LonerD
Ещё бы кто взялся за современные аналоги Services и Task manager'а.
Много за что можно взяться

Из wfx - хотелось бы в первую очередь увидеть обновлённые и 64-битные версии плагинов AceHelper, Device Manager, Services (
исходники вроде доступны ошибся, недоступны), StartupGuard, Wipe.
А в целом - из используемых лично мною плагинов ещё 35 штук (из более сотни) не имеют 64-битных аналогов (из них около 20 штук - не позволяют пока мне перейти на 64-битный Тотал)