3

如何在不使用非托管中介的情况下从安装程序调用以托管代码 (.net) 编写的自定义操作 dll?

4

4 回答 4

4

您的问题的答案取决于您如何编写安装程序。

对于 Visual Studio 安装项目,在您部署的程序集中创建一个安装程序类。这在 MSDN 文档中有所介绍,例如http://msdn.microsoft.com/en-us/library/d9k65z2d(VS.80).aspx

对于 Wix 项目,您可以使用 DTF 构建可以完全访问 MSI 内容的托管自定义操作。Wix 可在http://wix.sourceforge.net/获得。

于 2008-09-12T02:41:23.520 回答
0

在 .NET/Windows Installer 中完全支持这一点

使用 VS.NET 创建程序集。将安装程序类添加到项目 - 选择“添加 - 新项目”。选择更高级的课程。此类派生自 System.Configuration.Install.Installer。它有许多虚拟方法,例如 Install()。这将在安装时由 Windows 安装程序引擎调用。

然后可以将此程序集作为自定义操作添加到您的 Windows Installer 项目中。用于将自定义操作声明为 .NET 安装程序类的方法取决于您用于创建安装的工具。

抱歉,这有点简短。

于 2008-08-29T19:20:58.153 回答
0

我希望我能更多地了解您的具体情况,但作为一般建议,您可能会查看 C++/CLI 以了解涉及非托管/托管互操作性的问题:

C++:.NET Framework 编程最强大的语言

我从经验中知道我可以将非托管代码“提升”到 C++/CLI 项目中,在那里我可以从任何 C#/.NET/托管代码中使用它,但听起来你想做相反的事情:将托管代码提升到 C++ /CLI 项目,然后将其与一些非托管代码链接并将其公开为传统的非托管 DLL(或安装程序二进制文件)。我不确定这在 C++/CLI 中是否可行。

于 2008-08-29T19:31:01.733 回答
0

Jared - 你能提供一些关于你是如何做到这一点的信息吗?

块引用

我希望我更多地了解您的具体情况,但作为一般建议,您可能会查看 C++/CLI 以解决涉及非托管/托管互操作性的问题: C++: The Most Powerful Language for .NET Framework Programming 我从经验中知道我可以将非托管代码“提升”到 C++/CLI 项目中,我可以从任何 C#/.NET/托管代码中使用它,但听起来您想做相反的事情:将托管代码提升到 C++/CLI 项目中,然后链接使用一些非托管代码并将其公开为传统的非托管 DLL(或安装程序二进制文件)。我不确定这在 C++/CLI 中是否可行。

块引用

我现在遇到了这个问题。我有一个在标准 mfc VC 中工作的项目,但我正试图将它带入他的 c++/cli 世界。我遇到的主要问题是我无法在 CoCreateInstance() 调用上加载接口。

于 2008-10-10T03:12:01.290 回答