Office 15, что это?

Я пытался выяснить, почему мой плагин Office2010 оставляет исключение нулевого указателя во время удаления, а версия 2007 — нет. (Изменить: 2007 в том же состоянии, что и 2010 — FAIL)

Чтобы сузить его, я поставил пару ловушек событийного журнала, то есть, если код достигнет этого момента — я должен получить что-то в Eventlog. Нет такой удачи. Теперь либо я написал ошибку в журнале событийного журнала, либо код не дошел до этой точки.

В CustomSetupActions — ClickOnceInstaller.cs

public void Uninstall(System.Collections.IDictionary savedState) { // write something to eventlog // This is not being fired, the exception doesn’t reach here or writing to eventlog fails. if (!EventLog.SourceExists(«OfficePlugin»)) { EventLog.CreateEventSource(«OfficePlugin», «Application»); } EventLog.WriteEntry («OfficePlugin» , string.Format(«Uninstalling: (bug hunting)»), EventLogEntryType.Information); string deploymentLocation = (string)savedState; if (deploymentLocation != null) { string arguments = String.Format( «/S /U \»{0}\»», deploymentLocation); ExecuteVSTOInstaller(arguments); } }

Что касается ExecuteVSTOInstaller(string arguments)

Если первая ловушка была запущена, вот где я поместил бы ловушку позже.

У меня есть другой метод, который обрабатывает регистрацию db

public void UnRegisterAddIn(string applicationName, string addInName) {

Следующая строка — это точно та же самая ловушка eventlog, что и я. //

Разница между двумя (2007 против 2010).

private const string UserSettingsLocation = @»Software\Microsoft\Office\12.0\User Settings»;

против

private const string UserSettingsLocation = @»Software\Microsoft\Office\14.0\User Settings»;

Я не могу думать о другом месте, которое может быть интересно разместить в ловушке. У меня есть CustomInstaller, который ничего не делает кроме Dispose(bool disposing) и InitializeComponent()

Разработка:

Ошибка 1001. Ошибка 1001. При удалении произошла ошибка. Это исключение будет проигнорировано, и удаление будет продолжено. Однако после завершения удаления приложение не может быть полностью удалено. → Ссылка на объект не установлена ​​в экземпляр объекта.
DEBUG: Ошибка 2769: пользовательское действие _EE8A0D36_BE55_421F_9A55_95470C001D87.uninstall не закрыло 1 MSIHANDLE.
Установщик столкнулся с непредвиденной ошибкой при установке этого пакета. Это может указывать на проблему с этим пакетом. Код ошибки 2769. Аргументы: _EE8A0D36_BE55_421F_9A55_95470C001D87.uninstall, 1,
Действие завершено 14:21:05: InstallExecute. Возвращаемое значение 3.
Действие закончилось 14:21:06: УСТАНОВКА. Возвращаемое значение 3.

У меня есть предположение, что он ссылается на это, в VDPROJ:

Я обнаружил, что это исключает два исключения: вторичное под CustomSetupActions и UnregisterAddIn и первичное в ClickOnceInstaller и Uninstall. Как бы я ни упоминал их как второстепенный и первичный. Ну, это сделает исключение в CustomAction, а затем убивает его в ClickOnce. Я исключил тот, что был в CustomActions, и теперь мне нужно только беспокоиться о ClickOnce. Из того, что я могу собрать, ClickOnce реализует интерфейс, указанный в проекте установки (Install, Rollback, Commit, Uninstall). Мне нужно только выяснить, как это может произойти, запустите метод Uninstall.

Отказ от ответственности: если только я не ошибаюсь, я ошибаюсь и лаем неправильное дерево.