/build/static/layout/Breadcrumb_cap_w.png

building MSI package CABs

I am provided with few cab files that need to be deployed on a client machine.

I've been asked to make an MSI package that will install these files.

I am using Visual Studio to build the MSI install.

How do I build the MSI package so that the CABs are installed during the installation process?

Or do I need to extract the ActiveX controls from the CAB and add them into the MSI install?


Thank you
Al

0 Comments   [ + ] Show comments

Answers (38)

Answer Summary:
Posted by: anonymous_9363 16 years ago
Red Belt
2
Answering today's other CAB question, I came across this http://msdn.microsoft.com/en-us/library/aa751974(VS.85).aspx which may be of interest. Note that the method outlined therein doesn't give you an MSI package, though.
Posted by: anonymous_9363 16 years ago
Red Belt
2
ORIGINAL: aleks1429
i can see it via command line in C:\WINDOWS\Downloaded Program Files, but I can't view it from Windows Explorer.

Does anyone know why this is happening?
Yes. It's MS's way of nannying users. Why would you want to see one of its precious files? If you look at the folder icon for 'Downloaded Program Files' you'll see it has a (possibly very faint) Internet Explorer icon. This indicates that it's yet another of Windows' "special" folders. However, MS being MS, they could evidently not be bothered to cloak the folder and its content from a command-propmt view so, if you want to reassure yourself that your file made it, just start an instance of CMD.EXE, CD to "%SystemRoot%\Downloaded Program Files" and do a DIR.
Posted by: AngelD 16 years ago
Red Belt
1
Technology, eh?

Sounds out of my leage [:D]
Posted by: AngelD 16 years ago
Red Belt
1
The ActiveX control must show up in the C:\Windows\Downloaded Program Files
You know that you don't have to install the ActiveX component under this location as you can put it where ever you like.
It's when it's installed through a web browser the files will be downloaded to this location and then registered/installed through the .inf file.

must show up in the IE, under Internet Options>Programs>Manage Add-ons
It will if you do everything correct.
Posted by: AngelD 16 years ago
Red Belt
1
Have a look at: RunDLL32 and INF Files http://www.dx21.com/SCRIPTING/RUNDLL32/INF.ASP
Posted by: anonymous_9363 16 years ago
Red Belt
0
You *could* just drop the CABs on to the workstation but if they contain ActiveX controls, how are they then going to get installed? They need to be copied to the correct destination (presumably '%SystemRoot%\Downloaded Program Files') and registered.

My advice would be to build a proper installer which immediately discounts VS, as you'll need to extract the COM information from the controls (in order to have the installer register that information) which, from what I recall, is a somewhat painful exercise in VS. The two main tools (Wise and InstallShield) provide tools to do that.
Posted by: aleks1429 16 years ago
Orange Belt
0
I am really impressed by your responses, thank you very much. I did come across that article you mentioned on MS site, it doesn't not give me an MSI package, which is required.

I am taking your suggestion and looking at InstallShield and WISE as alternatives. Do you know which one performs this best and with ease?

Thanks
Al
Posted by: turbokitty 16 years ago
6th Degree Black Belt
0
That's a loaded question. Everyone has their favorite but the features are pretty much the same.

If you found VBScab's post helpful, rate it please! [:)]
Posted by: aleks1429 16 years ago
Orange Belt
0
I downloaded an InstallShield Trial Version to play with. I am building an ActiveX control msi package, is there an article or tutorial i can use to create this installation package in InstallShield?

Thanks
Posted by: turbokitty 16 years ago
6th Degree Black Belt
0
Just build the MSI project by hand in Installshield and the COM information will be extracted and populated to the registry tables at build time.

New > Basic MSI Project

A Wizard will load that steps through everything for you.
Posted by: aleks1429 16 years ago
Orange Belt
0
Would i use the INF file or just the DLL?
Posted by: aleks1429 16 years ago
Orange Belt
0
I've built the MSI package with my ActiveX control, when I run the MSI package, it installs the DLL and i can see it via command line
in C:\WINDOWS\Downloaded Program Files, but I can't view it from Windows Explorer.

