%PROCESSOR_ARCHITECTURE% в wincmd.ini и совместимость Win9X

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

%PROCESSOR_ARCHITECTURE% в wincmd.ini и совместимость Win9X

Сообщение 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% имеет больше двух значений (внезапно!). Как обойти?

П.С.
Вариант с созданием временных переменных и прочей требухи не проходит, т.к. это надо на флешку, на разные системы, где в большинстве случаев нет ни админских прав, ни прочих радостей автоматизации.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Так-то мысль уже давно не свежая, но на практике вылазит несостоятельность пройденных "решений" из тех тем...

Итак, дабы три раза не вставать:
1. Установка ещё одной переменной - не подходит.
2. Вариант консольного монстра if exist.... else.... - не подходит.
3. Привязка к внешней запускалке - не подходит.

Да и основной вопрос - работа на Win9X (о да, я к некрофилам тоже хожу) - не раскрыт.

Несмотря на особенности именно этой переменной - чую, что это самое надёжное решение, но хотелось бы знать наверняка, вдруг что получше есть...
Есть другие идеи?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

1, 3 - на Win9x не пробовал, на остальных проблем не встречал.
Т.е. будет работать и такая канитель

Код: Выделить всё

Editor=%COMMANDER_PATH%\Utils\AkelPad\AkelPad_%OSARCH%.exe
и в F4Menu и где бы то ещё ни было. Но я лично предпочёл 32 нигде не писать.
А упомянутый в стартовом посте подход с разбивкой вариантов программы на папки давно утерял актуальность.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение 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.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если принять во внимание юникодность Autorun, то да, только в Windows NT...

Предлагаю для некро-систем бросить в папку тотала батник, который будет ставить переменные, которые должны быть установлены Autorun-ом, и потом запускать тотал - будет совместимость с Windows 9x.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off писал(а):AutoRun работает только на WinNT - Win2000 и выше - если верить документации.
Даже если так, утверждения по списку шли до "Да и основной вопрос ...".
Skif_off писал(а):Далеко не для всех программ возможно объединить обе разрядности в одной папке.
Согласен. Хотя сути решения это не меняет.
Skif_off писал(а):VBScript не прокатит, предполагаю, - для определения ОС обычно используется WMI.
Насчёт прокатит или нет на Win9x ответить не возьмусь, а вот про "обычно" - неправда.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher писал(а):а вот про "обычно" - неправда.
От столь искушённого в VBScript можно было бы и поподробнее :) Сколько видел примеров - все с использованием WMI, если память не подводит, но особо не интересовался, т.к. меня не устраивают решения, не работающие в WinPE.
По идее можно читать в реестре, правда, навскидку не вспомню, где.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
Меня тоже память не особо подводит. Если это и имеет смысл обсудить, то не думаю, что здесь.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

подход с разбивкой вариантов программы на папки давно утерял актуальность
Бред.
добавить батник, определяющий, что ОС Win9x, и запускающий ТСх86 с ключом /i и wincmd9x.ini
/i требует полного абсолютного пути к ini файлу, иначе не подхватывается. Если б не эта проблема - проблемы бы не было.
батник, который будет ставить переменные
Опять 25...
VBScript
Не вариант, заблокировано групповыми политиками.

Эх.... Всё - тлен.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann писал(а):Бред.
Не бред, если понимаешь о чём речь и с чьей стороны разбивка. Читаем внимательно приведённые топики.
Mellomann писал(а):Если б не эта проблема
%CD% в 9x нет разве?
Mellomann писал(а):Не вариант, заблокировано групповыми политиками.
Разблокируй. Там можно что угодно заблокировать, в т.ч. запуск Тотала.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение 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")
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off, в путях кавычек не хватает.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение 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]
Последний раз редактировалось Skif_off Вс сен 20, 2015 10:27, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
Я имел в виду не только vbs, но и батник, в котором, кстати, start не нужен.
Во всех случаях нужен как минимум ключ /N. На vbs скобки в Run нужны только для кода выхода.
[cut]Не знаю, что понимать под "бодаться", но вот то, что в js не Create, а new ActiveX тебе, думаю, должно быть известно. :wink:[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить