Проблема в создании установщика для 64-битной системы - PullRequest
0 голосов
/ 12 мая 2011

Я работаю над проектом ac # + vsto. Мы создаем и проверяем шаблоны Excel, используя vsto.Недавно я обнаружил 1 интересную вещь.

В 32-битной системе программное обеспечение устанавливается в

C: \ Program Files

Но в 64-битной системесистема устанавливается в

C: \ Program Files (x86)

при попытке

Случай I: открытие файла Excel(который был создан в 32-битной системе) в 64-битной системе.

Случай II: открытие файла Excel (который был создан в 64-битной системе) в 32-битной системе

В системе получено исключение.

Это связано с тем, что соответствующие библиотеки DLL хранятся в разных местах.

, поскольку 32-разрядный код относится к

* 1031.* C: \ Program Files

и 64-битные относятся к

C: \ Program Files (x86)

Есть ли способя могу заставить установщик устанавливать программное обеспечение в C: \ Program Files для 64-битной системы, а не устанавливать его в C: \ Program Files (x86)

Anyпомощь?

привет.

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

Соглашение заключается в установке 32-разрядного программного обеспечения на Program Files (x86) в 64-разрядной системе. Я не думаю, что вы хотите установить 32-битное программное обеспечение на Program Files - это пошло бы вразрез.

Что касается исправления, мне интересно, почему Excel считает, что ваши DLL установлены в Program Files. Возможно ли, что вы где-то используете жестко закодированные пути?


Из вашего комментария к этому ответу действительно видно, что вы жестко запрограммировали путь установки. Похоже, это может быть проблемой во многих отношениях. Вы обнаружили проблему с 64-битной ОС, но что, если системный диск вашего пользователя - D? А что, если у них есть локализованная версия Windows? Например, в Германии папка с программными файлами обычно C:\Programme.

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

0 голосов
/ 12 мая 2011

Из этого комментария ....

Когда я устанавливаю свое приложение на 32 Битовая система и сгенерировать шаблон хранит путь к DLL в шаблон, но когда я пытаюсь открыть это шаблон Excel на 64-битной системе, это ищет ссылку на DLL в программных файлах, но DLL присутствует в программных файлах (x86) папка и я получаю исключение, я надеюсь теперь ясно.

Звучит так, что, может быть, вы не совсем правильно используете VSTO, хотя, может быть, я об этом и не подозревал.

Для типичных надстроек VSTO надстройка регистрируется под клавишей EXCEL «Надстройки». Неважно, будет ли он 64- или 32-битным, у вас останется только один (который когда-либо применим).

Надстройка будет загружаться при загрузке Excel, а НЕ при загрузке определенного шаблона.

Когда вы загружаете шаблон, надстройка обычно отслеживает загрузку документа и затем реагирует соответствующим образом.

Я полагаю, что существует тип надстройки «на документ», который вы можете создать с помощью VSTO, но если вы сделаете это, меня совсем не удивит, что Excel не сможет загрузить документ при различных типах установки Excel, так как они не совместимы автоматически.

0 голосов
/ 12 мая 2011

Я не уверен, что полностью понимаю запрос, но не могли бы вы просто использовать System.Environment.Is64BitOperatingSystem, чтобы увидеть, является ли это 64-битной ОС?

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