0

我有一个安装程序(使用 Advanced Installer 制作)。我有一个必须与之交互的应用程序,但我不知道如何找到该安装的 MSIHANDLE。我查看了 Microsoft Reference,但没有发现任何对我的问题有帮助的东西。

请问有什么帮助吗?

4

1 回答 1

1

MSI 句柄不可用于进程外代码。您需要编写一个自定义操作,该操作可以承载某种类型的 RPC 机制,然后您的应用程序可以与之交互。这基本上就是 Windows Installer XML (Wix) 部署工具基础 (DTF) 的工作方式。它允许您使用与 C++ 主机包装的 C# 编写自定义操作。C++ 主机使用 RunDLL32 在进程外执行托管代码(这样它就不会使用 CLR 版本刺穿 msiexec 进程),然后在两者之间创建一个 IPC 隧道。

在您的 C# 中有一个互操作库,它通过 IPC 隧道编组调用,然后 C++ 代码调用 MSI API 并返回结果。

于 2013-06-29T17:54:45.310 回答