PDA

Показать полную графическую версию : [решено] Как проверить разрядность операционной системы?


Страниц : [1] 2 3 4 5 6

SvoiLudi
08-04-2010, 22:50
Как проверить разрядность операционной системы?

У виндоуз 7 есть 2 версии: 64-х разрядная и 32-х разрядная.

Для 64-х разрядной нужно, чтобы выполнялись дополнительные программы. Как это сделать в коммандом файле?

SvoiLudi
08-04-2010, 22:52
в реестре ветки добавляются у 64-х, но как проверить?

gora
08-04-2010, 22:53
@Echo Off
:: Варианит 1
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
Echo %xOS%
Pause

:: ===================================================================================
:: Варианит 2
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
Echo %xOS%
Pause

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из разных папок с именами x64 и x86
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"c:\My Test\%xOS%\install.exe" /S

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из одной папки с именами сожержащими суффикс x64 и x86 (install_x64.exe и install_x86.exe)
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"c:\My Test\install_%xOS%.exe" /S

:: ===================================================================================
:: Запуск приложений в зависимости от разрядности из разных папок, с разными именами и/или ключами
Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
If %xOS%==x86 ("c:\My Test\i86\install.exe" /S) Else ("c:\My Test\AMD64\setup.msi" /qn)

seriych
08-04-2010, 23:55
Так покороче:
set xOS=x86
if DEFINED ProgramFiles(x86) set xOS=x64
Возможно, вариант, предложенный gora, корректнее, но я не видел 32-битных систем с определенной системной переменной ProgramFiles(x86) и во всех x64 системах, которые я видел, эта переменная определена. Я определяю именно так.

SvoiLudi
09-04-2010, 14:00
PATH %PATH%;q:;w:;e:;r:;t:;y:;u:;i:;o:;p:;a:;s:;d:;f:;g:;h:;j:;k:;l:;z:\;x:;c:;v:;b:;n:;m:;
"%WINDIR%\regedit.exe" /s 32x.reg
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
if "%xOS%"=="x64" "%WINDIR%\regedit.exe" /s 64x.reg

в реестр ничего не добавляет, а если убрать /s то предлагает добавить в реестр, что требует действия пользователя, что неудобно. Как убрать запрос?
64x.reg находится на сетевом диске z:\

