I'm repackaging MSDN98 for VB6. I've come across a DLL which refuses to self-register and causes silent installation to fail. Therefore I removed the offending DLL from the Selfreg table which allows for a successful installation.

Which leads me to the question: how do I register the DLL manually? I can't do <DLL> /regserver, but regsvr32 <DLL> works. How do I translate the latter to a customaction? I tried a type 34 pointing the source to system32 and the target regsvr32.exe <DLL>, but installation just froze upon executing the CA.

Thanks
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
Personally I'd snapshot the manual registration and add the resulting reg info to your package - that way you get a clean uninstall. Have a look at WiseComCapture to make this even easier...

Selfreg is generally regarded as bad practice [X(]

Cheers,
Rob.
Answered 09/16/2005 by: MSIPackager
Third Degree Black Belt

Please log in to comment
0
Hi Meas:

You could run write a Wise Script that shall register the dll, just call the Execute Program in Wise Script Editor and then register the same and then call this compile wise script in your MSI.
In case you require more help do let me know.
Answered 09/16/2005 by: wiseapp
Second Degree Green Belt

Please log in to comment
0
Should have mentioned that I'm not using Wise. Am just using Wininstall LE 2k and Orca.

I'll try the suggested capture of registration, but haven't always had success with this in the past.
Answered 09/16/2005 by: meastaugh1
Senior Purple Belt

Please log in to comment
2
Hi Meas:

In that case you could probably write a vbscript that shall do the task and then include it within your package, A sample VBScript is enclosed here in:

On Error Resume Next
'Setting tool and paths
strComputer = "."
Set ObjRegistry = GetObject("winmgmts:{impersonationLevel = impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strRegsvr = "regsvr32.exe"
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run(strRegsvr& " C:\vmmreg32.dll")'the name of the dll can be changed here. Please keep a space between the quote and the path of the dll.

I hope this would definitely help.
Answered 09/16/2005 by: wiseapp
Second Degree Green Belt

Please log in to comment
0
Yeah that would do it if you want to use a script but note that if the path to the DLL has spaces (e.g. C:\Program Files\Etc\Etc) then the last line should read:

WshShell.Run(strRegsvr& """ C:\Program Files\Etc\Etc\vmmreg32.dll""")

You need to quote your quotes [:D]


Cheers,
Rob.
Answered 09/16/2005 by: MSIPackager
Third Degree Black Belt

Please log in to comment
0
Hi Rob:

Forgot to write the same[:'(] thanks for reminding[:)]
Answered 09/17/2005 by: wiseapp
Second Degree Green Belt

Please log in to comment
0
No problem Bhupesh - you did all the hard work [;)]

Cheers,
Rob.
Answered 09/17/2005 by: MSIPackager
Third Degree Black Belt

Please log in to comment
0
Ahh, so it needs triple quotes? I tried adding another set of quotes when it was trying to locate C:\Program but that threw up another error. I'll try with the three quotes.

Thanks all for your help. I'll give it another go.
Answered 09/18/2005 by: meastaugh1
Senior Purple Belt

Please log in to comment
0
Hi Rob:

That was'nt[;)] hard at all,lol[;)] anyways thanks for the votes (I hope that was from your side?)
Answered 09/18/2005 by: wiseapp
Second Degree Green Belt

Please log in to comment
Answer this question or Comment on this question for clarity