gpt4 book ai didi

c# - MSI 日志调试日志接收器

转载 作者:太空狗 更新时间:2023-10-30 01:28:06 24 4
gpt4 key购买 nike

我有一个 InstallShield MSI 项目。当我将 MSIHANDLE 从 InstallScript 自定义操作传递到通过 DotNetCoCreateObject() 初始化的托管程序集时,我的托管代码中收到的值为 -2。

有谁知道是否可以从通过 DotNetCoCreateObject() 调用托管代码的 InstallScript 自定义操作访问 MSIHANDLE?我想将我的自定义操作结果记录到与其余安装相同的日志文件中。我正在使用 InstallShield 2010、Windows Install 4.5 和 .Net 3.5。

最佳答案

只有通过托管自定义操作才有可能,并且需要使用 InstallShield 的 InstallShield.Interop.Msi.dll 来获取实际句柄。

要从托管的自定义操作写入 MSI 日志文件,这是可行的:

 using (Msi.Install msi = Msi.CustomActionHandle(_msiHandle))
{
using (Msi.Record record = new Msi.Record(100))
{
record.SetString(0, "LOG: [1]");
record.SetString(1, entry.Message);
msi.ProcessMessage(Msi.InstallMessage.Info, record);
}
}

注意:自 IS2010 起,InstallShield.Interop.Msi.dll 未经过数字签名,因此包含您的托管自定义操作的程序集也必须未签名。

关于c# - MSI 日志调试日志接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com