【问题标题】:Msi Custom Action installer: Error 1001Msi 自定义操作安装程序:错误 1001
【发布时间】:2017-09-27 03:37:20
【问题描述】:

我正在为我的 dll 项目创建安装程序。在那我有一个参考文件。我将输出添加到自定义操作。我收到一个错误:

错误 1001。错误 1001。无法在 C:\Program Files (x86)\默认公司 名称\CadmateAddinSetup\AddInToolBar.dll 程序集。 --> 无法加载 一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。

如何解决这个问题? 我的 dll 项目中有 wpf 用户控件和一些 win 表单和类。是因为我没有添加参考文件吗?如果是这样如何识别缺少哪个依赖文件。

【问题讨论】:

    标签: windows-installer


    【解决方案1】:

    这很可能是一个依赖项,但 Visual Studio 应该尝试将它们添加到您的安装项目中,至少是它可以从程序集清单信息中检测到的那些。 VS 不会检测 COM 依赖项,因为没有说明您将在运行时链接到哪个 Dll。此外,如果您将程序集安装到 GAC 中并且您的 Dll 依赖于它,那么这也会导致失败 - 程序集在提交阶段之前不在 GAC 中,因此提交自定义操作有时会起作用。

    另一个问题是您的程序集没有以典型方式加载。它正在通过反射进行实例化,然后尝试定位安装程序类(因此出现消息),这绕过了任何重定向等等。

    也可能存在架构不匹配。如果您的 Dll 是 AnyCpu 并且它在 64 位模式下运行,则不会加载任何 32 位相关程序集。

    Fusion 日志查看器有助于识别缺失的依赖项。

    如果此 Dll 具有您要在安装过程中显示的表单和控件,这通常不是正确的做法。您将永远无法进行静默安装,表单/控件通常无法正常工作(您没有在正确的环境中运行 Windows UI 消息循环)。此外,Windows 安全可能会阻止它显示,因为您的自定义操作将(可能)使用系统帐户运行并显示 UI,这与不推荐使用交互桌面服务的原因相同。因此,如果您正在做一些配置,只需在应用程序第一次运行时从普通用户应用程序中进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多