Я почти уверен, что где-то читал, что Windows сделала это для вас автоматически. Другими словами, если бы ваш установщик был 32-разрядным, он был бы перенаправлен в каталог x86
, даже если вы пытались установить в Program Files
.
Я уверен, что прочитал это в «Старом Новом», но вот ссылка , которая поддерживает конфликт, пока я не смогу его найти.
Ах, да, вот оно , из когда-либо полезных Раймонд Чен .
Commenter Koro пишет программу установки в форме 32-разрядной программы, которая обнаруживает, что она работает в 64-разрядной системе, и хочет скопировать файлы (и предположительно установить записи реестра и выполнить другие действия по установке) в битовые каталоги, но уровень эмуляции перенаправляет операции в 32-битные местоположения. Вопрос: «Как найти каталог программных файлов x64 из 32-разрядного приложения?»
Ответ: «Лучше работать с системой, чем с ней». Если вы 32-битная программа, вы будете бороться с эмулятором каждый раз, когда пытаетесь взаимодействовать с внешним миром. Вместо этого просто перекомпилируйте ваш установщик как 64-битную программу. Пусть 32-разрядный установщик определит, что он работает в 64-разрядной системе, и вместо этого запустит 64-разрядный установщик. 64-разрядный установщик не будет работать на уровне 32-разрядной эмуляции, поэтому при попытке скопировать файл или обновить раздел реестра он увидит настоящую 64-разрядную файловую систему и настоящий 64-разрядный реестр.