View previous topic :: View next topic |
Author |
Message |
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Jun 09, 2012 01:18 Post subject: Uninstaller64 |
|
|
Представляю на суд общественности новый плагин Uninstaller64, разработанный как современная альтернатива старенькому UnInstaller'у. Основное отличие, ради чего плагин, собственно, и задумывался — поддержка 64-битных систем, причём не только в виде наличия 64-битной версии плагина как таковой, но и в виде отображения в списке как 32-битных, так и 64-битных установленных программ. Разумеется, не был обойдён стороной и Юникод, без поддержки которого уже было бы просто стыдно выкладывать плагин; нашлось местечко и для других, более мелких приятностей типа информационных полей, возможности хранения настроек в разных каталогах и т.п. Полный список отличий можно найти в истории изменений, опубликованной как в ReadMe-файлах в архиве с плагином, так и на странице плагина.
Ссылки на версию 1.0.1 (25.06.2012):
x32+x64 / зеркало (234 Кб)
Исходный код (C++) / зеркало (69 Кб) _________________ Почему же, ё-моё, ты нигде не пишешь "ё"?
Last edited by CaptainFlint on Tue Jun 26, 2012 00:45; edited 2 times in total |
|
Back to top |
|
|
Mishail
Joined: 15 Dec 2004 Posts: 4 Location: Владивосток
|
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jun 09, 2012 03:19 Post subject: |
|
|
Спасибо.
WinXP SP3 Rus TC 8.0.
Попробовал три программы удалить.
После удаления программ это никак не отображается, они не исчезают из списка и иконки не изменяют свой вид.
После обновления страницы одно из удалённых приложений пропало из списка, ещё два - остались (у них пропали только иконки).
Вышел/вошёл в плагин - не помогло.
В то же время в другой программе-удалялке эти приложения уже не отображались (то есть "помнил" о них только плагин).
После перезапуска Тотала приложения наконец исчезли из списка в плагине. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Jun 09, 2012 10:41 Post subject: |
|
|
Mishail
Скопируй эти записи как файлы и выложи куда-нибудь вместе с дампом указанных там веток реестра, чтобы я мог глянуть. Но вообще, алгоритм показа записей деинсталляции в самой Windows остаётся тайной за семью печатями, и не факт, что удастся разгадать точный критерий.
LonerD
Странно, у себя такого не наблюдал. Боюсь, что тут нужны эксперименты. Если что-то такое произойдёт снова, нужно проверить, остались ли в реестре соответствующие ключи. Если остались, то это та же проблема, что и выше — незнание точных критериев скрытия записи. Если исчезли, то запись однозначно должна исчезнуть из списка. Я тогда вставлю код логирования в плагин, чтобы можно было понять, что он видит и почему не очищает несуществующие элементы. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jun 09, 2012 13:38 Post subject: |
|
|
CaptainFlint
Quote: | Если что-то такое произойдёт снова |
А оно только такое и происходит.
Записи в реестре удаляются после удаления программ.
Значки (иконки) программ после удаления так и остаются висеть в списке.
В некоторых случаях после ручного обновления панели (cm_RereadSource) удалённые программы исчезают из списка.
В других случаях - остаются в списке, и даже не обновляется иконка. После того, как зайду-выйду из плагина - иконка изменится, символизируя, что программа удалена. Но только после перезагрузки Тотала запись об удалённой программе исчезнет.
Более того. Захожу в плагин, то-сё, выхожу из плагина. Удаляю какую-нибудь программу (штатным или виндовским или сторонним деинсталлятором), захожу опять в плагин - а удалённая программа висит в списке и продолжает висеть до перезагрузки Тотала.
Плагин попросту не перечитывает (не обновляет) состояние установленных программ. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jun 09, 2012 16:37 Post subject: |
|
|
CaptainFlint
Попробовал на нескольких программах.
Удаляются, после удаления остаются висеть записи в списке, которые исчезают после cm_RereadSource.
Может, стоит ещё добавить принудительное перечитывание панели после удаления каждой программы? Или плагин "не знает", что запущенный деинсталлятор уже отработал? |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Jun 09, 2012 17:01 Post subject: |
|
|
LonerD wrote: | Может, стоит ещё добавить принудительное перечитывание панели после удаления каждой программы? Или плагин "не знает", что запущенный деинсталлятор уже отработал? |
Думал об этом, но здесь есть много подводных камней. Когда я запустил деинсталлятор, я возвращаю управление Тоталу, чтобы он не оставался в подвисшем состоянии, пока деинсталлятор не завершится. Плагин мог бы ожидать завершения работы деинсталлятора в фоновом потоке, но представь, что ты запустил деинсталляцию (долгую), а сам в это время продолжаешь работать в Тотале. Уже ушёл из плагина, и, например, открыл какой-то архив. И тут деинсталлятор завершается, мой фоновый поток посылает в Тотал команду обновления панели, и тебя тут же выкидывает из архива, потому что именно такова реакция Тотала на эту команду. Или сбрасывает быстрый фильтр. Или вызывает обновление мега-тормозного сетевого диска, которого ты дожидался две минуты и буквально только что дождался… _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Sat Jun 09, 2012 17:22 Post subject: |
|
|
Да, всё верно. И старенький деинсталлятор тоже не обновлял список программ. Тогда, думаю, можно остановиться на нынешнем результате.
Quote: | Когда я запустил деинсталлятор, я возвращаю управление Тоталу, чтобы он не оставался в подвисшем состоянии, пока деинсталлятор не завершится. |
Полностью возвращает? Или частично в памяти сидит и "наблюдает за процессом"?
Что если после деинсталляции сделать проверку - открыт ли у пользователя на панели плагин? Если открыт - перечитать содержимое списка, а если не открыт - то ничего не делать (раз пользователь перешёл в другой каталог, то всё-равно список установленных программ автоматом перечитается при следующем открытии плагина). |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Jun 09, 2012 18:14 Post subject: |
|
|
LonerD wrote: | Полностью возвращает? Или частично в памяти сидит и "наблюдает за процессом"? |
Сейчас — полностью. В памяти он, разумеется, продолжает сидеть, как любой другой загруженный и инициализированный плагин, но это сидение пассивное.
LonerD wrote: | Что если после деинсталляции сделать проверку - открыт ли у пользователя на панели плагин? Если открыт - перечитать содержимое списка, а если не открыт - то ничего не делать (раз пользователь перешёл в другой каталог, то всё-равно список установленных программ автоматом перечитается при следующем открытии плагина). |
Это недостаточное условие. Надо ещё проверить, не активна ли сейчас быстрая фильтрация, т.к. перечитывание панели её убьёт, причём нормального способа это проверить не существует (разве что получить из Тотала количество элементов в списке и сравнить с реальным количеством, да и то, может так получиться, что все элементы подошли под условие фильтра). Кроме того, определить принадлежность панели плагину я смогу только по имени в заголовке или около командной строки. Но пользователь мог и переименовать плагин. Например, если у него разные команды и кнопки работали со старым Uninstaller'ом, он может его удалить, поставить Uninstaller64, а имя виртуальной папки дать Uninstaller, чтобы все прежние скрипты работали без модификации.
Я уж не говорю, что подобные действия являются серьёзным отклонением от стандартного API, и это может привести к неработоспособности плагина в будущем. Гислер обеспечивает совместимость плагинов с Тоталом в рамках предусмотренного набора функциональности, а если плагин лезет за его пределы, то существенно повышается риск огрести проблем. И хорошо, если просто автообновление перестанет работать, а то ведь может случиться, как, например, с плагином AceHelper, в котором невиннейшая система автообновления спсика при переходе на Windows Vista стала зацикливаться и сделала использование плагина невозможным. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Mishail
Joined: 15 Dec 2004 Posts: 4 Location: Владивосток
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sun Jun 10, 2012 00:48 Post subject: |
|
|
Mishail
Спасибо. Как я и боялся, ничем особенным не выделяется.
Впрочем, есть одна идейка… Проверь, пожалуйста, существует ли у тебя хотя бы один из следующих ключей:
Code: | HKEY_CLASSES_ROOT\Installer\Products\F6071111A6667304777702328267D401
HKEY_CLASSES_ROOT\Wow6432Node\Installer\Products\F6071111A6667304777702328267D401
HKEY_CURRENT_USER\Software\Microsoft\Installer\Products\F6071111A6667304777702328267D401 |
Если да, то тоже хотелось бы дамп глянуть. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
flm
Joined: 09 Dec 2007 Posts: 467
|
(Separately) Posted: Sun Jun 10, 2012 00:48 Post subject: |
|
|
Потестим! Ещё бы кто взялся за современные аналоги Services и Task manager'а... _________________ cogito ergo sum
http://www.yakimchuk.ru/questions.htm - Как правильно задавать вопросы |
|
Back to top |
|
|
Mishail
Joined: 15 Dec 2004 Posts: 4 Location: Владивосток
|
(Separately) Posted: Sun Jun 10, 2012 02:47 Post subject: |
|
|
CaptainFlint
Нет, таких ключей нет, но есть
Code: | [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 |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1168 Location: Донецк
|
(Separately) Posted: Mon Jun 11, 2012 04:49 Post subject: |
|
|
Quote: | Ещё бы кто взялся за современные аналоги Services и Task manager'а. |
Много за что можно взяться
Из wfx - хотелось бы в первую очередь увидеть обновлённые и 64-битные версии плагинов AceHelper, Device Manager, Services (исходники вроде доступны ошибся, недоступны), StartupGuard, Wipe.
А в целом - из используемых лично мною плагинов ещё 35 штук (из более сотни) не имеют 64-битных аналогов (из них около 20 штук - не позволяют пока мне перейти на 64-битный Тотал)
Last edited by LonerD on Mon Jun 11, 2012 19:13; edited 1 time in total |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|