Показать полную графическую версию : [тестируем] Утилита для сохранения и восстановления ассоциаций файлов
Благодаря отпуску в ноябре 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 работает кривовато, ручками каждый раз лазить по реестру нет желания...
Надеюсь, проект будет развиваться.
Надеюсь, проект будет развиваться. »
TODO пока пуст, предлагайте ;) Наверное имеет смысл сделать командлайновый вариант типа:
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: Океан Эльзы - Я до тебе
-devICE-
05-12-2007, 21:20
Bulba_S, молодец. хорошую утилиту сделал! с reg-файлом было бы интереснее... но может попробовать в inf-файл???
reg-файлом было бы интереснее... но может попробовать в inf-файл??? »
REG-файл с жесткими путями я сделаю, это не универсальное, но работоспособное решение. На счет inf я даже не думал, если там есть такая секция, постараюсь сделать. Не плохо бы найти пример такого inf-файла или описание. Сегодня вечером попробую в дистрибутиве windows порыться, какой-нибудь блокнот или paint наверняка inf для регистрации типов используют.
... Ay_Emul: no song playing...
Real Root
08-12-2007, 21:10
Так целая статья об этом есть
Руководство по работе с inf-файлами (http://oszone.net/3827)
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...
-devICE-
16-12-2007, 21:09
Bulba_S, переменную %systemdrive% в INF-файлах можно обозначить как %24%. Скачай тут (http://forum.oszone.net/thread-94009.html) хелп по 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 в этой утилите).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC