Я використовую 64-бітну версію Windows 7 ще з CTP і зіткнувся з кількома проблемами з програмами, які встановлюються в C:\Program Files (x86)
папку. Яка мета взагалі мати 2 окремі каталоги файлів програм?
Кожна програма, яку я встановив, переходила в 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-розрядні програми могли завжди завжди використовувати цю змінну середовища, і не потрібна була б умовна логіка, заснована на тому, на якій ОС вони працюють.
%ProgramFiles%
змінної середовища вирішило б це. Не впевнений, як він обробляє різницю x86 / 64bit.