@echo off
cls
color 1b
%~d0
cd "%~dp0"
set PROCESSOR=x64
if %PROCESSOR_ARCHITECTURE% == x86 (
if not defined PROCESSOR_ARCHITEW6432 set PROCESSOR=x86
)
reg query HKCR\^*\shellex\ContextMenuHandlers | findstr /i "AkelPad" >NUL
if not errorlevel 1 (
regsvr32 /u /s shellext-%PROCESSOR%.dll
cls
echo.
echo Интеграция с оболочкой отключена. Нажмите любую клавишу для выхода . . .
pause >NUL
) else (
regsvr32 /s shellext-%PROCESSOR%.dll
cls
echo.
echo Интеграция с оболочкой включена. Нажмите любую клавишу для выхода . . .
pause >NUL
)
Posted: Mon Jun 17, 2013 9:29 am
by VladSh
А зачем всё это надо, кто-нибудь сможет ответить? Чтобы добавить в контекстное меню "Открыть в AkelPad" надо ставить exe'шник, а потом его регистрировать cmd-файлом? ПЕКТ. Есть куча программ, которые позволяют редактировать контекстное меню проводника, в несколько кликов можно добавить "Открыть в _чём хочешь_".
Posted: Mon Jun 17, 2013 11:31 am
by addhaloka
VladSh wrote:А зачем всё это надо, кто-нибудь сможет ответить? Чтобы добавить в контекстное меню "Открыть в AkelPad" надо ставить exe'шник, а потом его регистрировать cmd-файлом? ПЕКТ. Есть куча программ, которые позволяют редактировать контекстное меню проводника, в несколько кликов можно добавить "Открыть в _чём хочешь_".
Хех. Какой exeшник? Обычная ActiveX библиотека, которую можно одним кликом (с помощью батника, который я выше привел) вкл./откл. И "куча программ" не нужна (кстати, в них можно иконку в контекст. меню добавить?).
Posted: Mon Jun 17, 2013 3:44 pm
by VladSh
addhaloka
Ну да, библиотека и батник - 2 файла.
Встречал утилиты, что всё что хочешь могут) Я когда-то себе контекстные меню так правил, потом задолбался - это ж надо везде править, т.к. привыкаешь, а оно не нужно, т.к. можешь за чужими компами работать, а люди нервничают...
Короче не вижу никакого смысла в этой фиче, тем более какими-то отдельными стрёмными файлами. Как по моему, это должно быть галкой в инсталяторе "Встроить в контекстное меню проводника" (как например у 7-zip и некоторых других) или в настройках программы.
Posted: Mon Jun 17, 2013 4:19 pm
by addhaloka
VladSh
Имхо, наоборот отлично подходит для портабл-установки и для работы на чужих компах, в частности. Завершил работу - тыцнул в
и всё.
А встраивать в инсталлятор и уж тем более какой-то посторонний софт использовать.
>Встречал утилиты, что всё что хочешь могут)
Какие-то посторонние костыли, тем более для 7-Zip, например, иконку никакими утилитами не добавить. Потому что в самой библиотеке это не заложено, в отличие от "отдельного стрёмного файла".
Posted: Mon Jun 17, 2013 4:28 pm
by VladSh
addhaloka
А предлагаемый софт чем не посторонний?
Давайте на каждую мелочь, типа помещения ярлыка на "quick panel" тоже сделаем ActiveX-библиотеку и cmd-файл к ней...
Не здраво это всё.
Posted: Mon Jun 17, 2013 4:57 pm
by addhaloka
VladSh
Чем он посторонний? Стандартное расширение оболочки, в многих программах, в том же 7-Zip используется. Тем более выложен Instructor'ом. Очень удобно, я считаю. И по мне, быстрее батник тыцнуть или пункт меню для этого батника, чем лезть в настройки и включать/отключать там. Засим завязываю с флудом, т. к. дальнейшее обсуждение (тут и обсуждать нечего)) бессмысленно.
Posted: Tue Jun 18, 2013 7:58 am
by InnI
Win7 x86. Скопировал все файлы в "C:\Program Files\AkelPad\". При запуске shellext-register.cmd появляется окно RegSvr32 с текстом:
--------
Не удалось загрузить модуль "shellext-x86.dll".
Проверьте, что двоичный файл хранится на указанном пути или запустите отладку, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами.
Не найден указанный модуль.
.
--------
Права администратора не помогают. Вероятно, не может найти путь к файлу, т.к. вручную из консоли с правами администратора регистрируется нормально.
Давно пользуюсь подобным функционалом при помощи такого reg-файла
@ECHO OFF
set PROCESSOR=x64
if %PROCESSOR_ARCHITECTURE% == x86 (
if not defined PROCESSOR_ARCHITEW6432 set PROCESSOR=x86
)
start regsvr32 "%~dp0shellext-%PROCESSOR%.dll"
CLS
Posted: Tue Jun 18, 2013 8:22 am
by VladSh
InnI
У меня при запуске первого reg-файла вылетает сообщение:
Редактор реестра wrote:Не удается импортировать "D:\Temp\OpenInAkelPad_menuItem.reg": Указанный файл не является файлом данных реестра.
Возможен импорт только двоичных файлов данных реестра.
И ещё неудобство в том, что путь жёстко зашит, по моему простенький js был бы лучше.
Вот такой функционал с удовольствием бы себе добавил. Он действительно родной и не "из пушки по воробьям" (ещё бы .NET или Java сюда прекрутили...).
Posted: Tue Jun 18, 2013 8:45 am
by InnI
Instructor wrote:А так?
Так работает. Только на Win7 с включённым UAC нужны права администратора.
VladSh wrote:У меня при запуске первого reg-файла вылетает сообщение
Такое сообщение обычно появляется, если отсутствует строка:
Windows Registry Editor Version 5.00
Posted: Tue Jun 18, 2013 10:04 am
by addhaloka
InnI wrote:
"Icon"=""C:\\Program Files\\AkelPad\\AkelPad.exe""
И иконка в контекстном меню есть? У меня нет, при таком раскладе.
Вообще для добавления в реестр чего-то "путезависимого", лучше, имхо reg.exe (или nircmd, как алт. вариант) использовать в батнике, типа