【问题标题】:custom action dll in managed code托管代码中的自定义操作 dll
【发布时间】:2010-09-07 07:05:58
【问题描述】:

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

【问题讨论】:

标签: .net installation


【解决方案1】:

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

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

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

抱歉,这有点简短。

【讨论】:

    【解决方案2】:

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

    C++: The Most Powerful Language for .NET Framework Programming

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        块引用

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

        块引用

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-06
          • 2012-01-03
          • 2014-02-15
          • 2015-03-14
          • 2011-08-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多