Можно ли вручную писать записи Wow6432Node из проекта развертывания VS2010? - PullRequest
1 голос
/ 05 июня 2011

У меня есть компонент .NET, написанный на C #, который должен зарегистрировать некоторые значения реестра в кусте HKLM.Я ожидаю, что этот компонент будет установлен как на x86 (32-битный), так и на x64 (64-битный) боксы, работающие под управлением Windows.В 64-битных системах я хочу убедиться, что компонент может использоваться как 32-, так и 64-битными процессами хостинга.Я застрял с использованием проектов развертывания Visual Studio в настоящее время.

Мне нужно, чтобы мой установщик при запуске на 64-битных системах поместил свои записи реестра в HKLM/Software/Blablah, чтобы при работе в 64-битном процессе мой компонент мог найти свою глобальную конфигурациюнастройки.Однако, если мой компонент размещен 32-разрядным процессом, работающим на той же машине, он будет считывать с того же ключа, что, по его мнению, будет преобразован в HKLM / Software / Wow6432Node / Blablah.

Можно ли создавать мой 64-разрядный установщик так, чтобы:

  • он отмечался как установщик x64
  • записывал записи в HKLM/Software/Blablah для 64-битные процессы
  • записывает точные копии этих записей в HKLM/Software/Wow6432Node/Blablah для 32-битных процессов на одном компьютере.

Я предполагаю, что, поскольку я 'Если вы пометили установщик как x64, я буду вынужден создать другой отдельный установщик специально для 32-разрядных систем, который записывает только в HKLM/Software/Blablah.

1 Ответ

2 голосов
/ 05 июня 2011

Обычная практика - иметь как 32-битные, так и 64-битные установочные пакеты.На 32-битной машине вы просто запускаете 32-битный пакет, на 64-битной машине вы запускаете оба.

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

...