Как развернуть надстройку 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
Для установки свойства файла 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 и т. Д. Вам обычно требуется настраиваемое действие в сценарии установки, в котором перечислены ключи.