2011-04-07 5 views
2

2007 Office System 제거 프로그램에서 Office2010 플러그인이 제거되지 않고 2007 버전이 아닌 이유를 추적하려고했습니다. (편집 : 2007은 2010 년과 같은 상태입니다 - FAIL)내 Office 2010 플러그인을 제거하면 null 포인터 예외가 발생합니다.

이벤트 로그를 몇 개 넣으십시오. 즉, 코드가이 시점에 도달하면 이벤트 로그에 무엇인가가 있어야합니다. 그런 행운은 없습니다. 이제 이벤트 로그 트랩을 잘못 작성했거나 코드가 그 지점에 도달하지 못했습니다. 을 의미 string subPath = @"Microsoft Shared\VSTO\9.0\VSTOInstaller.exe";
2010 : : 첫 번째 함정이 발사 한 경우 string subPath = @"Microsoft Shared\VSTO\10.0\VSTOInstaller.exe";

,이 - CustomSetupActions에서

에 ClickOnceInstaller.cs

ExecuteVSTOInstaller(string arguments)

2007으로

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["deploymentLocation"]; 
     if (deploymentLocation != null) 
     { 
      string arguments = String.Format(
       "/S /U \"{0}\"", deploymentLocation); 
      ExecuteVSTOInstaller(arguments); 
     } 
    } 

는 의미 나중에 내가 함정을 깔았을 곳이야.

-

난 등록 DB를

public void UnRegisterAddIn(string applicationName, string addInName) 
    { 

다음 행 정확하게 I 단지/사용 된 바와 같이 동일한 이벤트 로그 함정

RegisterOffice2010AddIn.cs

를 처리하는 다른 방법이있다.

차이점 (2007 vs 2010).

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

나는 함정을 배치하는 재미있을 수있는 다른 장소 생각할 수 없다

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

대. PublishFeatures :

조치 14시 21분 0초을 시작 : 나는 Dispose(bool disposing)InitializeComponent()

개발 외에 아무것도하지 않는 CustomInstaller 있습니다.
작업이 종료되었습니다 14:21:00 : PublishFeatures. 반환 값 1
작업 시작 14:21:00 : PublishProduct.
작업이 종료되었습니다. 14:21:00 : PublishProduct. 반환 값 1
작업 시작 14:21:00 : InstallExecute.
MSI (c) (B8 : BC) [14 : 21 : 01 : 013] : 글꼴이 생성되었습니다. Charset : Req = 0, Ret = 0, Font : Req = MS Shell Dlg, Ret = MS Shell Dlg

오류 1001. 오류 1001. 제거하는 동안 예외가 발생했습니다. 이 예외는 무시되고 제거가 계속됩니다. 그러나 설치 제거가 완료되면 응용 프로그램이 완전히 설치 제거되지 않을 수 있습니다. -> 오브젝트 참조가 오브젝트의 인스턴스로 설정되지 않았습니다.
DEBUG : 오류 2769 : 사용자 지정 작업 _EE8A0D36_BE55_421F_9A55_95470C001D87.uninstall이 MSIHANDLE을 닫지 않았습니다.
설치 프로그램에서이 패키지를 설치하는 중에 예기치 않은 오류가 발생했습니다. 이 패키지에 문제가 있음을 나타낼 수 있습니다. 인수는 _EE8A0D36_BE55_421F_9A55_95470C001D87입니다.제거, 1,
작업 종료 14:21:05 : InstallExecute. 반환 값 3
작업이 종료되었습니다. 14:21:06 : INSTALL. 오류 2769을 인터넷 검색을 반환 값은 3

- 나는 deploymentLocation을 참조, "\ [TARGETDIR]"의 답변을 제공합니다,하지만 난 참조 TARGETDIR을 해달라고. 그리고 예, 생각할 수있는 장소에 "\"를 추가하려고했습니다. 설치 - 레지스트리 - HKLM \ Software \ MS \ Office \ 12.0 \ ... etc ... \ Addins \ Excel/Word/Outlook 및 Manifest keyvalue 포함. 피드백, 좋음 또는 나쁨, 오류 또는 다른 점을주지 마십시오. 나는 이걸 사냥하려고 다른 것을 잃어 버렸어.

나는 VDPROJ, 그것은이에 참조하는 추측이 있습니다

{
"이름"= "8 : UnregisterOutlookAddIn"
"조건"= "8"
"개체"= "8 _73E71A44EB72485AB7367745F7D57F49"
"에 FileType"= "3 : 1"
"InstallAction"= "3 : 4"
"인수"= "8",532 10 "EntryPoint를"= "8"
"시퀀스"= "3 : 3"
"식별자"= "8 _EE8A0D36_BE55_421F_9A55_95470C001D87"
"InstallerClass"= "11 : TRUE"
"CustomActionData"= " 8 :/addinName = \ "OUR.Outlook.Outlook2010AddIn \"/ 응용 프로그램 = \ "전망 \" "
}

나는이 개 예외가 발생 발견 - CustomSetupActions에서 차와 UnregisterAddIn와 차를 ClickOnceInstaller 및 제거 아래에 있습니다. Howcome 나는 그들을 Secondary와 Primary로 언급한다. 그럼 CustomAction에서 예외를 수행 한 다음 ClickOnce에서 해당 예외를 제거합니다. CustomActions에서이 코드를 제거 했으므로 이제 ClickOnce에 대해서만 걱정하면됩니다. ClickOnce를 수집 할 수있는 곳에서 설치 프로젝트 (설치, 롤백, 커밋, 제거)에 지정된 인터페이스가 구현됩니다. 난 그게 어떻게 Uninstall 메서드를 amiss 실행할 수 알아 내야 만합니다.

면책 조항 : 본인은 틀리면 틀린 나무를 짖고 있습니다.

+0

사용자 지정 작업의 설치 프로젝트에서 Ofcourse를 시도해 보려고 다른 Uninstall 메서드를 제외 시켰습니다. 예외가 발생한 곳을 확인하십시오. 그런 행운은 없습니다. – DoStuffZ

+0

나는 인터넷과 구글을 두 번이나 다녀왔다. Windows Update가 찾지 못했던 몇 가지 패치/업데이트를 발견했다. 불운. 이미 업데이트/패치가 있거나 Windows Update에 기본으로 포함되어 있지 않습니다 (가능성이 낮음). 나는 설치하는 동안 몇 가지 다른 함정에 던져 넣었습니다. 설치가 어떻게 든 완료되면 트랩을 트리거하지 않고 설치를 완료합니다. 네, 다시 컴파일하고 설치하고 msi는 아주 새로운 타임 스탬프를 가지고 있습니다. – DoStuffZ

+0

내 사용자 지정 설치 관리자가 - [링크] (https://nodexl.svn.codeplex.com/svn/NodeXL/ExcelTemplateSetupClickOnceInstaller/ClickOnceInstaller.cs) (다소간 정확한 복사 붙여 넣기)로 발견되었습니다. 나는 여전히 방법을 찾으려고 노력하고있어 어떤 부분이 널 참조를 남기고 있는지 정확하게 볼 수있다. – DoStuffZ

답변

0

WiX로 변경하십시오. 원본이 여전히 사실과 같이 해결 방법이되었습니다.

관련 문제