Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] Автоматическое определение типа ОС - 32 или 64 бит.

Ответить
Настройки темы
[решено] Автоматическое определение типа ОС - 32 или 64 бит.

Аватара для LonerD

Ветеран


Сообщения: 1462
Благодарности: 336


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Возникла надобность сделать автоматическую установку приложений с автоматическим определением битности системы - 32 или 64 бит.
Пример. Запускается .bat- или .сmd-файл.
Если ОС 32-битная, то устанавливаются vcredist_2005.exe и vcredist_2008.exe.
Если ОС 64-битная, то устанавливаются vcredist_x64_2005.exe и vcredist_x64_2008.exe

Кто знает как это оформить?

-------
OSzone - лучшие!


Отправлено: 14:32, 07-06-2009

 

Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


oszip, Кому адрессовано это сообщение? И причем здесь FAR? В данном топике я вообще не вижу упоминания FAR'а

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 22:04, 28-06-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 58
Благодарности: 9

Профиль | Отправить PM | Цитировать


Devils0411, очепятка вкралась, когда сюда копировали, или такой же bat-ник запускали?
Код: Выделить весь код
 If exist "%programfiles(x86)%" (

Отправлено: 23:59, 28-06-2009 | #12


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Litstat, пробЫвал по-разному . И с ковычками и без. Толку ни какого. Батник запускается и через время открывает еще одно окно и оно весит, но не в прямом смысле. В нем можно вводить команды.

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 00:11, 29-06-2009 | #13


in job


Сообщения: 911
Благодарности: 551

Профиль | Отправить PM | Цитировать


Цитата Devils0411:
Litstat, пробЫвал по-разному . И с ковычками и без. Толку ни какого. Батник запускается и через время открывает еще одно окно и оно весит, но не в прямом смысле. В нем можно вводить команды. »
все правильно, потому что просто переменной %programfiles(x86)% в 32-битной системе не существует (все переменные можно посмотреть командой set, введя ее консольном окне или перенаправить вывод в файл командой cmd /c set > %systemdrive%\set.txt), что и попросил сделать
Цитата Petya V4sechkin:
DPavlik82, выложите результаты выполнения команды Set. »
и в приведенной им ссылке написаны условия создания переменных (над таблицей)
Цитата http://msdn.microsoft.com/en-us/library/aa384274(VS.85).aspx:
When a 32-bit process is created by a 64-bit process, or when a 64-bit process is created by a 32-bit process, WOW64 sets the environment variables for the created process as shown in the following table.
Когда 32-битный процесс создан 64-битным процессом или когда 64-битный процесс создан 32-битным процессом, WOW64 устанавливает переменные окружения для созданного процесса, как приведено в следующей таблице...

-------
Самое страшное в мечтах то, что они иногда... сбываются


Последний раз редактировалось Dmitry_K, 29-06-2009 в 01:07.


Отправлено: 00:54, 29-06-2009 | #14


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Цитата Dmitry_K:
переменной %programfiles(x86)% в 32-битной системе не существует »
это понятно. Но с чего вы взяли что я запускаю батник на 32-битной системе? Мне нужно чтоб если батник (Не зависимо от того, в какой ОС он запускается) не находит папку %programfiles(x86)%, а значит батник запускает из под 32-битной системы, то переходил к следующей команде. А если находит, соответственно выполняет необходимую команду (значит запущен из под 64-битной системы.
Код: Выделить весь код
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\Ђ¤¬Ё*Ёбва*в®а\Application Data
ClusterLog=C:\WINDOWS\Cluster\cluster.log
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
ComSpec=C:\WINDOWS\system32\cmd.exe
DEVMGR_SHOW_DETAILS=
DEVMGR_SHOW_NONPRESENT_DEVICES=1
FP_NO_HOST_CHECK=NO
HOMEDRIVE=D:
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=EM64T Family 15 Model 4 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0409
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
PROMPT=$P$G
SESSIONNAME=RDP-Tcp#1
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\WINDOWS\TEMP\1
TMP=C:\WINDOWS\TEMP\1
USERNAME=Ђ¤¬Ё*Ёбва*в®а
USERPROFILE=C:\Documents and Settings\Ђ¤¬Ё*Ёбва*в®а
windir=C:\WINDOWS
Да и кстати, если я правильно понимаю, то PROCESSOR_ARCHITECTURE=AMD64 всегда будет равнятся этому значению. если соответственно процессор подерживает 64 разряда.

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 01:16, 29-06-2009 | #15


Пользователь


Сообщения: 58
Благодарности: 9

Профиль | Отправить PM | Цитировать


Попробовал, все работает. У меня 64х-битная система. На обычной тоже работать будет, но при проверке переменной %ProgramFiles(x86)% нужно ELSE добавить.
В C:\Program Files (x86)\ создал батник pf32.bat:
Код: Выделить весь код
@ECHO off

ECHO Hello! I'm 32-bit directory. My options is %*
pause >> nul
В другой папке на другом диске создал запускающий батник:
Код: Выделить весь код
@ECHO off

IF EXIST "%ProgramFiles(x86)%" (
  start /wait /D "%ProgramFiles(x86)%" pf32.bat /silent
  start "Uninstalling DMaster..." /wait "%ProgramFiles(x86)%\Download Master\unins000.exe" /silent
)
pause >> nul
1) Первый start запускает батник pf32.bat: он выполнился в новой консоли и выдал:
Код: Выделить весь код
Hello! I'm 32-bit directory. My options is /silent
2) Второй start - удаление программы. В данном случае после "start" нужно задать в кавычках заголовок нового окна (к примеру, "Uninstalling DMaster..."), иначе этот "start" примет за него все то в кавычках, что после /wait. Поэтому запускать и не получалось - у вас, Devils0411, выскакивала пустая консоль с именем "%programfiles(x86)%\tftpd32\unins000.exe /Silent", можете проверить.

