Вкладка ленты существует даже после удаления надстройки PowerPoint

Я создал надстройку уровня приложения для PowerPoint 2010/2013, используя С# VSTO. Надстройка устанавливается из установочного файла msi.

Проблема в том, что после того, как я удалил надстройку с панели управления и открыл новую презентацию PowerPoint, вкладка ленты по-прежнему видна, и все функции работают правильно.

Чтобы удалить вкладку, я должен сделать одну из следующих двух вещей:

  1. Удалите надстройку из списка надстроек COM на вкладке PowerPoint Developer.
  2. Завершите работающий экземпляр PowerPoint из диспетчера задач.

Я вызвал методы удаления (в методе ThisAddIn_Shutdown) для всех инициализаций, которые я сделал в методе ThisAddIn_StartUp, но это не помогает.

private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        this.Application.WindowSelectionChange -= Application_WindowSelectionChange;
        this.Application.SlideSelectionChanged -= Application_SlideSelectionChanged;
        this.Application.SlideShowBegin -= Application_SlideShowBegin;
        this.Application.SlideShowEnd -= Application_SlideShowEnd;          
    }

Я что-то пропустил?

Любая помощь приветствуется. Спасибо!


person gkb    schedule 27.05.2014    source источник
comment
Работает ли PowerPoint, когда вы удаляете подключаемый модуль, или ваш подключаемый модуль все еще существует, когда вы запускаете PowerPoint после его установки? Если я не ошибаюсь, лента является общей для всех окон PowerPoint (то есть также для всех презентаций). Поэтому, пока он загружен, он не будет выгружен до выхода из текущего экземпляра PowerPoint.   -  person Gedde    schedule 27.05.2014
comment
Даже если я закрою текущий экземпляр PowerPoint, а затем удалю его, то снова, если я открою новую презентацию, я увижу вкладку. Кроме того, одновременно доступна только одна активная презентация PowerPoint.   -  person gkb    schedule 27.05.2014
comment
Используете ли вы RibbonX для изменения ленты или создаете пользовательский интерфейс, используя старые панели команд (которые помещают ваши панели инструментов/кнопки на вкладку «Надстройки» на ленте)? Если последнее, вам нужно явно удалить их, когда надстройка выгружается.   -  person Steve Rindsberg    schedule 27.05.2014
comment
Найдите в своем реестре другую запись вашей надстройки и удалите ее. Powerpoint 2010 обычно присутствует в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\PowerPoint\Addins и HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\PowerPoint\Addins   -  person Kiru    schedule 27.05.2014
comment
@SteveRindsberg - Привет, Стив, на самом деле я использую шаблон Ribbon (Visual Designer) для создания ленты.   -  person gkb    schedule 04.06.2014


Ответы (1)


Наконец удалось выяснить причину. Это произошло из-за нескольких строк пользовательского кода, написанного в методе InitializeComponent() в файле Ribbon.Designer.cs.

Избавился от проблемы, когда удалил этот кусок кода.

person gkb    schedule 16.07.2014
comment
не могли бы вы рассказать мне, какие изменения вы внесли, потому что я поражен той же проблемой - person Dah Sra; 30.09.2014
comment
Вам нужно будет убедиться, что все переменные, используемые в вашем коде, правильно удаляются. В моем случае я использовал свойство версии приложения PowerPoint, и оно не удалялось должным образом, поскольку я использовал его внутри метода InitializeComponent() в файле Ribbon.Designer.cs. Потребовалось много времени, чтобы понять это, снова начав с нуля, чтобы выяснить, в какое время во время разработки была создана эта проблема. - person gkb; 30.09.2014
comment
stackoverflow.com/questions/26116448/ - person Dah Sra; 30.09.2014