如何在不使用非托管中介的情况下从安装程序调用托管代码(.net)中编写的自定义操作dll?
答案 0 :(得分:4)
您的问题的答案取决于您是如何创作安装程序的。
对于Visual Studio安装项目,请在其中一个已部署的程序集中创建安装程序类。 MSDN文档中对此进行了介绍,例如http://msdn.microsoft.com/en-us/library/d9k65z2d(VS.80).aspx
对于Wix项目,您可以使用DTF构建可以完全访问MSI内容的托管自定义操作。 Wix位于http://wix.sourceforge.net/。
答案 1 :(得分:0)
在.NET / Windows Installer
中支持这一点使用VS.NET创建程序集。 将安装程序类添加到项目中 - 选择“添加 - 新项”。选择intaller类。 此类派生自System.Configuration.Install.Installer。它有许多虚拟方法,如Install()。这将在安装时由Windows安装程序引擎调用。
然后,可以将此程序集作为自定义操作添加到Windows Installer项目中。用于将自定义操作声明为.NET安装程序类的方法取决于您用于创建安装的工具。
对不起,这有点简短。
答案 2 :(得分:0)
我希望我对您的具体情况有更多了解,但作为一般性建议,您可以查看C ++ / CLI中涉及非托管/托管互操作性的问题:
C++: The Most Powerful Language for .NET Framework Programming
我从经验中知道我可以将非托管代码“解除”到C ++ / CLI项目中,我可以在任何C#/ .NET /托管代码中使用它,但听起来你想做相反的事情:提升托管代码进入C ++ / CLI项目,然后将其与一些非托管代码链接,并将其公开为传统的非托管DLL(或安装程序二进制文件)。我不确定这是否可以在C ++ / CLI中使用。
答案 3 :(得分:0)
贾里德 - 你能提供一些关于你如何完成这项工作的信息吗?
块引用
我希望我对您的具体情况了解得更多,但作为一般性建议,您可以查看C ++ / CLI中涉及非托管/托管互操作性的问题: C ++:.NET Framework编程最强大的语言 我从经验中知道,我可以将非托管代码“解除”到C ++ / CLI项目中,我可以在任何C#/ .NET /托管代码中使用它,但听起来你想做相反的事情:将托管代码提升为C ++ / CLI项目,然后将其与一些非托管代码链接,并将其公开为传统的非托管DLL(或安装程序二进制文件)。我不确定这在C ++ / CLI中是否可行。
块引用
我现在遇到了这个问题。我有一个在标准mfc VC中工作的项目,但我试图把它带入他的c ++ / cli世界。我遇到的主要问题是我无法在CoCreateInstance()调用中加载接口。