如何從安裝程序中使用託管代碼(.net)編寫自定義動作dll而不使用非託管中介?託管代碼中的自定義動作dll
回答
在.NET/Windows安裝程序中對此有支持
使用VS.NET創建程序集。 將安裝程序類添加到項目中 - 選擇「添加 - 新建項目」。選擇intaller類。 該類來自System.Configuration.Install.Installer。它有許多虛擬方法,如Install()。這將在安裝時由Windows安裝程序引擎調用。
然後可以將此程序集作爲自定義操作添加到Windows Installer項目中。用於將自定義操作聲明爲.NET安裝程序類的方法取決於您用於創建安裝的工具。
對不起,這有點簡單。
我希望我能知道更多關於你的具體情況,但建議一般一塊,你可能會考慮C++/CLI對於涉及非託管/管理互操作性問題:
C++: The Most Powerful Language for .NET Framework Programming
我從經驗中知道,我可以將非託管代碼「提取」到C++/CLI項目中,我可以從任何C#/ .NET /託管代碼中使用它,但聽起來您想要做相反的事情:將託管代碼提取到C++/CLI項目中,並且然後將其與一些非託管代碼關聯起來,並將其公開爲傳統的非託管DLL(或安裝程序二進制文件)。我不確定這是否可以在C++/CLI中使用。
您的問題的答案取決於您如何編寫安裝程序。
對於Visual Studio安裝項目,在其中一個部署的程序集中創建一個安裝程序類。這包括在MSDN文檔中,例如http://msdn.microsoft.com/en-us/library/d9k65z2d(VS.80).aspx
對於Wix項目,您可以使用DTF構建可完全訪問MSI內容的託管自定義操作。 Wix可在http://wix.sourceforge.net/。
Jared - 你能提供一些關於你如何完成這個的信息嗎?
塊引用
我希望我能知道更多關於你的具體情況,但建議一般一塊,你可能會考慮C++/CLI對於涉及非託管/管理互操作性問題: C++:該用於.NET Framework編程的最強大的語言 我從經驗中知道,我可以將非託管代碼「提升」到C++/CLI項目中,我可以從任何C#/ .NET /託管代碼中使用它,但聽起來像您想要執行的操作相反:將託管代碼提取到C++/CLI項目中,然後將其與一些非託管代碼關聯起來,並將其作爲傳統非託管代碼DLL(或二進制安裝程序)。我不確定這是否可以在C++/CLI中使用。
塊引用
我被困在一個問題,這個問題現在。我有一個項目,在標準的MFC VC工作,但我想把它帶入他的C++/CLI世界。我遇到的主要問題是我無法在CoCreateInstance()調用中加載接口。
- 1. 非託管dll代碼
- 2. 自託管代碼管理
- 3. WIX中的託管(C#)自定義操作不起作用(錯誤代碼1154)
- 4. 託管代碼中Visual Studio的自定義調試引擎
- 5. 從託管代碼調用非託管DLL函數時出錯
- 6. 與來自託管代碼
- 7. 託管代碼與非託管代碼
- 8. 在託管代碼中使用非託管dll中的資源字符串表
- 9. 如何將參數傳遞給用C#編寫的託管代碼DLL的自定義操作?
- 10. 託管C#中的自由非託管C代碼內存
- 11. 從託管代碼中的非託管DLL加載位圖文件
- 12. .NET中的託管代碼和非託管代碼
- 13. 更改託管代碼中非託管代碼的內存值
- 14. 使用託管代碼中的非託管代碼
- 15. 允許託管環境中的託管代碼回撥非託管代碼
- 16. 揭露非託管代碼的常數來管理的Dll
- 17. C++自定義動作DLL的路徑
- 18. WinPE中的託管代碼
- 19. 動態鏈接託管的C++類庫中的非託管dll
- 20. 託管的system.timer over un託管代碼
- 21. 在自定義環境中託管StyleCop
- 22. 來自非託管代碼的System.AccessViolationException?
- 23. 如何從C#代碼調用非託管dll中的函數?
- 24. 在Visual Studio 2010中使用帶有非託管代碼的DLL?
- 25. 如何在託管代碼中的C++ dll中爲其他dll創建方法?
- 26. 無法使用自定義動作DLL
- 27. 從託管代碼調用非託管代碼的性能
- 28. 非託管的DLL
- 29. char *在託管代碼中?
- 30. 託管Java代碼
得說我發現這是有史以來如此怪異有幫助,如果你還在尋找http://blog.torresdal.net/2008/09/03/WiXAndDTFIntroduction.aspx – Terrance 2011-01-31 23:18:04