Какой вред для установки программы "AnyCPU" на 64-битной Windows с использованием 32-разрядной MSI?

Мое приложение построено с использованием конфигурации "Any CPU". Установщик WIX для приложения построен с platform=x86, поэтому полученный MSI 32-разрядный.

Когда я запускаю 32-разрядную MSI на 64-битной Windows. Свойство [ProgramFilesFolder] разрешено для "C:\Program Files (x86)", и пути реестра разрешены к Wow6432Node. Когда я запускаю приложение, процесс будет 64 бит - как и ожидалось.

Насколько я понимаю, прочитав много связанных сообщений по SO. В 64-битной Windows, чтобы сделать [ProgramFilesFolder] разрешенным для "C:\Program Files" и пути реестра к нормальному пути (не под Wow6432Node). Мне нужен отдельный 64-разрядный MSI. Который я пытаюсь избежать - для меня, чтобы иметь отдельный 64-разрядный MSI только для [ProgramFilesFolder], а путь regsitry для исправления местоположения не стоит. Пока моя программа по-прежнему работает на 64-разрядной версии в 64-разрядной Windows, мне все равно, что она установлена ​​на "C:\Program Files (x86)" по умолчанию, а некоторые значения реестра существуют в Wow6432Node.

Итак, мой вопрос в том, есть ли другие последствия, когда я устанавливаю программу "AnyCPU" в 64-разрядной Windows с использованием 32-разрядного MSI, кроме как по умолчанию installDir является "C:\Program Files (x86)" и некоторые значения реестра хранятся в Wow6432Node?

Ответ 1

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

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