卸载我的Office 2010插件会留下一个空指针异常



我一直在试图追踪为什么我的Office2010插件在卸载期间留下空指针异常,而2007版本没有。(编辑:2007年与2010年处于相同状态-失败)

为了缩小范围,我放入了几个eventlog陷阱,这意味着如果代码达到这一点-我应该在eventlog中得到一些东西。没有这样的运气。现在,要么是我写错了eventlog陷阱,要么是代码没有达到那个点。

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

对于ExecuteVSTOInstaller(string arguments)

2007指:string subPath = @"Microsoft SharedVSTO9.0VSTOInstaller.exe";
2010指:string subPath = @"Microsoft SharedVSTO10.0VSTOInstaller.exe";

如果第一个陷阱触发了,这就是我之后放置陷阱的地方。

,

我有另一个方法来处理注册db

RegisterOffice2010AddIn.cs

    public void UnRegisterAddIn(string applicationName, string addInName)
    {

下一行是与我刚才使用/显示的完全相同的eventlog陷阱。

两者的差异(2007年与2010年)。

    private const string UserSettingsLocation =
        @"SoftwareMicrosoftOffice12.0User Settings";

    private const string UserSettingsLocation =
        @"SoftwareMicrosoftOffice14.0User Settings";

我想不出还有什么地方可以放置陷阱。我有一个CustomInstaller,它除了Dispose(bool disposing)InitializeComponent()之外什么都不做

发展:

动作开始14:21:00:PublishFeatures.
动作结束14:21:00:发布功能。返回值1.
动作开始14:21:00:PublishProduct.
动作结束14:21:00:PublishProduct。返回值1.
动作开始14:21:00:安装执行。
MSI (c) (B8:BC)[14:21:01:13]:字体已创建。字符集:Req=0, Ret=0,字体:Req=MS Shell Dlg, Ret=MS Shell Dlg

错误1001。错误1001。卸载时发生异常。此异常将被忽略,卸载将继续。但是,在卸载完成后,应用程序可能无法完全卸载。-->对象引用未设置为对象的实例。
错误2769:自定义动作_EE8A0D36_BE55_421F_9A55_95470C001D87。卸载未关闭1个MSIHANDLEs。
安装程序在安装此包时遇到意外错误。这可能表明这个包有问题。错误码是2769。参数为:_EE8A0D36_BE55_421F_9A55_95470C001D87。卸载,1,
动作结束14:21:05:安装执行。返回值3.
操作结束14:21:06:INSTALL。返回值3。

谷歌错误2769 -给出了"[TARGETDIR]"的答案,但我不引用TARGETDIR,我引用deploymentLocation。是的,我试过在我能想到的地方加上""。包括安装程序-注册表- HKLMSoftwareMSOffice12.0等…添加Excel/Word/Outlook和Manifest键值。没有反馈,不管是好是坏,错误还是其他。我不知道还有什么办法能找到这个人。

我猜它是指这个,在VDPROJ:

{
"Name" = "8:UnregisterOutlookAddIn"
"Condition" = "8:"
"Object" = "8:_73E71A44EB72485AB7367745F7D57F49"
"FileType" = "3:1"
"InstallAction" = "3:4"
"Arguments" = "8:"
"EntryPoint" = "8:"
"Sequence" = "3:3"
"Identifier" = "8:_EE8A0D36_BE55_421F_9A55_95470C001D87"
"InstallerClass" = "11:TRUE"
"CustomActionData" = "8:/addinName="Outlook2010AddIn 前景/应用程序= "
}

我发现它抛出了两个异常-次要在CustomSetupActions和UnregisterAddIn和主要在ClickOnceInstaller和Uninstall下。我怎么把它们说成是次要的和主要的?它会在CustomAction中执行异常然后在ClickOnce中执行终止异常。我已经消除了CustomActions中的一个,现在我只需要担心ClickOnce。从我收集到的信息来看,ClickOnce实现了安装项目中指定的接口(安装、回滚、提交、卸载)。我只需要弄清楚它是如何在卸载方法中出错的。

免责声明:除非我错了,我找错对象了。

改为WiX。它成为了一种变通方法,因为原来的仍然是正确的。

相关内容

  • 没有找到相关文章

最新更新