Почему Microsoft решила поместить 32-разрядные приложения в «Program Files (x86)»? - PullRequest
3 голосов
/ 16 ноября 2008

Возможно ли иметь больше смысл помещать 64-разрядные приложения в «Program Files (x64)» и оставлять 32-разрядные приложения для запуска в «Program Files»?

У меня есть командный файл, который должен запускать компилятор Flex . В x64 эта программа находится в «Program Files (x86)». В 32-битной Windows Vista это в «Program Files» - переменные среды? Проверьте это:

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86) 

Что мне делать?


set mxmlc="%ProgramFiles(x86)%\Adobe\Flex Builder 3\sdks\3.1.0\bin\mxmlc.exe"
if NOT EXIST %mxmlc% set mxmlc="%ProgramFiles%\Adobe\Flex Builder 3\sdks\3.1.0\bin\mxmlc.exe"

Тпй

Ответы [ 7 ]

7 голосов
/ 16 ноября 2008

Чтобы сделать его переносимым:

SET ExecPath=%ProgramFiles(x86)%
IF "%ExecPath%"=="" SET ExecPath=%ProgramFiles%
7 голосов
/ 16 ноября 2008

Это ничего. Угадайте, что содержит \ Windows \ System32 ? Правильно, 64-битные файлы DLL. Так, где они решили поместить 32-разрядные устаревшие файлы DLL? \ Windows \ SysWOW64 конечно.

Проблема в том, что, хотя приложения Windows имеют встроенные средства для определения местоположения системных каталогов, многие приложения их не используют. А поскольку Microsoft, прежде всего, является рабом обратной совместимости, мы получаем такие глупые вещи, как этот.

1 голос
/ 22 марта 2009

a.) То, что место установки по умолчанию меняется, не означает, что вы ДОЛЖНЫ устанавливать туда вещи. Простое изменение реестра заставит ваши новые установки идти куда угодно. Мои все идут на отдельный диск, в папки по моему выбору. Если приложение не может даже отследить свой путь установки через реестр, то, вероятно, его не стоит устанавливать в первую очередь.

б.) Я предполагаю, что они помещают 32-битные приложения в папку x86, потому что это не 32-битная ОС, то есть старые вещи идут сюда. Вы бы не купили новый дом и не позволили бы вашей собаке спать в нем, пока вы спите в его старом собачьем доме, верно? Если 64-разрядная версия - это шаг вперед, то зачем вам помещать устаревшее программное обеспечение в стандартную папку установки?

1 голос
/ 16 ноября 2008

РЕДАКТИРОВАТЬ: у меня есть командный файл, который должен запустить компилятор FLEX. в X64 эта программа находится в «Program Files (x86)» в Vista 32 bit, она находится в «Program Files» .. переменные среды? .. проверить это:

Используйте переменную окружения% ProgramFiles% и пропустите все эти хлопоты.

1 голос
/ 16 ноября 2008

x86 обычно считается 32-битным, если не указан x86-64. В любом случае, зачем им нужны собственные каталоги программных файлов?

0 голосов
/ 16 ноября 2008

Э-э ... Я думаю, что x86 относится к архитектуре процессора Intel, например 8086, 80286, 80386, 80486 и 80586.

80386 имел первый набор 32-битных команд, см. x86 (Википедия).

РЕДАКТИРОВАТЬ: Ах вопрос был уточнен.

См. Вопрос переполнения стека C # - Как получить программные файлы (x86) в Vista x64 .

0 голосов
/ 16 ноября 2008

Потому что Microsoft любит усложнять жизнь людям. Вместо того, чтобы упростить переход на 64-разрядную версию, они сделали его разделенным и сложным.

...