3) Можно экзешники запускать и без "start", работает:
Код: Выделить весь код
"%ProgramFiles(x86)%\Download Master\unins000.exe" /silent
4) Dmitry_K, то, что переменной не существует, еще не значит, что не будет работать батник. Условие типа: IF EXIST "%abracadabra%" ECHO abacadabra - отрабатывает верно, т.е. в консоль ничего не выведено. Если же ввести что-то осмысленное: IF EXIST "%ProgramFiles%" ECHO %ProgramFiles% - то в консоли увидим путь к программам.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:22, 29-06-2009 | #16


Пользователь


Сообщения: 58
Благодарности: 9

Профиль | Отправить PM | Цитировать


Цитата Dmitry_K:
можно попробывать вариант
Код:
if exist "%systemdrive%\Program Files (x86)" »
А если програм файлс перемещены на несистемный раздел?

Отправлено: 01:37, 29-06-2009 | #17


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Litstat, Заработало. Единственное запускал на 64-битной оси. На 32-битной проверить не могу. На ноуте, на сервере, и на настольнике стоят 64-битные оси
Кому интересно вот код.
Код: Выделить весь код
IF EXIST "%ProgramFiles(x86)%" (
  start "Uninstalling tftpd Server..." /wait "%programfiles(x86)%\tftpd32\unins000.exe" /silent
) else ( start /wait "%programfiles%\tftpd32\unins000.exe" /silent
)
Dmitry_K, а зачем усложнять жизнь?
Цитата Dmitry_K:
if exist "%systemdrive%\Program Files (x86)" »
Цитата Litstat:
А если програм файлс перемещены на несистемный раздел? »
Согласен. Всякое ведь может быть.
Всем большое спасибо за помощь. Буду дальше дорабатывать свой проект

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 01:44, 29-06-2009 | #18


Пользователь


Сообщения: 58
Благодарности: 9

Профиль | Отправить PM | Цитировать


Цитата Devils0411:
Кому интересно вот код.
Код:
IF EXIST "%ProgramFiles(x86)%" (
start "Uninstalling tftpd Server..." /wait "%programfiles(x86)%\tftpd32\unins000.exe" /silent
) else ( start /wait "%programfiles%\tftpd32\unins000.exe" /silent
) »
Для IF исправили, а для ELSE нет
Код: Выделить весь код
IF EXIST "%ProgramFiles(x86)%" (
  start "Uninstalling tftpd Server..." /wait "%programfiles(x86)%\tftpd32\unins000.exe" /silent
) else (
  start "Uninstalling tftpd Server..." /wait "%programfiles%\tftpd32\unins000.exe" /silent
)

Отправлено: 01:53, 29-06-2009 | #19


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Litstat, верно. Если бы запустил на 32-битной оси, то выдал бы ошибку.

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 01:57, 29-06-2009 | #20



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] Автоматическое определение типа ОС - 32 или 64 бит.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] определение ATI Radeon HD4850 1Gb/256 бит производитель GigaByte Hattori_Hanzo Видеокарты 7 31-03-2010 10:31
[решено] автоматическое определение модели принтера nigra Microsoft Windows NT/2000/2003 4 02-12-2009 14:39
[решено] Определение типа кодека AC'97 Giorgievich Поиск драйверов, прошивок и руководств 7 15-01-2009 19:43
Как печатать из 64-бит. ОС, если дрова только для 32 бит. ОС? skeletor Microsoft Windows NT/2000/2003 3 17-12-2008 05:09
файл кодирован или бит? BYBY Хочу все знать 14 07-08-2005 00:54




 
Переход