Нужно ли VSTO addin добавлять записи реестра в Wow6432Node? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть надстройка VSTO, которая не устанавливается на 32-битные машины.(всплывающее сообщение об ошибке при установке: «Этот установочный пакет не поддерживается данным типом процессора. Обратитесь к поставщику продукта.») Надстройка использует Installshield для установки.Приложение собирается с помощью AnyCPU.Кажется, он принудительно запускает 64-битную версию, если что-либо в installshield ссылается на 64-битную.(например, у меня есть записи реестра для моего надстройки, которые являются его Description, friendlyName, LoadBehavior и Manifest. Они расположены в HKLM / Software (64bit) / Wow6432Node / Microsoft / Office / Outlook / Addins / myAddin) Я действительно не знаю, еслиэто нужно?

Итак, мое исправление состоит в том, чтобы иметь два выпуска ... в которых нет 64-битных ссылок на реестр.

Как бы это исправить?Я возился с идеей отказа от Installshield LE и перехода на vs2017 с другим установщиком ...

1 Ответ

0 голосов
/ 17 октября 2018

У меня есть надстройка VSTO, которая не будет установлена ​​на 32-битных компьютерах.

Вы имеете в виду, что надстройка не загружается Office?или сам пакет установки не может быть установлен?

Я предполагаю, что надстройка не загружена.Я не знаю, как installshield контролирует битность компонентов пакета , но я постараюсь дать ответ, который можно применить к любому инструменту, если в инструменте можно настроить следующие параметры.

С помощью пакетов MSI, устанавливающих надстройки VSTO, необходимо убедиться, что записи реестра попадают в правильный куст реестра, исходя из разрядности установленной версии Office, а не ОС.

Итак, для компьютеров с Office x86 у вас есть эти реестры:

  • на ОС x86 : HKLM / Программное обеспечение / Microsoft / Office / Outlook / Addins / myAddin
  • на 64-разрядной ОС и 32-разрядной версии Office : HKLM / Software / Wow6432Node / Microsoft / Office / Outlook / Addins / myAddin

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

Если у вас машина x64 с 64-битным офисом , то вам нужно принудительно установить этот реестр вне Wow6432Node, то есть непосредственно в: HKLM / Software / Microsoft / Office/ Outlook / Addins / myAddin

Это также можно сделать с помощью 32-разрядного MSI, если пометить компонент реестра MSI как 64-разрядный (не знаю, где находится этот параметр в ISно я уверен, что вы можете найти его).Это заставит ОС прекратить перенаправление на Wow6432Node для этих записей реестра.И MSI также должен работать на 32-битных машинах, где этот флаг будет игнорироваться.

Однако вы должны знать, что маркировка компонента как 64-битного в 32-битном пакете MSI вызовет некоторое ICEошибки / предупреждения .

Они расположены в HKLM / Программное обеспечение (64 бит) / Wow6432Node / Microsoft / Office / Outlook / Addins / myAddin)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...