![]() |
Автоматическое определение типа ОС - 32 или 64 бит.
Возникла надобность сделать автоматическую установку приложений с автоматическим определением битности системы - 32 или 64 бит.
Пример. Запускается .bat- или .сmd-файл. Если ОС 32-битная, то устанавливаются vcredist_2005.exe и vcredist_2008.exe. Если ОС 64-битная, то устанавливаются vcredist_x64_2005.exe и vcredist_x64_2008.exe Кто знает как это оформить? |
DPavlik82, можно по наличию переменных типа ProgramW6432 (которые есть только в 64-битных системах).
Код:
If "%ProgramW6432%" Neq "" Echo Это 64-битная ОС |
Petya V4sechkin, спасибо, попробую
|
Petya V4sechkin,
Попробовал - не помогло. Вот такая комманда (проверяется, если 64-битная, то запускается vcredist_x64_2005.exe) Код:
If "%ProgramW6432%" Neq "" vcredist_x64_2005.exe Если создаю cmd-файл с указанным содержимым, то вообще ничего не пытается установиться. Вот такой вариант тоже ни к чему не приводит: Код:
If "%ProgramW6432%" Neq "" <vcredist_x64_2005.exe> else vcredist_x86_2005.exe |
DPavlik82, прошу прощения, судя по этой ссылке переменная ProgramW6432 есть только в Windows 7 и Server 2008 R2.
Код:
If "%PROCESSOR_ARCHITECTURE%"=="x86" ( Цитата:
|
Petya V4sechkin, не-а, и этот вариант не отработал.
И под 32-битной ХР, и под 64-битной семеркой запускается установка vcredist_x86_2005.exe. А на заднем плане в обоих операционках красуется окно консоли с фразой: Код:
If "x86"=="x86" (Start /Wait vcredist_x86_2005.exe) Else (Start /Wait vcredist_x64_2005.exe) |
DPavlik82, выложите результаты выполнения команды Set.
|
Код:
IF EXIST "%ProgramFiles(x86)%" (ОС 64-битная, а проверяемая папка для 32-х битных программ) |
Встала такая же ситуация. Сделал код вот так:
Код:
If exist "%programfiles(x86)% ( |
Видимо прикол состоит в том, что если запускать этот bat- Или cmd- файл из-под 32-битного FAR в 64-битной системе, то переменная PROCESSOR_ARCHITECTURE имеет значение "x86", так как FAR-то 32-битный :)
|
oszip, Кому адрессовано это сообщение? И причем здесь FAR? В данном топике я вообще не вижу упоминания FAR'а
|
Devils0411, очепятка вкралась, когда сюда копировали, или такой же bat-ник запускали?
Код:
If exist "%programfiles(x86)%" ( |
Litstat, пробЫвал по-разному . И с ковычками и без. Толку ни какого. Батник запускается и через время открывает еще одно окно и оно весит, но не в прямом смысле. В нем можно вводить команды.
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
ALLUSERSPROFILE=C:\Documents and Settings\All Users |
Попробовал, все работает. У меня 64х-битная система. На обычной тоже работать будет, но при проверке переменной %ProgramFiles(x86)% нужно ELSE добавить.
В C:\Program Files (x86)\ создал батник pf32.bat: Код:
@ECHO off Код:
@ECHO off Код:
Hello! I'm 32-bit directory. My options is /silent 3) Можно экзешники запускать и без "start", работает: Код:
"%ProgramFiles(x86)%\Download Master\unins000.exe" /silent |
Цитата:
|
Litstat, Заработало. Единственное запускал на 64-битной оси. На 32-битной проверить не могу. На ноуте, на сервере, и на настольнике стоят 64-битные оси :)
Кому интересно вот код. Код:
IF EXIST "%ProgramFiles(x86)%" ( Цитата:
Цитата:
Всем большое спасибо за помощь. Буду дальше дорабатывать свой проект :) |
Цитата:
Код:
IF EXIST "%ProgramFiles(x86)%" ( |
Litstat, верно. Если бы запустил на 32-битной оси, то выдал бы ошибку.
|
Цитата:
Прикрепляю к сообщению скрины выполнения команды и результаты выполнения. В обоих случаях запускался файл 32-битный . Цитата:
|
|
Цитата:
|
А как должен выглядеть скрипт для определения системы (XP и семерки, если обе х32)?
Возможно ли назначить выполнение той или иной команды в зависимости от системы? (При установке Office 2003 использую разные *.MST) |
Цитата:
|
Цитата:
|
Такой вариант здесь не видел, но сам пользуюсь именно им
Код:
Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64 |
Цитата:
А ещё очень был бы полезен bat-ник, определяющий не только разрядность ОС, но и тип ОС, например, XP и Win 7. Вышла бы прекрасная заготовка, на основе которой можно было бы другие bat-файлы создавать. |
Цитата:
Цитата:
|
gora, поправьте меня, если я ошибаюсь, но приведённый Вами скрипт:
Цитата:
Код:
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" ( |
Цитата:
|
Что-то вы господа обкатываете по-сути один и тот же вариант определения с небольшими вариациями...
Такое впечатление что был произведен массовый частичный копипаст чужого кода ;) Уж если на то пошло то вот вам полностью другой код - для разнообразия: PHP код:
|
Цитата:
|
Iska,
Конечно читал ;) вместо rвместо SET в мой код можно подставить нужный код. То есть вместо SET "MY_SYSTEM=X86" используем (start /wait vcredist_2005.exe&start /wait vcredist_2008.exe) И соответственно вместо SET "MY_SYSTEM=X64" (start /wait vcredist_x64_2005.exe&start /wait vcredist_x64_2008.exe А что не так с моим ответом? Без IF код тут никто не предлагал... Или Вас лично вводит в заблуждение использованный тег PHP? Так я тут новичек, а коды всплывающих подсказок не имеют, но не переживайте - код заведомо CMD. |
проверку с последующей установкой запилил так:
Код:
rem Winrar в т.ч. по наличию определенного файла в директории, либо по записи в реестре. У кого какие могут быть идеи? |
padrus, для создания универсальных (для разных ОС) инсталляторов я использую утилиту http://forum.oszone.net/thread-264841.html
в ней так же есть проверка на наличие файла. |
Время: 15:29. |
Время: 15:29.
© OSzone.net 2001-