In the past, I have added a .NET Installer class file to my installers, performing a custom action during the Commit and Uninstall phases of the installation. I last built my installer as recently as February 2016 with this configuration.
Recent installer build installations, however, are failing during the installation process when getting to the point when the .NET Installer class should be called with Error 1001, the generic .NET Installer class exception.
I tried creating a new installer with a single DLL; when the .NET Installer Class setting is set to No, the installation completes and the single DLL is copied to the installation directory. When the .NET Installer Class setting is set to Yes, I hit the Error 1001 message during installation.
For this test setup, the .NET Installer class isn't set up to do anything other than call base in Commit, Install, Rollback, and Uninstall overrides:
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);
}
}
}
In the output log, I only see the following around the Error 1001 message:
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.
The Error 1001 message occurs twice (for the Install, and then after the installation fails, for the Rollback). I have tried in both InstallShield 2011 and InstallShield 2014 Premier, and experience the same result.
Has something recently changed with the ability to use these .NET Installer class files, or are there additional steps I can perform to try and figure out what is going on?