2014-10-20 71 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

相關問題