cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
MissionCritical
Level 2

Registration of .NET assembly .dll file from InstallScript installation

I wanted to see if there were any changed to InstallShield that address how to registry a .NET assembly (.dll) from an InstallScript-based installation.  If it matters, I'm using IS 2018.

I found this topic, which is essentially the same issue:

https://community.flexera.com/t5/InstallShield-Forum/Register-a-DLL-with-NET-Framework/m-p/71614#M46356

I was hoping that the InstallShield interface now directly supports the registration process instead of having to manually doing it.  We currently register this .dll directly in our application, in the background.  But this seems to be a hit-or-miss in terms of working.  Doing the registration in the actual installation is going to be a lot more error-prone, so that is not a solution.

Right now, we run regasm.exe either from the \Framework or \Framework64 directories depending on whether a 32-bit or 64-bit application is being installed, and run it from either the 2.x or 4.x directories.  But since we are essentially running a command line application, error checking is not the best and its impossible to troubleshoot what goes wrong at the end-user side.

Is there a solution for this?

Labels (1)
0 Kudos
(2) Replies
banna_k
Revenera
Revenera

Hi @MissionCritical,

 

InstallScript projects having below component settings to register the COM interop for .NET assembly:

.NET Assembly

InstallScript, InstallScript Object

Specify whether the component’s files should be installed as local .NET assemblies. Available options are:

  Local Assembly—The component contains a .NET assembly. In addition, the installation performs COM interop registration and configures .NET installer class information for the component at run time.
  Not a .NET Assembly—The component does not contain a .NET assembly. This is the default option.

If you want InstallShield to scan the assembly in this component for .NET dependencies at run time, Local Assembly must be selected for this setting. To learn more, see Identifying Properties and Dependencies of .NET Assemblies.

 

For more info:

https://helpnet.flexerasoftware.com/installshield24helplib/helplibrary/ComponentSettings.htm#ref-views_590435047_componentsdotnet

 

Thanks for that information.  I had never noticed that setting.  But it does not seem to work.

I enabled it, rebuilt the install.  Prior to that, I manually unregistered the one assembly.  After running the install, the .NET .dll file was not registered.

The component that the .NET assembly is in contains three (3) files, two of which are just plain non-.NET .exe files, the 3rd is the .NET .dll file which we register.

The documentation for this is sort of lacking, I'm unclear exactly what this option does.  There are a lot of different .NET versions, so I can't follow how this option knows what to do.  I as indicated in the original post, we manually run the regasm.exe file after we scan around looking for where its at on the client's computer.  This works, and is definitive, but lacks a good error checking mechanism on what might go wrong.   I don't know if there is some logging option in IS that can be turned on to see what the install is doing when it gets to the 'registration' part, assuming that is what this option does.

Thanks again for your reply.

0 Kudos