2016-06-14 26 views
1

我有一個Outlook Addin,它是在Visual Studio 2010中針對.NET Framework 4.0創建的。自定義操作中的RegAsm

此插件以前是用VB6編寫的(因此只針對x86 Outlook)。

但是,我現在遇到了問題,因爲有2個版本的Outlook。

我幾年前修改過這個版本,但有兩個獨立的MSI文件(一個針對x86,另一個針對x64 ...,每個都有相應的啓動條件以防止用戶在他們的Outlook上安裝不正確的MSI)。

但是現在我遇到了更大的問題......越來越多的用戶不斷下載不正確的版本,並且他們越來越惱火。

我希望能夠創建1個安裝程序文件並註冊以下文件。

  1. 沉86
  2. 沉64

我已經放在這些都在1個安裝文件(安裝瞄準X86),和我通過訂閱通過自定義操作上運行這些RegSvr32Commit事件。

現在問題變成當我有一些.NET DLL。我基本上有一個DLL(它負責檢查用戶的註冊是否已經滿足)。

出於某種原因,即使我打個電話到以下幾點:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe

而且還用於基於x64的系統:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe

這個完整的呼籲我的激活DLL和我的主DLL是:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /tlb MyDll.dll /Codebase

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /tlb MyDll.dll /Codebase

代碼成功運行(至少我的假設是,它成功運行,因爲沒有在Try/Catch引發的錯誤)。

但是,當我通過我的應用程序進行調試並撥打CreateObject時,它只是返回一個錯誤,指出ActiveX Component cannot be created

所以現在,情況變得更加複雜(我現在很困惑),因爲當我通過提升的命令提示符運行命令時,代碼似乎工作。

所以,我有兩個主要問題:

  1. 我是否正確運行的命令(S)的自定義操作安裝程序?
  2. 爲什麼通過提升的命令提示符(當我以爲指揮工作微星在提升模式下運行反正?

我可以發佈更多的代碼,如果需要的話。

回答

0

好了,所以基本上,我由我自己解決了這個。

沒有需要使用RegAsm註冊的DLL。

我的兩個墊片被註冊自定義操作安裝程序 - [R在Install方法期間變得一致。

我基本上運行RegSvr32註冊兩個墊片到系統

此外,我擺脫了晚綁定。到CreateObject這一要求被替換:

  • 導入外部DLL作爲參考
  • 更換晚早期綁定綁定(基本上使用DLL的命名空間)

成功編譯一個32位的目標後,平臺MSI,我能夠在x64 Outlook和x86 Outlook上安裝它。