How to register dll using Installshield
I am new for Installshield.
I am including a dll which is not getting registered after setup (which i have created using installshield ) was installed.
Installation time there is no error but when i open perticular form in an installed application, i am getting an error "Class Not Registered".
Any way to overcome this problem.
Thanks in advance.
Or else in script, you can do it by:
LaunchAppAndWait(WINSYSDIR ^ "Regsvr32.exe", "/s " + "\"" + dll absolute path+ "\"", WAIT);
The best option for .dll registration is to have Installshield register the file when the Installer is built (Rather than registering the file when the installer is run)
When we register the .dll during the build, the registry data is added directly into the MSI tables making it part of the installer.
This means that the data is handled as part of all normal MSI processes such as uninstall, upgrades, repair etc.
If you register with an action when the installer is run then this is happening outside of the installation context and you would need a custom mechanism to handle it during uninstall. repair, upgrade etc.
You can register the file during the build with the following setting in Installshield:
ORGANIZATION > Components > Select your Component > COM Extract at Build = Yes
Be aware that Installshield will only extract the COM data from key file of that component.
You can also have Installshield extract the data from the file when you add the file to the project (rather than at build) - this way you can look the registry view and check the correct information is being added.
From the Top Ribbon select TOOLS > Options > Preferences Tab > Self-registration > COM Extraction will occur immediately when the file is added
I hope this information helps.
Thanks for the info, shunt.
I tried this and it had an effect, but still all is not well. I now get:
"warning -4354: The build was unable to extract information from the file ..... .dll"
Please let me have any ideas how to overcome this.
As a test, on a clean test machine are you able to run regsvr32 against that same .dll? This would tell us where the issue sits.
Check that you are running Installshield with admin permissions (if its running within Visual Studio as a standard user this could prevent the COM extract)
Also check that the .dll has no file dependencies that it is looking for which is causing the COM extract to fail.
Thanks for your time.
i) No, I cannot run regsev32 against this dll because it's 64-bit. However, use of regasm works fine on a clean machine which is running 64-bit Windows 10.
ii) Yes, I am running Installshield when logged in to the server as admin: I have IS 2021 R1, running under Windows Server 2012 R2. I am running from the Installshield GUI (i.e. not within Visual studio).
iii) I cannot see any further dependencies. However, I do not know how to _prove_ that there are no others - do you have any ideas on how I might do that, please?
Thank you for your post.
i) You could try manually registering the dll with the 64-bit copy of regsvr32.exe in the C:\Windows\System32 folder instead of the 32-bit copy of regsvr32.exe in the C:\Windows\SysWOW64 folder.
iii) You could try using the free tool, Dependency Walker, to determine the dependencies. More information about Dependency Walker can be found online.
Please give these suggestions a try. Do they work for you?
Please let us know if you have any questions or concerns. Thanks!
You can also use:
regasm MyTest.dll /regfile:C:\Temp\MyTest.reg
This creates a reg file with the extracted registry info from the dll. Import this into the appropriate component. Take a look at the reg file, that everything is correct.