PDA

Показать полную графическую версию : [тестируем] Утилита для сохранения и восстановления ассоциаций файлов


Страниц : [1] 2 3

Bulba_S
22-11-2007, 08:16
Благодаря отпуску в ноябре 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 будет удалена.

wadimus
23-11-2007, 10:16
Bulba_S,
AssView - название!! Это пять!! ;)

Bulba_S
23-11-2007, 11:28
:-)

samsobi
23-11-2007, 15:45
Да уж поменяй название, а то программа ассоциации вызывает другие ассоциации :D

Bulba_S
24-11-2007, 07:31
Ну, если появится необходимость доработать что-то еще, кроме названия, постараюсь поменять. Хотя, честно говоря, мне теперь название еще больше нравится, чем когда я его придумал ;)

... Ay_Emul: Mumiy Troll - Yadovitaya zvezda

aset
25-11-2007, 16:18
Bulba_S,
особенно перевод клевый))) получается у сабжа)

LonerD
02-12-2007, 23:15
СПАСИБО
СПАСИБО
СПАСИБО
Именно подобной программки и не хватало.
Утилитка Associate.exe работает кривовато, ручками каждый раз лазить по реестру нет желания...
Надеюсь, проект будет развиваться.

Bulba_S
03-12-2007, 11:21
Надеюсь, проект будет развиваться. »
TODO пока пуст, предлагайте ;) Наверное имеет смысл сделать командлайновый вариант типа:

GetAss "ProgramPath" "Dest.cmd"

Если название устроит ;)

... Ay_Emul: Track 09 - Ennio Morricone - Deborah's Theme

LonerD
03-12-2007, 21:45
Предлагаю:
1. Добавить выбор приложения через поиск (чтобы каждый раз путь к приложению ручками не вбивать)
2. Оформить конечный результат через cmd-файл и через reg-файл
3. Добавить возможность анти-регистрации (удаление ассоциаций, сделать расширение файла"ничейным")

Bulba_S
05-12-2007, 12:26
DPavlik82, для третьего пункта есть команда Assoc (которую я и использую в конечном CMD). Остальное добавил в TODO, постараюсь в долгий ящик не откладывать ;)

Bulba_S
05-12-2007, 14:25
Пункт 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-файл???

Bulba_S
08-12-2007, 08:39
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)

Bulba_S
15-12-2007, 08:32
Real Root, спасибо почитал. Не разобрался только, как переменные среды разворачивать внутри INF.

Прилагаю версию 0.1 alpha. Теперь пакет называется более благозвучно: AssTools ;)
В его состав входит:
AssSave - утилита для командной строки;
AssView - это уже все знают, что такое :)

Новое (постарался удовлетворить все просьбы):
1) можно указывать не только полный путь к программе, но и часть пути, например, "wordpad" или "7z";
2) добавлено сохранение в REG и INF (пути не преобразуются в переменные среды);
3) версия для командной строки.

В следствие пункта 1), команда вида

AssSave .

сохранит в .CMD практически все ассоциации из реестра (трудно представаить программу, в пути которой не содержится символа точки, хотя такое возможно).

Утилита для командной строки публикуется практически "с колес", да и новые функции пока усиленно не тестировались, поэтому жду ваших замечаний!

ЗЫ Исходники прилагаются.

... Ay_Emul: СПЛИH - SOS!

Vadikan
15-12-2007, 23:41
Bulba_S, спасибо! Лучше в шапке ссылки заменить, т.к. из нее люди все равно будут продолжать качать...

Bulba_S
16-12-2007, 05:02
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"

Bulba_S
17-12-2007, 14:48
tracers.devICE, спасибо, посмотрю. Конечно, это выход, если в инсталляции папку Program Files не переименуют ;)

Bulba_S
08-01-2008, 07:54
Новая версия 0.1 beta (ссылка в шапке): добавлены аналоги переменных среды при сохранении в INF (спасибо tracers.devICE за информацию и за саму идею сохранения INF в этой утилите).




© OSzone.net 2001-2012