12

Я использовал 64-битную версию Windows 7 начиная с CTP и столкнулся с несколькими проблемами с приложениями, которые устанавливаются в папку C:\Program Files (x86) . Какова цель иметь 2 отдельных каталога Program Files?

Каждая программа, которую я установил, была помещена в папку C:\Program Files (x86) . Кажется, не имеет значения, является ли приложение 32 или 64-битным. Почему 64-битные приложения не помещаются в C:\Program Files?

Есть ли способ изменить значение по умолчанию на C:\Program Files? Было бы что-нибудь испортить, если я просто положил все в C:\Program Files?

Если действительно есть какая-то выгода от наличия отдельной папки для 64-битных приложений, кажется, что более разумным было бы по умолчанию использовать C:\Program Files для приложений x86 и создать новую папку C:\Program Files (x64) для новые 64-битные приложения. Это поможет сохранить обратную совместимость. Я работаю разработчиком программного обеспечения, и некоторые из моих проектов содержат ссылки на пути к библиотекам в C:\Program Files . Теперь эти ссылки не работают на компьютере с Windows 7, который поместил их в C:\Program Files (x86) . Я даже пытался изменить целевое местоположение в установщике на C:\Program Files , но это было проигнорировано, и приложение все равно вошло в C:\Program Files (x86) .

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

Редактировать в отношении переменных среды: (Для простоты используются только английские значения переменных по умолчанию.) На 64-битной машине %ProgramFiles% будет C:\Program Files а новая переменная %ProgramFiles(x86)% будет C:\Program Files (x86) . Таким образом, если у вас есть 32-разрядная программа, которой нужно найти путь к папке, в которой она будет установлена, необходимо проверить, работает ли она в 32-разрядной или 64-разрядной версии Windows, чтобы знать, какую переменную среды использовать. Любые 32-битные приложения, которые были написаны без этого рассмотрения, должны быть обновлены для корректной работы на 64-битной машине. Поэтому даже при использовании переменных среды обратная совместимость нарушается.

Кроме того, %ProgramFiles(x86)% не существует в 32-разрядных версиях Windows. Если бы это было так, то 32-разрядные приложения могли бы всегда использовать эту переменную среды и не нуждаться в какой-либо условной логике, в зависимости от того, на какой ОС они работают.

3 ответа3

7

Причиной этого является то, что многие старые установщики либо не понимают новую файловую структуру, и все добавляют в стандартный каталог программных файлов, либо вы смотрите на умную программу, которая имеет несколько 32-битных компонентов, которые копируются туда.

Лучше всего загрузить новую программу, такую как x64 Winrar, и просто посмотреть, где она установлена, чтобы исключить проблему с вашей машиной.

Что касается того, чтобы все испортить - может, но это действительно зависит от программы, нет единого ответа, который подходит всем ... у некоторых небольших, компактных программ, содержащих всего несколько файлов, проблем не должно быть, если, как если бы вы говорили об Office Adobe, или любая другая "сюита" или большая программа, скорее всего, потерпит неудачу, так как они имеют много общих компонентов, которые являются кросс-архитектурными.

4

Если вы используете что-то кроме %ProgramFiles% (или CSIDL_PROGRAM_FILES , или в среде .NET .GetFolderPath (окружающая среда.SpecialFolder.ProgramFiles)) в любом случае у вас проблемы, поскольку в пользовательских установках программы могут устанавливаться на других томах (например, D:), а в международных установках по умолчанию часто используются другие папки.

  • Испанские окна: C:\Archivos de Programa ,
  • Французская Windows: C:\Programmes ,
  • Немецкая Windows: C:\Programme ,
  • Шведская Windows: C:\Program

и т.п.

3

Обратите внимание, что в 64-разрядных версиях Windows 7 (это также может относиться и к другим более новым версиям ОС, но я могу подтвердить это только для 64-разрядной версии Win 7), существует различие между видимым расположением вашего% ProgramFiles% в проводнике и в DOS.

В Windows 7 фактическая физическая папка% ProgramFiles% (и связанная с ней переменная% ProgramFiles (x86)% environemnt) фиксируется в соответствии с английской версией ; то есть "C:\Program Files" и "C:\Program Files (x86)" соответственно, но отображается в проводнике, локализованном по мере необходимости.

Предоставить конкретный пример; в 64-разрядной установке Windows 7 в Швеции, если вы открываете Проводник и просматриваете системный диск (обычно C:), вы видите папки « Program » и « Program (x86) ». Ввод% ProgramFiles% в адресную строку переводит вас в «C:\Program».

Однако, если вы откроете окно DOS и наберете SET, вы увидите, что фактическое значение% ProgramFiles% - это «C:\Program Files», а не средство просмотра папок «C:\Program». Дальнейшие исследования с CD и DIR вы можете увидеть физически, это "C:\Program Files"

Мораль такова, что если вы используете переменные среды или программу через API, все будет работать, но помните об этом тонком изменении при изучении файловой системы!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .