[英]RegAsm in Custom Action
我有一個Outlook Addin,它是在Visual Studio 2010中創建的,面向.NET Framework 4.0。
此插件以前是用VB6編寫的(因此只針對x86 Outlook)。
但是,我現在遇到問題,因為有兩個版本的Outlook。
幾年前我對此進行了修改,但有兩個單獨的MSI文件(一個針對x86,另一個針對x64 ......每個文件都有相應的啟動條件,以防止用戶在其Outlook上安裝不正確的MSI)。
然而,現在我遇到了更大的問題...越來越多的用戶繼續下載不正確的版本,他們生氣了。
我希望制作1個安裝程序文件並注冊以下文件。
我已經將它們放在一個安裝程序文件中(安裝程序的目標是x86),並且我通過訂閱Commit
事件通過Custom Action在這些文件上運行RegSvr32
。
現在問題變成了我有一些.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
。
所以現在,情況變得更加復雜(我現在也很困惑)因為當我通過提升的命令提示符運行命令時代碼似乎工作。
所以我有兩個主要問題:
如果需要,我可以發布更多代碼。
好吧基本上,我自己解決了這個問題。
不需要使用RegAsm
來注冊DLL。
我的兩個Shims正在Install
方法中運行的Custom Action安裝程序中注冊。
我基本上運行RegSvr32
來將兩個 RegSvr32
注冊到系統上 。
另外,我擺脫了后期綁定。 對CreateObject
調用替換為:
在成功編譯32位目標平台MSI之后,我能夠在x64 Outlook和x86 Outlook上安裝它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.