【问题标题】:A common Installer for Office Addin for 2007 2010 and 2013适用于 2007 2010 和 2013 的 Office 插件的通用安装程序
【发布时间】:2014-10-24 02:32:57
【问题描述】:

如何为 Office 2007 / 2010 和 2013 构建通用安装程序?

csproj文件有区别(有不同的主机包id)

构建适用于所有插件主机的通用插件的最佳方法是什么?

我尝试了以下方法 - 我在 Visual Studio 2010 中为 2007 创建了一个插件应用程序。 我能够在 VS2010 中使用安装项目(msi)构建安装程序。它在 Outlook 2007 和 2010 中运行良好。(进行了注册表更改/文件设置)。

这个链接很有用:http://msdn.microsoft.com/en-us/vsto/ff937654.aspx

使用 Click once 的安装很有用。因为我必须包含一些额外的文件。因此选择了自定义安装程序。

现在下一步是 2013 年。我在 2013 年使用了相同的安装程序。它崩溃了。我得到一个异常,表明堆栈溢出。

注意:我使用 Visual Studio 2010 为 OUTlook 2007 和 2010 插件使用 C# 开发了应用程序

【问题讨论】:

  • 展示你的作品。到目前为止你发现了什么?其他人提出了哪些解决方案?
  • 更新了我原来的帖子。

标签: ms-office outlook-addin


【解决方案1】:

其实,你已经把两个问题合二为一了!答案在这里:
如何为 Office 2007 / 2010 和 2013 构建通用安装程序?
这根本不是问题,不需要为每个版本的 office 使用不同的安装程序(如果您正在进行每台机器的设置,则 x86 和 x64 office 位数除外)。如果您为每个版本的 office 使用特定功能,您可以使用 Application.Version 在加载项代码中检查 office 的版本。
构建一个可在所有 Addins 主机上运行的通用插件的最佳方式是什么?我认为您的意思是:最好的方式是什么... Office 的所有主机?您可以通过 2 种方式完成此操作:

  • 通过使用商业产品Addin Express 或,
  • 通过创建共享加载项(不幸的是,自 VS 2012 以来已删除), 但是您仍然可以通过创建一个类来手动创建它 库项目,一旦创建添加一个实现类 Extensibility.IDTExtensibility2 接口,如果您打算 在您的插件中支持功能区,然后实现 Iribbon 的可扩展性也是如此。此外,添加对 Office.dll 的引用和 可扩展性.dll。最后你应该有类似的东西 这个:

    [GuidAttribute("1AF54C8F-6E33-44DE-9B4A-FF3801A51104"), ProgId("MyAddin.Connect")]

        public class Connect : Object, Extensibility.IDTExtensibility2, IRibbonExtensibility
        {
            private object applicationObject;
            private object addInInstance;
    
            public Connect()
            {
    
            }
    
            public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
            {
                applicationObject = application;
                addInInstance = addInInst;
            }
    
            public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
            {
            }
    
            public void OnAddInsUpdate(ref System.Array custom)
            {
            }
    
            public void OnStartupComplete(ref System.Array custom)
            {
            }
    
            public void OnBeginShutdown(ref System.Array custom)
            {
            }
    
            public string GetCustomUI(string RibbonID)
            {
                StreamReader customUIReader = new System.IO.StreamReader(
                @"APP\PATH\Ribbon.xml");
    
                return customUIReader.ReadToEnd();
            }
    
            public void onMsoCommand(Office.IRibbonControl control, ref bool Cancel)
            {
    
            }
        }
    

顺便说一句这是我在 SO 上的第一个答案,希望对您有所帮助!

【讨论】:

  • 谢谢瑞达。我不能使用 AddIn Express。不能依赖任何第三者。我会尝试你提到的方法并将我的反馈意见放在这里。
  • 嗨 Reda,您能否详细说明您的答案的第一部分,或者发送一些链接以获取更多详细信息?我正在尝试为 word 插件(.dotm 文件)创建一个安装包,并将其放置在 Office 2013 的正确启动位置,但没有太大成功。任何指针都会很棒。
猜你喜欢
  • 1970-01-01
  • 2015-10-11
  • 2011-02-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多