2014-10-20 84 views
0

如何为Office 2007/2010和2013构建通用安装程序?2007年和2013年用于Office Addin的常见安装程序

有在的csproj文件的差异(有不同的主机套餐IDS)

什么是共同打造的插件会在加载项的所有主机工作的最好方法?

我试过以下 - 我在Visual Studio 2010中为2007创建了一个插件应用程序。 我能够在VS2010中使用安装项目(msi)构建安装程序。它适用于Outlook 2007和2010(制作注册表更改/文件设置)。

这种联系是有益的:http://msdn.microsoft.com/en-us/vsto/ff937654.aspx

与点击安装曾经是有用的。由于有一些额外的文件,我不得不包括在内。所以选择自定义安装程序。

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

注:我已经开发使用Visual Studio 2010,2007年的前景和2010的插件使用C#

+0

显示你的工作。你到目前为止发现了什么?其他人建议的解决方案 – 2014-10-20 19:53:10

+0

更新了我原来的帖子。 – 2014-10-23 20:33:41

回答

1

事实上,应用程序,你已经问了两个问题中的一个!这里的答案是:
我如何为Office 2007/2010和2013构建一个通用安装程序?
这根本不是问题,不需要为每个版本的办公室安装不同的安装程序(除了x86 & x64办公室位,如果您正在进行每台机器设置)。如果您为每个版本的Office使用特定功能,则可以使用Application.Version在您的加载项代码中检查Office的版本。
什么是建立一个通用的插件的最佳方式,它可以在所有的主机上工作Addins我想你的意思是:什么是最好的办法...所有的主机办公室?您可以通过两种方式实现:

  • 通过使用商业产品Addin Express
  • 通过创建一个共享插件, (不幸的是,因为VS 2012下降),但是你仍然能够通过创建一个类 库项目创建它,一旦创建添加一个类,该类实现 Extensibility.IDTExtensibility2接口,如果您打算在插件中支持色带,然后再实现 IRibbonExtensibility。此外,请添加对Office.dll和 Extensibility.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) 
         { 
    
         } 
        } 
    

BTW这是我的第一个答案,所以希望它有帮助!

+0

谢谢Reda。我无法使用AddIn Express。不能依赖任何第三方。我会尝试你的方法,并将我的反馈放在这里。 – 2014-10-23 18:06:10

+0

嗨Reda,你能否详细说明你的答案的第一部分,或者发送一些限制来获得更多细节?我正在尝试为一个单词插件(.dotm文件)创建一个安装包,并将其放入Office 2013的正确启动位置,但没有取得太大的成功。任何指针都会很棒。 – 2014-12-18 10:55:42

相关问题