InstallShield 2018 .Net DLL CustomAction:System.NullReferenceException 每当执行操作时

问题描述 投票:0回答:0

我正在使用基本的 MSI InstallShield 安装,并希望从使用 vbscript 迁移到 c# 自定义操作。

我对存储在二进制表中的程序集使用托管 dll 自定义操作

我已经处理了依赖关系,但是在 WIX V3 和 WIX V4 自定义操作 installshield 项目中,当 MSI 调用操作时,抛出以下异常

InstallShield:异常:System.NullReferenceException:对象引用未设置为对象的实例。

我已经尝试过使用 visual studio 的 heatwave 扩展构建的 WIX v3 和 V4 自定义操作。

自定义操作的代码与扩展程序生成的代码没有变化。

namespace CustomAction1
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult CustomAction1(Session session)
        {
            session.Log("Begin CustomAction1");

            return ActionResult.Success;
        }
    }
}

我将 v3 和 v4 项目的参考程序集放在 supportdir 中进行测试

Microsoft.Deployment.WindowsInstaller.dll WixToolset.Dtf.WindowsInstaller.dll

之后 将 Dependency0 属性添加到 V3 项目中的 [SUPPORTDIR]\Microsoft.Deployment.WindowsInstaller.dll 和 将 Dependency0 属性添加到 V4 项目中的 [SUPPORTDIR]\WixToolset.Dtf.WindowsInstaller.dll

找不到更多与缺失依赖相关的异常

但是在 WIXV3 和 WIXv4 项目中,当在 MSI 日志文件中执行自定义操作时,我会遇到相同的异常

InstallShield:CustomActionData 未提供延迟操作请求的属性 MsiHiddenProperties InstallShield:异常:System.NullReferenceException:未将对象引用设置为对象的实例。 在 InstallShield.ClrHelper.CustomActionHelper.LoadResourceMapping(XmlDocument 文档) 在 InstallShield.ClrHelper.CustomActionHelper.GetEntryPointInfo(Int32 entryNumber) 在 InstallShield.ClrHelper.CustomActionHelper.RunAction(UInt32 installHandle,Int32 entryNumber,Int64 instanceHandle) InstallShield:托管代码引发了未处理的异常。

这很奇怪,因为自定义操作是如此简单。

任何人都可以建议我可能在哪里出错吗?

wix installshield
© www.soinside.com 2019 - 2024. All rights reserved.