ActiveX internet component installation
Many webbased applications require the download and installation of DLLs and other
files. They are distributed in the same fashion as an ActiveX component namely as
CAB files. Inside the CAB file there are the required files and an .INF file. When using
IE possibly a warning message regarding unsigned CAB appears, and when pressing
the install button the files will be placed into directory "C:\windows\downloaded program files"
[Note: Don't try to take a look at it with Windows explorer, it hides all the good stuff. Use
a CMD shell and you see it all.], somehow things get registered and all is fine. Of course,
installation & registration only works with admin rights :-(
I would like to pre-install the software on all workstations and therefore need to know what
magic command the browser uses to install these CAB distributed files. Yes, I could make
before/after snapshots and alike, but I have more than 10 of these things to distribute.
My preference would be to use the real command line which does the magic.
On the internet I found things like
C:\WINDOWS\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 c:\windows\Downloaded Program Files\<package>.inf
or
C:\WINDOWS\System32\rundll32.exe c:\windows\Downloaded Program Files\<package>.inf
but they don't work. There is apparently a major difference between 'normal' .inf files and
those used for distributing internet components.
Anybody ever solved this?
Thanks
Frank
files. They are distributed in the same fashion as an ActiveX component namely as
CAB files. Inside the CAB file there are the required files and an .INF file. When using
IE possibly a warning message regarding unsigned CAB appears, and when pressing
the install button the files will be placed into directory "C:\windows\downloaded program files"
[Note: Don't try to take a look at it with Windows explorer, it hides all the good stuff. Use
a CMD shell and you see it all.], somehow things get registered and all is fine. Of course,
installation & registration only works with admin rights :-(
I would like to pre-install the software on all workstations and therefore need to know what
magic command the browser uses to install these CAB distributed files. Yes, I could make
before/after snapshots and alike, but I have more than 10 of these things to distribute.
My preference would be to use the real command line which does the magic.
On the internet I found things like
C:\WINDOWS\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 c:\windows\Downloaded Program Files\<package>.inf
or
C:\WINDOWS\System32\rundll32.exe c:\windows\Downloaded Program Files\<package>.inf
but they don't work. There is apparently a major difference between 'normal' .inf files and
those used for distributing internet components.
Anybody ever solved this?
Thanks
Frank
0 Comments
[ + ] Show comments
Answers (6)
Please log in to answer
Posted by:
plangton
18 years ago
Posted by:
fschnell
18 years ago
Here is teh content of teh .inf file, the second file is the sqs1.dll.
Registeruing the .dll did not solve it. Next visit IE will still try to install.
Frank
==
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
sqs1.dll=sqs1.dll
msvcrt.dll=msvcrt.dll
mfc42.dll=mfc42.dll
olepro32.dll=olepro32.dll
[sqs1.dll]
file-win32-x86=thiscab
clsid={57DA6C39-02DA-40C6-A225-7A2EB63043C2}
FileVersion=1,0,0,0
RegisterServer=yes
[msvcrt.dll]
FileVersion=4,20,0,6164
hook=mfc42installer
[mfc42.dll]
FileVersion=4,2,0,6256
hook=mfc42installer
[olepro32.dll]
FileVersion=4,2,0,6068
hook=mfc42installer
[mfc42installer]
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab
run=%EXTRACT_DIR%\mfc42.exe
Registeruing the .dll did not solve it. Next visit IE will still try to install.
Frank
==
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
sqs1.dll=sqs1.dll
msvcrt.dll=msvcrt.dll
mfc42.dll=mfc42.dll
olepro32.dll=olepro32.dll
[sqs1.dll]
file-win32-x86=thiscab
clsid={57DA6C39-02DA-40C6-A225-7A2EB63043C2}
FileVersion=1,0,0,0
RegisterServer=yes
[msvcrt.dll]
FileVersion=4,20,0,6164
hook=mfc42installer
[mfc42.dll]
FileVersion=4,2,0,6256
hook=mfc42installer
[olepro32.dll]
FileVersion=4,2,0,6068
hook=mfc42installer
[mfc42installer]
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab
run=%EXTRACT_DIR%\mfc42.exe
Posted by:
plangton
18 years ago
Hi,
Well theres lots to learn about how ActiveX controls get installed from this. Microsoft has a site describing how to build these INF files and ActiveX downloads:
http://msdn.microsoft.com/workshop/components/activex/packaging.asp
And this site has an overview of the entire component architecture:
http://msdn.microsoft.com/workshop/delivery/download/overview/entry.asp
Lots to read ... but anyway
If you want to cheat, try this link:
http://www.myitforum.com/articles/1/view.asp?id=3270
It says:
An ActiveX component is usually packaged as a .CAB file. To prepare for distribution, you should first extract the contents of the .CAB file to your distribution point. This usually consists of one .INF file and one or more .DLL files.
On Windows NT and 2000 these files first need to be copied to the client’s 'WINNT\Downloaded Program Files' directory. Then you can use your preferred software packaging program to execute the .INF file from the command line using Rundll32.EXE.
Note: Rundll32.EXE can also be used to install Windows optional components from the command line.
Details on the optional command line switches used with Rundll32.EXE can be found in Microsoft’s Internet Explorer 6 Resource Kit documentation, Chapter 17 – Working With .INF Files.
For a simple install that doesn’t require a reboot, the syntax is simply:
%SYS32%\Rundll32.EXE %WIN%\Downloaded Program Files\Component.INF
Sounds pretty easy to me :) Let us know if it works.
Rgds
Paul
Well theres lots to learn about how ActiveX controls get installed from this. Microsoft has a site describing how to build these INF files and ActiveX downloads:
http://msdn.microsoft.com/workshop/components/activex/packaging.asp
And this site has an overview of the entire component architecture:
http://msdn.microsoft.com/workshop/delivery/download/overview/entry.asp
Lots to read ... but anyway
If you want to cheat, try this link:
http://www.myitforum.com/articles/1/view.asp?id=3270
It says:
An ActiveX component is usually packaged as a .CAB file. To prepare for distribution, you should first extract the contents of the .CAB file to your distribution point. This usually consists of one .INF file and one or more .DLL files.
On Windows NT and 2000 these files first need to be copied to the client’s 'WINNT\Downloaded Program Files' directory. Then you can use your preferred software packaging program to execute the .INF file from the command line using Rundll32.EXE.
Note: Rundll32.EXE can also be used to install Windows optional components from the command line.
Details on the optional command line switches used with Rundll32.EXE can be found in Microsoft’s Internet Explorer 6 Resource Kit documentation, Chapter 17 – Working With .INF Files.
For a simple install that doesn’t require a reboot, the syntax is simply:
%SYS32%\Rundll32.EXE %WIN%\Downloaded Program Files\Component.INF
Sounds pretty easy to me :) Let us know if it works.
Rgds
Paul
Posted by:
fschnell
18 years ago
Thanks for the links Paul, and the rundll command line.
But as said in the original post (and I retried just now)
it just does not work. After executing that line IE still
wants to download and install the package.
The files are stored in "Downloaded Programfiles" but after
executing the rundll32 command line the required registry
keys are not there.
FRank
But as said in the original post (and I retried just now)
it just does not work. After executing that line IE still
wants to download and install the package.
The files are stored in "Downloaded Programfiles" but after
executing the rundll32 command line the required registry
keys are not there.
FRank
Posted by:
plangton
18 years ago
Hi fschnell,
Hmmm yeah sorry you already found that - perhaps its not possible... the only thing I can suggest is trying setupx.dll instead of setupapi as per:
http://www.microsoft.com/technet/prodtechnol/ie/reskit/6/part4/c17ie6rk.mspx?mfr=true
So the EXACT command line I would run would be:
C:\WINDOWS\System32\rundll32.exe setupx.dll,InstallHinfSection DefaultInstall 132 "c:\windows\Downloaded Program Files\<package>.inf"
Don't forget those "" around the long file name. If this doesn't work, I don't spose you could give me a copy of the active X control to play around with, or is it not public domain?
Rgds
Paul
Hmmm yeah sorry you already found that - perhaps its not possible... the only thing I can suggest is trying setupx.dll instead of setupapi as per:
http://www.microsoft.com/technet/prodtechnol/ie/reskit/6/part4/c17ie6rk.mspx?mfr=true
So the EXACT command line I would run would be:
C:\WINDOWS\System32\rundll32.exe setupx.dll,InstallHinfSection DefaultInstall 132 "c:\windows\Downloaded Program Files\<package>.inf"
Don't forget those "" around the long file name. If this doesn't work, I don't spose you could give me a copy of the active X control to play around with, or is it not public domain?
Rgds
Paul
Posted by:
islander222
18 years ago
Hi Frank,
All I can say really, is that we have done a high volume of 'ActiveX' components here and what we do is add the dll/ocx/exe's (whatevers in the CAB) to the MSI via the component wizard - making sure they are registered. They don't neccessarily need to go the 'Downloaded program files'.
Once they are regsitered correctly from whatever location you wish - then you do not need the .inf at all.
As I said we have done a few and have had no problems with this technique.
Hope this helps,
Aidy.
All I can say really, is that we have done a high volume of 'ActiveX' components here and what we do is add the dll/ocx/exe's (whatevers in the CAB) to the MSI via the component wizard - making sure they are registered. They don't neccessarily need to go the 'Downloaded program files'.
Once they are regsitered correctly from whatever location you wish - then you do not need the .inf at all.
As I said we have done a few and have had no problems with this technique.
Hope this helps,
Aidy.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.