Как развернуть надстройку Excel XLL и автоматически зарегистрировать надстройку в Excel

Я разработал Excel XLL с использованием ExcelDNA и C#. Я нахожусь в точке, где я хотел бы начать тестирование развертывания, но не могу найти много информации, которая фактически обеспечивает шаги, которые работают.

Мой проект был разработан как библиотека классов со ссылками ExcelDna. В файле.dna у меня есть код ниже, который упаковывает все ресурсы в упакованную версию XLL (то есть атрибут Pack="true").

<DnaLibrary Name="ExcelXLL" RuntimeVersion="v4.0" Language="C#">
  <ExternalLibrary Path="ExcelXLL.dll" LoadFromBytes="false" Pack="true" />

Я хотел бы развернуть упакованный XLL на целевой машине в пути:

%APPDATA%\Microsoft\AddIns

Чтобы автоматически зарегистрировать XLL в Excel, мне нужно добавить раздел реестра, который зависит от версии Excel, которая есть у пользователя.

Например, на моем компьютере (64-разрядная версия Windows 7 под управлением 32-разрядной версии Excel 2007) мне потребуется добавить раздел реестра по следующему пути:

HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options\

Ключом будет тип REG_SZ с именем OPEN (или OPEN1, OPEN2 и т. Д.) И значением /R "ExcelXLL-pack.xll"

У меня есть 2 проблемы, хотя. Первый заключается в определении версии Excel, в которой пользователь должен получить правильный путь, а второй - в определении правильной версии OPEN, которую мне нужно создать (например, если у пользователя уже есть OPEN, OPEN1 и OPEN2, тогда я создаст ключ OPEN3).

Я пытаюсь выполнить установку, используя либо проект установки и развертывания, либо проект InstallShield LE, и не могу определить, как это сделать. Кто-нибудь знает, как это сделать или лучший способ сделать это?

РЕДАКТИРОВАТЬ 1:

Я провел много исследований по этому вопросу и посмотрел на несколько установщиков Windows.

В Package and Deployment и InstallShield LE я могу заставить установку / удаление работать, поместив класс установщика в мою библиотеку классов и связав выходные данные проекта с установкой. При таком подходе я выполняю вставку / удаление ключа реестра с помощью класса установщика. Проблема, которая у меня есть, заключается в том, что пользователь должен удалить сначала перед запуском новой установки (без возможности обновления).

Я скачал демонстрационную версию Setup Factory и могу заставить работать установку / обновление, но не могу выполнить проверку фреймворка (не поставляется с демо). Кроме того, деинсталляция завершается неудачно (хотя, возможно, я смогу заставить это работать с некоторыми дополнительными исследованиями).

Я заинтересован в использовании установщика WiX, но хотел бы знать, есть ли у кого-нибудь пример того, как выполнить развертывание с использованием WiX. Я также хотел бы знать, нужно ли мне использовать класс установщика или есть другой способ обработать поиск клавиши OPEN[n] в HKCU\Software\Microsoft\Office[Version].0\Excel\Options. Если бы я использовал выходные данные проекта для включения класса установщика, то мне нужно было бы иметь 2 отдельных целевых каталога (один в разделе "Program Files" для основного вывода проекта, а другой - в "%appdata%\Microsoft\AddIns" для упакованного XLL).

Любая помощь с благодарностью.

Спасибо,

подветренный

2 ответа

Решение

Используя IsWix и Wix 3.7, я смог решить эту проблему.

Полезные ссылки для регистрации компонентов:

Для создания класса C# для обработки пользовательских действий установщика Windows: http://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed?fid=1599130&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick&spc=Relaxed&select=4131367&fr=1

http://blogs.msdn.com/b/jschaffe/archive/2012/10/23/creating-wix-custom-actions-in-c-and-passing-parameters.aspx

Для установки свойства файла CustomAction.config в Content WIX настраиваемые действия, созданные для.Net Framework 4.0, не работает? Способы решить?

РЕДАКТИРОВАТЬ 1:

Для общих знаний о WiX (очень важно) http://channel9.msdn.com/blogs/scobleizer/wix-team-the-most-used-piece-of-software-at-microsoft-and-its-open-source

Чтобы обнаружить 32-разрядный и 64-разрядный Excel, вы можете проверить реестр: Определите, является ли Office 32-разрядным или 64-разрядным через реестр.

Для OPEN, OPEN1, OPEN2 и т. Д. Вам обычно требуется настраиваемое действие в сценарии установки, в котором перечислены ключи.

Другие вопросы по тегам