Страница 1 из 4
%PROCESSOR_ARCHITECTURE% в wincmd.ini и совместимость Win9X
Добавлено: Чт сен 17, 2015 22:46
Mellomann
Есть загвоздка с компоновкой 32 и 64 битных версий тотала (на флешку) софтом соответствующей разрядности. Например, тот же Akelpad и RAR - вполне себе есть под обе версии.
Пока обхожусь двумя wincmd.ini для использования х64 софта на ТС64, но это немного геморно, т.к. это требует ключа /i, что не всегда приемлемо.
Но посетила меня мысль - обозвать, например, путь к Akelpad через переменную "%PROCESSOR_ARCHITECTURE%".
Т.е., вместо привычного
Editor=%COMMANDER_PATH%\Plugins\exe\AkelPad\AkelPad.exe
будет
Editor=%COMMANDER_PATH%\Plugins\exe\AkelPad_%PROCESSOR_ARCHITECTURE%\AkelPad.exe
Только один нюанс вылазит - на Win9X подобный трюк не прокатит (там просто нет такой переменки).
Собственно, вопросы:
1. Кто как решал задачу совместной работы двух разрядностей тоталовского редактора для F4 и архиватора RAR?
2. Есть ли смысл воротить огород с именно этой переменной, или есть варианты получше? (но чтоб обойтись одной универсальной строкой на оба варианта!)
3. Наслышан, что %PROCESSOR_ARCHITECTURE% имеет больше двух значений (внезапно!). Как обойти?
П.С.
Вариант с созданием временных переменных и прочей требухи не проходит, т.к. это надо на флешку, на разные системы, где в большинстве случаев нет ни админских прав, ни прочих радостей автоматизации.
Добавлено: Чт сен 17, 2015 22:55
Flasher
Добавлено: Чт сен 17, 2015 23:05
Mellomann
Так-то мысль уже давно не свежая, но на практике вылазит несостоятельность пройденных "решений" из тех тем...
Итак, дабы три раза не вставать:
1. Установка ещё одной переменной - не подходит.
2. Вариант консольного монстра if exist.... else.... - не подходит.
3. Привязка к внешней запускалке - не подходит.
Да и основной вопрос - работа на Win9X (о да, я к некрофилам тоже хожу) - не раскрыт.
Несмотря на особенности именно этой переменной - чую, что это самое надёжное решение, но хотелось бы знать наверняка, вдруг что получше есть...
Есть другие идеи?
Добавлено: Чт сен 17, 2015 23:34
Flasher
1, 3 - на Win9x не пробовал, на остальных проблем не встречал.
Т.е. будет работать и такая канитель
Код: Выделить всё
Editor=%COMMANDER_PATH%\Utils\AkelPad\AkelPad_%OSARCH%.exe
и в F4Menu и где бы то ещё ни было. Но я лично предпочёл 32
нигде не писать.
А упомянутый в стартовом посте подход с разбивкой вариантов программы на папки давно утерял актуальность.
Добавлено: Пт сен 18, 2015 11:54
Skif_off
Flasher
AutoRun работает только на WinNT - Win2000 и выше - если верить документации.
Flasher писал(а):А упомянутый в стартовом посте подход с разбивкой вариантов программы на папки давно утерял актуальность.
С чего вдруг? Далеко не для всех программ возможно объединить обе разрядности в одной папке.
Mellomann
Не уверен, что можно подружить х86+х64 и Win9x. Как мне кажется, имеет смысл подружить х86 и х64 с помощью внутренней переменной и добавить батник, определяющий, что ОС Win9x, и запускающий ТСх86 с ключом /i и wincmd9x.ini.
Вместо батника, наверное, можно использовать AutoIt 3.2.12.1, VBScript не прокатит, предполагаю, - для определения ОС обычно используется WMI.
Добавлено: Пт сен 18, 2015 13:04
MVV
Если принять во внимание юникодность Autorun, то да, только в Windows NT...
Предлагаю для некро-систем бросить в папку тотала батник, который будет ставить переменные, которые должны быть установлены Autorun-ом, и потом запускать тотал - будет совместимость с Windows 9x.
Добавлено: Пт сен 18, 2015 18:51
Flasher
Skif_off писал(а):AutoRun работает только на WinNT - Win2000 и выше - если верить документации.
Даже если так, утверждения по списку шли до "Да и основной вопрос ...".
Skif_off писал(а):Далеко не для всех программ возможно объединить обе разрядности в одной папке.
Согласен. Хотя сути решения это не меняет.
Skif_off писал(а):VBScript не прокатит, предполагаю, - для определения ОС обычно используется WMI.
Насчёт прокатит или нет на Win9x ответить не возьмусь, а вот про "обычно" - неправда.
Добавлено: Пт сен 18, 2015 22:05
Skif_off
Flasher писал(а):а вот про "обычно" - неправда.
От столь искушённого в VBScript можно было бы и поподробнее