Does anyone know why this is happening?

Thanks
Al
Posted by: turbokitty 16 years ago
6th Degree Black Belt
0
Did you install the file as hidden or something? That's bizarre.
Posted by: aleks1429 16 years ago
Orange Belt
0
I didn't touch any of the DLL options......any ideas?
Posted by: turbokitty 16 years ago
6th Degree Black Belt
0
Check the properties of the installed file. There's nothing that Installshield could do it to make it invisible to Windows Explorer besides hide it.
Are you testing this on a clean machine?
Posted by: turbokitty 16 years ago
6th Degree Black Belt
0
Do you know for certain where these files should be placed? Who authored this ActiveX control? Is there already an installer for it and you're trying to make an MSI out of it?
Posted by: AngelD 16 years ago
Posted by: anonymous_9363 16 years ago
Red Belt
0
Yes, I saw that. I'm having intermittent problems with a Firefox add-in called Reload which , er, doesn't. Consequently, I wasn't looking at an up-to-date view of the forum entries. Technology, eh?
Posted by: aleks1429 16 years ago
Orange Belt
0
This client has a testing team that thoroughly tests each client active x control to see what version is installed.

Initially, the ActiveX control was packaged in CAB file and pulled down from a specific site, but after some client security tightening, they decided to push this out with domain script as MSI package to all client machines.

The requirement is to build an MSI, I extracted the required files from the CAB and dropped them into an Install Shield project.

The ActiveX control must show up in the C:\Windows\Downloaded Program Files and must show up in the IE, under Internet Options>Programs>Manage Add-ons so that testers can validate the correct version of ActiveX control on the system. This is really driven by the client! Client is using IE 6, I am using a clean machine. Since I am installing with Windows Installer, I use the Uninstall function every time, my assumption is that it is a clean uninstall.
The suggested solution by AngelD (http://itninja.com/question/activex-msi-install-not-showing-up-in-the-c:\windows\downloaded-program-files, can not be used because it hashes out other controls that are in the C:\WINDOWS\Downloaded Program Files folder. And the Controls are not showing pu

Can anyone help me with this packaging issue?
Thanks,Al
Posted by: anonymous_9363 16 years ago
Red Belt
0
ORIGINAL: aleks1429
This client has a testing team that thoroughly tests each client active x control to see what version is installed.
<snip>
This is really driven by the client!
<snip>
Can anyone help me with this packaging issue?
What issue? That the client doesn't understand how Windows works and that it WILL obscure certain folders from view? It's a simple education exercise, there is nothing wrong.

Their "testing team" ought to be using proper tools for testing installed versions of files and not the simplistic "can I see the file and get its properties in Explorer" approach. Jeez...
Posted by: AngelD 16 years ago
Red Belt
0
If I recall correct the version will be checked using one of the registry entries:
HKLM\SOFTWARE\Microsoft\Code Store Database\Distribution Units\<GUID>\DownloadInformation\INF (REG_SZ)
HKLM\SOFTWARE\Microsoft\Code Store Database\Distribution Units\<GUID>\InstalledVersion\(Default) (REG_SZ)
Posted by: aleks1429 16 years ago
Orange Belt
0
Guys,

So, do I need to add Registry entries into the MSI project?

HKLM\SOFTWARE\Microsoft\Code Store Database\Distribution Units\<GUID>\DownloadInformation\INF (REG_SZ)
HKLM\SOFTWARE\Microsoft\Code Store Database\Distribution Units\<GUID>\InstalledVersion\(Default) (REG_SZ)

Do I need to add an entry like this for every ActiveX control? Will that take care of this issue?

Many thanks,
Alex
Posted by: AngelD 16 years ago
Red Belt
0
Was a long time since I handled a ActiveX component if I recall once again it will be added while the AX component is installed through a web site.
Posted by: aleks1429 16 years ago
Orange Belt
0
The client machines are lockdown so that no downloads can be preformed from the Internet. That is why they are pushing this out internally, otherwise, a CAB file with INF file would have worked perfectly resolving the issues I am having.

I guess, I am trying to do the same thing that CAB file is doing with INF. Need more help on this from someone who installed with INF file
Posted by: aleks1429 16 years ago
Orange Belt
0
when it's installed through a web browser the files will be downloaded to this location and then registered/installed through the .inf file.

I am aware of that, this is all client driven :)