gora
09-04-2010, 15:10
SvoiLudi, на форуме темы организуются по принципу (http://forum.oszone.net/announcement-102-122.html) ''одна проблема – одна тема''.На Ваш вопрос в заголовке темы ответ уже дан, для нового вопроса откройте новую тему и постарайтесь его правильно сформулировать, примерно так: "Как на 64-разрядной системе внести данные из reg файла, находящегося на сетевом диске z:\, в реестр с помощью bat файла запущенного (откуда? с правами администратора?) в 32 (64)-разрядной среде? Reg файл прикрепил."

vcrank
01-06-2012, 12:34
Извините, если не в тему, но не получается корректно обработать запуск программы в зависимости от разрядности системы
Пример:
@ECHO OFF
SET ProgName=WinRar
SET ProgVer=4.20 Beta 3
SET FileNameX86=wrar420b3ru.exe
SET FileNameX64=winrar-x64-420b3ru.exe
SET FileName=
SET PFPath=
TITLE %ProgName% %ProgVer%

CLS
COLOR 1A

IF EXIST "%ProgramFiles(x86)%" (
IF DEFINED FileNameX64 (
SET FileName=%FileNameX64%
SET PFPath=%PROGRAMFILES%
) ELSE (
SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES(x86)%
)
) ELSE (
SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES%
)

ECHO Импорт настроек
ECHO.
regedit /S Settings.reg
ECHO.

START /WAIT %FileName% /S

ECHO Установка завершена
ECHO.

Задача: создать почти универсальный установочный bat-файл. Менять только значение переменных в самом начале
В данном скрипте почему-то съедается скобка в пути у Programm Files (x86

gora
07-06-2012, 08:21
почему-то съедается скобка в пути у Programm Files (x86 »
Попробуйте так:
@ECHO OFF
SET ProgName=WinRar
SET ProgVer=4.20 Beta 3
SET FileNameX86=wrar420b3ru.exe
SET FileNameX64=winrar-x64-420b3ru.exe
SET FileName=
SET PFPath=
TITLE %ProgName% %ProgVer%

CLS
COLOR 1A
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64

SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES(x86)%

IF %xOS%==x64 (
IF DEFINED FileNameX64 (
SET FileName=%FileNameX64%
SET PFPath=%PROGRAMFILES%
)
) ELSE (
SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES%
)

ECHO PFPath=%PFPath%
ECHO FileName=%FileName%
Pause

vcrank
07-06-2012, 14:17
Попробуйте так: »
На системе X86 выдёт
всё как и положено, а вот на x64
Выдёт всё равно путь и имя файла как для системы x86 (Program Files (x86) и wrar420b3ru.exe)

Такое ощущение, что условие ELSE срабатывает в любом случае
Пока делаю костыль с добавлением GoTo

gora
07-06-2012, 15:06
Тогда так:@ECHO OFF
SET ProgName=WinRar
SET ProgVer=4.20 Beta 3
SET FileNameX86=wrar420b3ru.exe
SET FileNameX64=winrar-x64-420b3ru.exe
TITLE %ProgName% %ProgVer%

CLS
COLOR 1A

Call :_Set_Var

ECHO xOS=%xOS%
ECHO PFPath=%PFPath%
ECHO FileName=%FileName%
Pause

:_Set_Var
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
SET FileName=%FileNameX86%
SET PFPath=%PROGRAMFILES%
IF %xOS%==x86 GoTo :EOF
SET PFPath=%PROGRAMFILES(x86)%
IF Not DEFINED FileNameX64 GoTo :EOF
SET FileName=%FileNameX64%
SET PFPath=%ProgramW6432%
GoTo :EOF
Так не должно зависеть от среды запуска (х86\х64) на х64 ОС

fly380
12-06-2012, 17:41
День добрый! Подскажите как на основе выше приведенного примера запустить программу driver install.ехе исходя из розрядности из папки х86 или х64?

gora
12-06-2012, 17:48
запустить программу driver install.ехе исходя из розрядности из папки х86 или х64 »
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
"%xOS%\driver install.ехе"

CyberMuesli
12-06-2012, 18:14
If Defined PROCESSOR_ARCHITEW6432 »
А если на 64-разрядном железе установлена 32 разрядная винда, будет ли определена переменная PROCESSOR_ARCHITEW6432, и чему она будет равна, если да?

fly380
12-06-2012, 18:25
Работает но есть одно но, driver install.ехе скомпилирован из *.bat и этот батник запускается и запускает driver install.ехе как бы внутри себя и команды из driver install.ехе не выполняются. За исключением одной
@var WSHShell = WScript.CreateObject( "WScript.Shell" ); > %temp%\mes.js
@WSHShell.Popup( "Установка завершена" ); >> %temp%\mes.js
@START %temp%\mes.js

Foreigner
12-06-2012, 18:28
будет ли определена переменная PROCESSOR_ARCHITE »
Будет равна "x86"

fly380
12-06-2012, 18:38
Работает но есть одно но, driver install.ехе скомпилирован из *.bat и этот батник запускается и запускает driver install.ехе как бы внутри себя и команды из driver install.ехе не выполняются. »
Подскажите можно как исправить это?

CyberMuesli
12-06-2012, 19:08
Будет равна "x86" »
Похоже, что нет. Нашел компьютер с Intel Core2 Quad Q9400 с 32-х разрядной версией WinServer 2003. Процессор вроде 64 разрядный, а переменная PROCESSOR_ARCHITEW6432 не определена вообще.

Мне кажется, сам вопрос немного некорректный, надо интересоваться не разрядностью процессора, а разрядностью винды.
Все верно, автор спрашивал как раз то, что нужно

ProgramFiles(x86).... Я определяю именно так. »
Плюсану. Я тоже

gora
12-06-2012, 19:21
а переменная PROCESSOR_ARCHITEW6432 не определена вообще. »
Она может быть не определена, но это не делает строку неработоспособной. В этом случает разрядность определяется по значению переменной %PROCESSOR_ARCHITECTURE%

CyberMuesli
12-06-2012, 19:25
Она может быть не определена, но это не делает строку неработоспособной »
Я не утверждал обратного

fly380
12-06-2012, 19:45
Работает но есть одно но, driver install.ехе скомпилирован из *.bat и этот батник запускается и запускает driver install.ехе как бы внутри себя и команды из driver install.ехе не выполняются.
Точнее строки
Set xOS=x86
If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
пишутся уже внутри driver install.ехе, хотя не пойму как и почему.
Парни скажите можно это исправить? А то очень нехочется лепить сложный инсталятор :(




© OSzone.net 2001-2012