-1

我正在使用 win32 控制台应用程序,而与 dotnet 框架没有任何依赖关系。

我正在使用来自 C:\Windows\System32\MSI.dll 的 MsiOpenPackage API。在执行 API 时,它会将 MSCOREE.dll 加载到我的进程中。

以下行将 mscorwks.dll 加载到我的进程中。

MsiDoAction(hInstall,_T("InstallValidate"));

MsiDoAction是来自 MSI.dll 的其他 API。

如果我在没有安装点框架的干净 Windows XP 操作系统(服务包 2)中运行应用程序,那么这些 DLLS 不会加载到我的进程中,但我的应用程序工作正常。

如果系统中安装了 dotnet 框架,有谁知道为什么这些 mscorwks.dll 和 MSCOREE.dll 会加载到我的进程中?

我在纯 win32 控制台应用程序中的进程,与 dotnet 框架没有任何依赖关系。在启动进程时,这两个 dll 没有加载到我的进程中。它在执行函数MsiOpenPackageMsiDoAction从 MSI.DLL 加载。

请帮助我如何停止将这些 DLL 加载到我的进程中。

4

1 回答 1

0

这可能是 Windows Installer 准备好支持操作 .NET 程序集(例如将程序集安装到 GAC)。我怀疑防止这种情况的唯一方法是在没有 .NET 框架的机器上运行。如果您根本不希望它在您的主进程中,也许您应该在辅助进程中完成您的 Msi 工作。

于 2012-05-10T11:40:06.227 回答