InstallShield 无法使用 .NET Installer 完成安装

InstallShield failing to complete installation with .NET Installer

过去,我向我的安装程序添加了一个 .NET 安装程序 class 文件,在安装的提交和卸载阶段执行自定义操作。我最近一次使用此配置构建安装程序是在 2016 年 2 月。

然而,最近的安装程序版本安装在安装过程中失败,当调用 .NET 安装程序 class 时出现错误 1001,即通用 .NET 安装程序 class异常。

我尝试用一​​个 DLL 创建一个新的安装程序;当 .NET Installer Class 设置设置为 No 时,安装完成并将单个 DLL 复制到安装目录。当 .NET 安装程序 Class 设置为是时,我在安装过程中遇到错误 1001 消息。

对于此测试设置,.NET 安装程序 class 未设置为执行提交、安装、回滚和卸载覆盖中的调用基础以外的任何操作:

namespace My.Namespace.Install
{
  [RunInstaller(true)]
  public partial class Installer : System.Configuration.Install.Installer
  {
    public Installer()
    {
      InitializeComponent();
    }

    public override void Commit(IDictionary savedState)
    {
      base.Commit(savedState);
    }

    public override void Install(IDictionary stateSaver)
    {
      base.Install(stateSaver);
    }

    public override void Rollback(IDictionary savedState)
    {
      base.Rollback(savedState);
    }

    public override void Uninstall(IDictionary savedState)
    {
      base.Uninstall(savedState);
    }
  }
}

在输出日志中,我只看到围绕错误 1001 消息的以下内容:

MSI (s) (E0:98) [08:19:18:014]: Creating MSIHANDLE (5) of type 790536 for thread 9368

MSI (s) (E0:C8) [08:19:18:014]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIC3AD.tmp, Entrypoint: ManagedInstall

MSI (s) (E0:98) [08:19:18:014]: Generating random cookie.

MSI (s) (E0:98) [08:19:18:014]: Created Custom Action Server with PID 7520 (0x1D60).

MSI (s) (E0:98) [08:19:18:061]: Running as a service.

MSI (s) (E0:98) [08:19:18:077]: Hello, I'm your 32bit Elevated Non-remapped custom action server.

MSI (s) (E0!7C) [08:19:18:108]: Creating MSIHANDLE (6) of type 790531 for thread 8828 Error 1001.

MSI (s) (E0!7C) [08:19:19:306]:

MSI (s) (E0:C8) [08:19:19:306]: Leaked MSIHANDLE (6) of type 790531 for thread 8828

MSI (s) (E0:C8) [08:19:19:306]: Note: 1: 2769 2: _4AE00A18A12F07BD1929A5512BB0EE07.install 3: 1 Info 2769. Custom Action _4AE00A18A12F07BD1929A5512BB0EE07.install did not close 1 MSIHANDLEs. CustomAction _4AE00A18A12F07BD1929A5512BB0EE07.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

MSI (s) (E0:C8) [08:19:19:306]: Closing MSIHANDLE (5) of type 790536 for thread 9368 Action ended 8:19:19: InstallFinalize. Return value 3.

错误 1001 消息出现两次(对于安装,安装失败后,对于回滚)。我在 InstallShield 2011 和 InstallShield 2014 Premier 中都尝试过,结果相同。

使用这些 .NET 安装程序 class 文件的能力最近是否有所改变,或者我可以执行其他步骤来尝试弄清楚发生了什么?

在构建机器上卸载 .NET 4.6 并重新安装 .NET 4.5.2 似乎已经解决了这个问题。