2011-10-18 149 views
0

我的應用程序存在嚴重問題。我有一個使用一些託管類工作的本地應用程序。我創建了一個C++ \ Cli包裝器,它是非託管代碼和託管代碼之間的代理。C++ Cli COM程序集無法由MSI註冊

在這個代理項目中,我聲明瞭一些公開的COM對象,它們的實現使用在託管程序集中聲明的C#對象。

一切工作正常我的開發環境,但問題出現時,我想在乾淨的系統上安裝我的應用程序。

我有一個MSI的項目,建議立即進行刪除註冊使用vsdraCOMvsdraCOMRelativePath這個CLR代理。事實上他們都不行。應用程序顯示特定對象(在此代理中定義)未註冊的錯誤。

我能夠使用regsvr32手動註冊此dll,但我想避免這種情況,並讓我的MSI包爲我做。

我試過在這個DLL上使用Regasm,它說沒有找到註冊對象。所有暴露的接口在IDL文件中定義。

你能告訴我如何使這些IDL定義的接口暴露或可見的regasm?

回答

0

我能夠使用regsvr32手動註冊此dll,但我想 避免這種情況,讓我的MSI包爲我做。

Visual Studio提供的註冊選項是一般用途。如果他們不適合你,那麼你需要確定你的文件需要如何註冊,並使用自定義操作來完成。

如果使用regsvr32.exe,請在註冊文件的自定義操作中使用它。

我已經嘗試過在此dll上使用Regasm,它說沒有任何對象是 發現註冊。

Regasm.exeregsvr32.exe不一樣。 Regasm.exe註冊程序集和regsv32.exe註冊命令組件。

你能告訴我如何讓這些IDL定義的接口暴露 或可見regasm?

Regasm.exe只能註冊強名稱的程序集。你可以在這裏閱讀更多關於這個: http://msdn.microsoft.com/en-us/library/xwb8f617.aspx