Сколько видел примеров - все с использованием WMI, если память не подводит, но особо не интересовался, т.к. меня не устраивают решения, не работающие в WinPE.
По идее можно читать в реестре, правда, навскидку не вспомню, где.
Добавлено: Пт сен 18, 2015 23:17
Flasher
Skif_off
Меня тоже память не особо подводит. Если это и имеет смысл обсудить, то не думаю, что здесь.
Добавлено: Сб сен 19, 2015 23:52
Mellomann
подход с разбивкой вариантов программы на папки давно утерял актуальность
Бред.
добавить батник, определяющий, что ОС Win9x, и запускающий ТСх86 с ключом /i и wincmd9x.ini
/i требует полного абсолютного пути к ini файлу, иначе не подхватывается. Если б не эта проблема - проблемы бы не было.
батник, который будет ставить переменные
Опять 25...
VBScript
Не вариант, заблокировано групповыми политиками.
Эх.... Всё - тлен.
Добавлено: Вс сен 20, 2015 00:23
Flasher
Mellomann писал(а):Бред.
Не бред, если понимаешь о чём речь и с чьей стороны разбивка. Читаем внимательно приведённые топики.
Mellomann писал(а):Если б не эта проблема
%CD% в 9x нет разве?
Mellomann писал(а):Не вариант, заблокировано групповыми политиками.
Разблокируй. Там можно что угодно заблокировать, в т.ч. запуск Тотала.
Добавлено: Вс сен 20, 2015 01:21
Skif_off
Mellomann писал(а):/i требует полного абсолютного пути к ini файлу, иначе не подхватывается. Если б не эта проблема - проблемы бы не было.
???
Раз требует - передайте

cmd:
Код: Выделить всё
start %~dp0\TOTALCMD.EXE /i=%~dp0\wincmd9x.ini
VBS:
Код: Выделить всё
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run(WshShell.CurrentDirectory & "\TOTALCMD.EXE /i=" & WshShell.CurrentDirectory & "\wincmd9x.ini")
Добавлено: Вс сен 20, 2015 01:36
Flasher
Skif_off, в путях кавычек не хватает.
Добавлено: Вс сен 20, 2015 02:11
Skif_off
Flasher
Пример же, а не готовое решение
[cut]К тому же чаще пользуюсь AutoIt и реже JScript, по мне удобнее:
Код: Выделить всё
Run('"' & @ScriptDir & '\TOTALCMD.EXE" /i="' & @ScriptDir & '\wincmd9x.ini"')
Код: Выделить всё
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("\"" + WshShell.CurrentDirectory + "\\TOTALCMD.EXE\" /i=\"" + WshShell.CurrentDirectory + "\\wincmd9x.ini\"");
не привык бодаться с удвоением кавычек

[/cut]
Добавлено: Вс сен 20, 2015 02:32
Flasher
Skif_off
Я имел в виду не только vbs, но и батник, в котором, кстати, start не нужен.
Во всех случаях нужен как минимум ключ /N. На vbs скобки в Run нужны только для кода выхода.
[cut]Не знаю, что понимать под "бодаться", но вот то, что в js не
Create, а
new ActiveX тебе, думаю, должно быть известно.

[/cut]