![]() |
[тестируем] Утилита для сохранения и восстановления ассоциаций файлов
Вложений: 4
Благодаря отпуску в ноябре 2007 года увлекся темой автоматической установки Windows и приложений и с удивлением обнаружил, что не могу найти ничего подходящего для сохранения и восстановления ассоциаций файлов. Процедура сама по себе очень простая, поэтому решил написать небольшую утилитку для командной строки.
Для отладки сделал GUI-версию на Delphi 7, но когда получил желаемые CMD-файлы, интерес к проекту ослаб. Чтобы не пропало добро, выкладываю здесь вместе с исходниками. Программа требует полное имя файла, просматривает реестр, выискивая ассоциации, показывает их и предлагает записать в CMD-файл, INF или REG-файлы. В CMD и INF вместо абсолютных путей есть возможность сохранить переменные среды. Сделана также версия для командной строки. Новая версия 0.1: 1) добавлен поиск и сохранение ассоциаций по shell\view (использует ArtIcons Pro); 2) исправлена ошибка: кавычка для команды REG в CMD-файле теперь утраивается; 3) команды ASSOC и FTYPE в CMD-файле заменены на REG ADD; 4) более наглядное отображение ассоциаций в AssView; 5) проект теперь компилируется во FreePascal/Lazarus. Образец генерируемых файлов для версии 0.1 beta (7-Zip 4.56) и версии 0.1 (7-Zip 4.58) прилагается. Когда версия 0.1 "приживется", 0.1 beta будет удалена. |
Bulba_S,
AssView - название!! Это пять!! ;) |
:-)
|
Да уж поменяй название, а то программа ассоциации вызывает другие ассоциации :D
|
Ну, если появится необходимость доработать что-то еще, кроме названия, постараюсь поменять. Хотя, честно говоря, мне теперь название еще больше нравится, чем когда я его придумал ;)
... Ay_Emul: Mumiy Troll - Yadovitaya zvezda |
Bulba_S,
особенно перевод клевый))) получается у сабжа) |
СПАСИБО
СПАСИБО СПАСИБО Именно подобной программки и не хватало. Утилитка Associate.exe работает кривовато, ручками каждый раз лазить по реестру нет желания... Надеюсь, проект будет развиваться. |
Цитата:
GetAss "ProgramPath" "Dest.cmd" Если название устроит ;) ... Ay_Emul: Track 09 - Ennio Morricone - Deborah's Theme |
Предлагаю:
1. Добавить выбор приложения через поиск (чтобы каждый раз путь к приложению ручками не вбивать) 2. Оформить конечный результат через cmd-файл и через reg-файл 3. Добавить возможность анти-регистрации (удаление ассоциаций, сделать расширение файла"ничейным") |
DPavlik82, для третьего пункта есть команда Assoc (которую я и использую в конечном CMD). Остальное добавил в TODO, постараюсь в долгий ящик не откладывать ;)
|
Пункт 1 более-менее сделал (можно задавать строку для поиска, например "." покажет все ассоциации, так как точка есть в имени любого исполняемого файла). Пока не выкладываю, так как по пункту 2 есть проблема:
в отличие от CMD файла, в котором переменные среды автоматом преобразуются в их значения, в REG-файле надо либо сохранять уже развернутый путь, что затрудняет его использование при автоматической установке Windows (системный диск может быть не "C:"), либо использовать строки реестра типа EXPAND_SZ, но тогда в реестре хранится не чистый путь, а например %sysvar%\MyProgs\Prog.exe, а сам REG-файл становится не читаемым (@=hex(2):25,53,79 и т.д.). Надо ли городить огород, может CMD-файла достаточно? ... Ay_Emul: Океан Эльзы - Я до тебе |
Bulba_S, молодец. хорошую утилиту сделал! с reg-файлом было бы интереснее... но может попробовать в inf-файл???
|
Цитата:
... Ay_Emul: no song playing... |
Так целая статья об этом есть
Руководство по работе с inf-файлами |
Real Root, спасибо почитал. Не разобрался только, как переменные среды разворачивать внутри INF.
Прилагаю версию 0.1 alpha. Теперь пакет называется более благозвучно: AssTools ;) В его состав входит: AssSave - утилита для командной строки; AssView - это уже все знают, что такое :) Новое (постарался удовлетворить все просьбы): 1) можно указывать не только полный путь к программе, но и часть пути, например, "wordpad" или "7z"; 2) добавлено сохранение в REG и INF (пути не преобразуются в переменные среды); 3) версия для командной строки. В следствие пункта 1), команда вида AssSave . сохранит в .CMD практически все ассоциации из реестра (трудно представаить программу, в пути которой не содержится символа точки, хотя такое возможно). Утилита для командной строки публикуется практически "с колес", да и новые функции пока усиленно не тестировались, поэтому жду ваших замечаний! ЗЫ Исходники прилагаются. ... Ay_Emul: СПЛИH - SOS! |
Bulba_S, спасибо! Лучше в шапке ссылки заменить, т.к. из нее люди все равно будут продолжать качать...
|
Vadikan, не заметил, что есть возможность менять вложенные файлы (не догадался нажать кнопку "расширенное редактирование" ;) Сейчас поправлю.
... Ay_Emul: no song playing... |
Bulba_S, переменную %systemdrive% в INF-файлах можно обозначить как %24%. Скачай тут хелп по INF в CHM формате.
Выдержка из мана: Код:
DIRID_APPS 24 Неизвестно, но для Windows NT 4.0 и выше, установленной на диск C:\ - это директория C:\. Скорее всего, это аналог системной переменной %SystemDrive% Код:
HKCR,"FastStone.psd\DefaultIcon",,,"%24%\Program Files\FSViewer34\FSIcons.db,8" |
tracers.devICE, спасибо, посмотрю. Конечно, это выход, если в инсталляции папку Program Files не переименуют ;)
|
Новая версия 0.1 beta (ссылка в шапке): добавлены аналоги переменных среды при сохранении в INF (спасибо tracers.devICE за информацию и за саму идею сохранения INF в этой утилите).
|
Так..на всякий случай: добавление в реестр нижеследующих строк упростит процедуру получения cmd с ассоциациями.
Код:
Windows Registry Editor Version 5.00 Все просто - правой кнопкой мыши на любом *.exe и выбрать "Бэкап ассоциаций" - файл сохраняется в той же папке. в todo: рекомендую добавить подобный контекст к gui (что-то типа кнопки "ассоциировать"). зы. ассоциации не всегда выковыриваются - пример ArtIcons Pro |
Imago_, хорошо, постараюсь сделать. Тем более что надо добавить на всякий случай обработку кавычек в Value (в CMD-варианте). " в реестре -> """ в CMD. Конечно, чисто гипотетически, но может встретиться.
ArtIcons Pro - не уверен, что в ближайшее время установлю у себя эту программу, может просто скопируете мне в личку, например, содержимое соответствующих веток реестра? Дело в том, что способов интегрироваться в оболочку великое множество, тот же XMPlay после первого запуска похоже настраивает механизм DDE и первый раз после AssTools ассоциированный файл не срабатывает. Я уже не говорю о том, что AssTools не сохраняет массу подключей из тех же веток, только самый минимум (с моей точки зрения конечно) ;) |
Imago_, я посмотрел Ваш reg-файл. Там вместо shell\Open используется shell\View. Конечно, самое простое, сохранить все подключи ветки shell, но мне кажется, что это уже выходит за рамки простой ассоциации, это уже полноценная интеграция ;) Хотелось бы все таки более узкоспециализированную утилиту сделать, которая сохраняет ровно столько, сколько нужно для простого открытия нужного типа файла. Возможно я не прав, буду работать над новой версией, возможно поменяю свое мнение...
... Ay_Emul: Skull Chaser/THH/CTL: may 2ooO - SwirlOfSoul |
Здраствуйте, у меня проблемма. Мне нужно с помощью вашей программы ассоциировать файлы формата *.wma и *.wmv к другому приложению. Я жму правой кнопкой на файл расширения *.wma, жму "изменить" изменяю программу, жму "ок". В плеере все отлчно открывается, потом запускаю вашу программу, выставляю полный путь до плеера, жму "просмотр ассоциации", а он мне выдает только фойлы формата "3gp" и файлы плэйлистов и скинов для моего плеера. что делать?
|
omg_lol, попробуй программу RegShot. Там сначала делаешь снимок реестра, затем делаешь что тебе нужно, потом делаешь снимок опять и программа выдает тебе практически готовый рег-файл, остается скопировать в тхт-файл и переименовать в рег.
|
_Aspire_ , спасибо, но для меня не проблемма это сделать самому, просто долго. Я уже сделал привязку к основным форматам, а сюда написал про это чисто для информации автора, потому как считаю это недороботкой.
|
omg_lol, спасибо, добавил в todo ;)
|
Тема жива ? Приветствую всех. а с XnView ничего не происходит, все 3 варианта не подходят...
|
Stas-Karabas, пока не могу найти время на такие проекты, надеюсь осенью во время отпуска подобью все todo...
|
Bulba_S, огромное спасибо за прогу, облегчил жизнь :up .
У меня такое вот предложение: добавить регистрацию библиотек, относящихся к приложению. а то все как-то ручками приходится лазать... лазить не лень, но все равно было бы здорово :) еще раз спасибо за программу... |
Narm, о библиотеках я знаю только то, что деинсталляторы как-то определяют, что "библиотека ... больше не используется ни одним приложением, удалить?". Но как однозначно опредилить, зарегестрирована библиотека вручную, или каким-то конкретно приложением, я не знаю...
|
Stas-Karabas, по поводу XnView - возьми три файлика настроек с папки appl data в all users. у меня вроде бы работает
|
За переход с Delphi на Lazarus просьба сильно не пинать, размер всего-то в три раза вырос ;)
XnView у меня в данный момент нет, плюс еще пару просьб по todo не сделал. Зато информация о способе передачи кавычек через командную строку позволила сделать CMD-вариант только через REG ADD. Все остальные изменения косметические. Из программ, которые используют не open, а view, как ArtIcons Pro, я ничего не нашел, но тем не менее сделал, раз была заявка. Куда именно прописываются ассоциации по вызову "Изменить приложение" я тоже пока не понял. В общем, есть еще что сделать в версии 0.2 ;) ... Ay_Emul игpает: Океан Эльзы - Кiшка |
Насколько я понимаю ниже приведенные отличия и есть "CMD-вариант только через REG ADD"?
Код:
assoc .M3U=AIMP.M3U Код:
reg add "HKCR\.M3U" /ve /d "AIMP.M3U" /f И еще такой вопрос - "DPavlik82: [сделано]1. Добавить выбор приложения через поиск (чтобы каждый раз путь к приложению ручками не вбивать)" - не нашел :( |
Цитата:
Цитата:
... Ay_Emul игpает: тишина... |
Не смог получить файл ассоциаций от IZArc, весьма неплохого архиватора.
upd. Странно.. Если не вводить путь - все получается.. |
Imago_, пришли пожалуйста regshot'ы соответствуюших веток реестра, попробую разобраться.
... Ay_Emul игpает: SPACEMAN Подозреваю, что IZArc использует короткие пути, это в принципе можно учесть в следующей версии. |
Найден баг: AssView 0.1 не находит ассоциации при запуске из под Windows 98 SE (использовал функцию WideUpperCase, во Free Pascal она работает только на юникодной винде). AssSave работает.
... Ay_Emul игpает: А.Вивальди, H. Паганини - А. Вивальди - Концеpт Для Двух Скpипок и Basso Continuo с Оpкестpом D-Moll III Часть |
Bulba_S, Я тоже пытался сделать восстановление ассоциаций, но с учётом, что всё в ручную прописывать, вот здесь.
|
andsok, спасибо за ссылку. Там в ветке вроде есть ответ на мой вопрос:
Цитата:
... Ay_Emul игpает: тишина... |
Bulba_S, там немного устаревшие, вот новый my_assot_v0.6.exe.
Сразу скажу, устанавливать не нужно, так как пути к программам для моей подборки программ, но разархивировать sfx-архив и подправить пути в reg-файле для себя можно. В reg-файле есть подсказки, в отличии от старой версии более оптимизировал, удалив регистрацию расширений "для всех пользователей", оставив регистрацию только для текущего пользователя, также добавил количество расширений. |
Есть у меня один могильничек... Тьфу, идейка =) Небольшой сервис, а уже через него происходит открытие файлов. Со своей базой, настройками и т.д. ИМХО так будет лучше всего.
ЗЫ: Скоро займусь этим |
Bulba_S, спасибо тебе,особенно за исходники )) Мне было нужно функция експорт reg файла с форматированием параметров.Долго искал исходники,но были не те,случайно наткнулся сюда и увидев исходники попал просто в ШОК :)) Да и щас в том же духе,спасибо большое.
|
Bulba_S
Спасибо огромное, очень полезная программа. Цитата:
|
Enforcer2K
Цитата:
|
|
Цитата:
|
DPavlik82, windows media player 12 русская версия, но в адонах не нашол его.
|
У меня пара вопросов.
1) Генерируемые рег-файлы отличаются для разных ОС? XP, Vista, 7? Или надо для каждой ОС свой рег-файл делать? 2) Для 64-битной ОС оно вообще правильно работает? Ибо переменной среды %programfiles (x86)% я в этой программе не обнаружил. PS. Нашел 64-битную ОС. Там путь не заменяется на %programfiles (x86)% но работать насколько я понимаю будет, если пути стандартные? PPS. Ну тогда просьба доделать прогу для 64-бит :-) |
Я для восстановления использую эту программу.
|
СПАСИБООООО!!!!!
|
Спасибо, работает.
|
очень полезная прога.... Спасибо!
|
ОГРОМНОЕ СПАСИБО, пригодилась, на Windows 8.1 работает
|
Время: 19:11. |
Время: 19:11.
© OSzone.net 2001-