Can I install the DLLs and INF file through the MSI and make it look like it was a CAB?


Thanks
Posted by: aleks1429 16 years ago
Orange Belt
0
When I run rundll32.exe i get Missing entry: InstallHinfSection.

I setup the command line correctly, not sure why it is complaining...any thought?
Posted by: AngelD 16 years ago
Red Belt
0
So what exact command line did you use?
Posted by: aleks1429 16 years ago
Orange Belt
0
rundll32.exe ActiveX.dll, InstallHinfSection, DefaultInstall, 132, "C:\Windows\Downloaded Program Files\ActiveX.INF"

I also tried

rundll32.exe ActiveX.dll, InstallHinfSection DefaultInstall 132 "C:\Windows\Downloaded Program Files\ActiveX.INF"
Posted by: AngelD 16 years ago
Red Belt
0
Try
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 "C:\Windows\Downloaded Program Files\ActiveX.INF"
or
RUNDLL32.EXE SETUPAPI.DLL,DefaultInstall 132 "C:\Windows\Downloaded Program Files\ActiveX.INF"
Posted by: aleks1429 16 years ago
Orange Belt
0
I get Installation Failed error message when I run

C:\WINDOWS\Downloaded Program Files>RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection
DefaultInstall 132 "C:\Windows\Downloaded Program Files\ActiveX.INF"

I get Error in SETUPAPI.DLL Missing entry: DefaultInstall

C:\WINDOWS\Downloaded Program Files>RUNDLL32.EXE SETUPAPI.DLL,DefaultInstall 132
"C:\Windows\Downloaded Program Files\ActiveX.INF"
Posted by: AngelD 16 years ago
Red Belt
0
So it there a [DefaultInstall] section in the .inf file?
Posted by: aleks1429 16 years ago
Orange Belt
0
No, here is the INF file

; Sample INF file for ActiveX.DLL
[version]
; version signature (same for both NT and Win95) do not remove
; what is the signature
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
ActiveX.dll=ActiveX.dll

[ActiveX.dll]
file-win32-x86=thiscab
clsid={09af4d5e-a7f2-4az8-a6df-a26b31880f55}
FileVersion=7,8,2,8
RegisterServer=yes
; end of INF file
Posted by: AngelD 16 years ago
Red Belt
0
Looks like this was taken directly from the web site.

Try adding
[DefaultInstall]
RegisterOCXs=Register.ActiveX

[Register.ActiveX]
"%10%\Downloaded Program Files\ActiveX.dll"
Posted by: aleks1429 16 years ago
Orange Belt
0
AngelD....

The following post with Distribution Units helped me get the AX control to show up. However, when i validate the control in IE. It says the object is Damaged....any ideas?

Thanks
Al
Posted by: AngelD 16 years ago
Red Belt
0
How did you "validate the control in IE"?
Can you give us the details of the error message you get.
Posted by: aleks1429 16 years ago
Orange Belt
0
Thanks for all of your help. I got it resolved, my install paths were not in the WindowsFolder\Downloaded Program Files.....

do you know of a way to surpress or bypass the dialog windows during install....making it a OneClick install (no windows and not command line)?

Thanks
Posted by: AngelD 16 years ago
Red Belt
0
do you know of a way to surpress or bypass the dialog windows during install
Prevent the dialogs from being executed by either add a false condition to them or remove them from the InstallUISequence table.
Posted by: aleks1429 16 years ago
Orange Belt
0
Thank you
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