Distributing .NET Merge Modules with ActiveX Control

15 views
Skip to first unread message

Gregory Hassett

unread,
Nov 5, 2002, 9:22:48 AM11/5/02
to
Hello,

I have written an ActiveX control which I am distributing
using Internet Component Download -- that is, I've made a
CAB file that contains an INF file along with my OCX.

The OCX calls web services across .NET using SOAP etc.,
which means that the MSXML*.DLL files must be installed
on the target machine, along with some other
dependencies. Microsoft provides merge modules
MSXML3.MSM, SOAP_CORE.MSM, etc.

Can anyone tell me how to package these files so that
they get downloaded along with the ActiveX control (if
necessary)? Specifically, I think there must be some
standard "language" that must appear inside INF files
that accompany OCX's that use .NET, but I cannot find
that information through the usual channels.

Thanks for your help!

Gregory Hassett, MSDN Universal Subscriber

Bobby Mattappally [MS]

unread,
Nov 5, 2002, 5:29:08 PM11/5/02
to
Gregory,
I may not have understood your question fully.
But have you tried using the Deployment project is VS.Net?

Please refer to the following MSDN docs:

Creating or Adding Deployment Projects
http://msdn.microsoft.com/library/en-us/vsintro7/html/vbconCreatingOrAddingD
eploymentProjects.asp

Deploying Applications
http://msdn.microsoft.com/library/en-us/vsintro7/html/vbconDeployingSolution
asp

Hope this helps.

Thank you,
Bobby Mattappally
Microsoft VC++/C# Team

This posting is provided "AS IS" with no warranties, and confers no rights.


--------------------
>Content-Class: urn:content-classes:message
>From: "Gregory Hassett" <ghas...@nospam.com>

Gregory Hassett

unread,
Nov 6, 2002, 4:11:06 AM11/6/02
to
Of course, I forgot to include the sample INF file that I referenced in my
previous reply :-)

Here it is -- now, how do I add the DLL's required for SOAP/.NET calls?

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

[Add.Code]
agsknman.ocx=agsknman.ocx
mfc70.dll=mfc70.dll
msvcr70.dll=msvcr70.dll
msvcp70.dll=msvcp70.dll

[agsknman.ocx]
file-win32-x86=thiscab
FileVersion=1,0,0,17
RegisterServer=yes

; needed DLL
[mfc70.dll]
file-win32-x86=thiscab
FileVersion=7,0,0,9466
DestDir=11
RegisterServer=no

; needed DLL
[msvcr70.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,0,9466
RegisterServer=no

; needed DLL
[msvcp70.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,0,9466
RegisterServer=no

; end of INF file
"Bobby Mattappally [MS]" <bob...@online.microsoft.com> wrote in message
news:36BcTqRhCHA.1032@cpmsftngxa08...

Gregory Hassett

unread,
Nov 6, 2002, 4:09:14 AM11/6/02
to
Thanks -- I know how to use deployment projects within Visual Studio for
generating "Cab" deployment projects. My question goes deeper, which is how
to format the INF file, which is contained inside the CAB file for an
ActiveX control, to install Merge Modules when the ActiveX control is
downloaded by the browser. Take the following INF file, for example, and
you can see how it describes how to locate and place required DLL's such as
MFC 7.0. My question is, what syntax do I use inside the INF file to direct
the browser (specifically, the Internet Component Download facility within
the browser) to read and process MSM's like SOAP_CORE.MSM and place files in
their required directories?

If MSM's cannot be referenced inside INF files, what is the preferred way to
ensure that the required Microsoft redistributable components for .NET
(e.g., SOAP_CORE, MSXML3) are distributed as part of an ActiveX control that
is to be automatically installed by the browser?

-- Greg


"Bobby Mattappally [MS]" <bob...@online.microsoft.com> wrote in message
news:36BcTqRhCHA.1032@cpmsftngxa08...

Ruidong Li [MS]

unread,
Nov 6, 2002, 4:33:52 PM11/6/02
to
You could not reference merge modules inside of an INF file. Merge modules
are Windows Installer installation components and they can only be included
in a Windows Installer package (i.e. an .msi file). An alternate method is
to create an msi package that include your activeX control along with all
the merge modules that you need using .net deployment project (or any third
party Windows Installer author tool of your choice). Then you could use
Internet download bootstrapper to deploy your msi package through web
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/
internet_download_bootstrapping.asp).

Thanks!
Ruidong [MS]

This posting is provided "AS IS" with no warranties, and confers no rights.

You assume all risk for your use. © 2001 Microsoft Corporation. All rights
reserved.
--------------------
>>From: "Gregory Hassett" <ghas...@nospam.com>
>>References: <59f701c284d6$d0e26180$37ef2ecf@TKMSFTNGXA13>
<36BcTqRhCHA.1032@cpmsftngxa08>
>>Subject: Re: Distributing .NET Merge Modules with ActiveX Control
>>Date: Wed, 6 Nov 2002 10:09:14 +0100
>>Lines: 78
>>X-Priority: 3
>>X-MSMail-Priority: Normal
>>X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
>>X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
>>Message-ID: <#PSShQXhCHA.1148@tkmsftngp11>
>>Newsgroups: microsoft.public.dotnet.languages.vc
>>NNTP-Posting-Host: 217.128.222.112
>>Path: cpmsftngxa09!cpmsftngxa08!tkmsftngp01!tkmsftngp11
>>Xref: cpmsftngxa09 microsoft.public.dotnet.languages.vc:16747
>>X-Tomcat-NG: microsoft.public.dotnet.languages.vc

Bobby Mattappally [MS]

unread,
Nov 6, 2002, 4:35:21 PM11/6/02
to
I am goting to get an windows Installer specialist to look into this issue.

Thank you,
Bobby Mattappally
Microsoft VC++/C# Team

This posting is provided "AS IS" with no warranties, and confers no rights.


--------------------
>From: "Gregory Hassett" <ghas...@nospam.com>

Gregory Hassett

unread,
Nov 6, 2002, 5:50:19 PM11/6/02
to
Thanks; this is what I thought. Providing a web setup utitily with a
bootstrapper is not an option -- I want my users to come to a web page that
has an OBJECT tag with #CODEBASE and #VERSION parameters, and then have the
browser automatically download the control if required. Since Merge Modules
are not an option, I am looking for the official "Microsoft Recommended"
syntax for an INF file that has among its required DLL's all those DLL's
required to support SOAP.

This is what Microsoft needs to provide a developer who is writing an
ActiveX control that uses SOAP/.NET...

Back in the days when Microsoft was encouraging developers to use MFC 4.2 to
develop ActiveX controls, they provided documentation on how to correctly
code your INF file to automatically download and install the redistributable
MFC 4.2 DLL's if/when necessary. I am looking for the same type of INF
guidelines for the modern programmer who is writing an ActiveX control that
uses .NET to call Web Services.

Help!

Thanks,

Gregory Hassett

"Ruidong Li [MS]" <ruid...@online.microsoft.com> wrote in message
news:wuydGwdhCHA.1744@cpmsftngxa08...

Sean

unread,
Nov 8, 2002, 7:41:06 PM11/8/02
to
Hi Gregory,
What INF can do is to list all the file ( any files, including dll, ocx )
and also specifiy the fileversion, source, install destinations, and
whether they should be registered or not.
So INF file does not two things, install and/or register.
I can write a sample INF code for you but there is some problem for some
files which are only allowed to be redistributed by certain download
package, not through by wrapping them into your own .cab file.

Take your sample components as example:
======================================

[agsknman.ocx]
file-win32-x86=thiscab
FileVersion=1,0,0,17
RegisterServer=yes

=========================
if you ship more files with your cab, add them to
[Add.Code] and the install section one by one. If those files require
registeration, set RegisterService = yes.

Looks to me you already got this, I am very sure what exactly you want.
If you want to know how to write a .INF and create a .cab file, or anything
about download, I can help.
If you want to know which files you need to put into your .cab for soap/Web
services, Bobby can help.

Hope it helps.

Sean Shi

Gregory Hassett

unread,
Nov 14, 2002, 12:23:47 PM11/14/02
to
Thanks -- let me try to clarify.

Many ActiveX developers relied upon MFC. Their OCX's "depended" on the
proper MFC DLL's being present on the client machine. Microsoft recognized
this, and supplied ample documentation on how to code INF files so that the
appropriate versions of MFC are downloaded, if required.

Now, ActiveX developers are relying on the various DLL's to support web
services and .NET (e.g., SOAP, MSXML, etc). I see that Microsoft has
supplied Merge Modules which install these files when these merge modules
are incorporated into a standard "setup.exe" installation kit, but I am
looking for guidance from Microsoft on how to install the DLL's through an
INF file (which is how ActiveX controls are distributed).

The control is not distributed as a SETUP kit. It is distributed as an
ActiveX control (CAB file) that is referenced in an OBJECT tag in an HTML
page. Thus, it cannot take advantage of Merge Modules, and must rely on an
INF syntax to specify exactly which DLL's are required, what versions are
required, and where to find them if they're not already present on the
user's machine (exactly analagous to the old MFCxyx.DLL days).

Can you help?

Thanks

Greg

""Sean"" <sea...@microsoft.com> wrote in message
news:p8H4Ci4hCHA.1824@cpmsftngxa08...

Gregory Hassett

unread,
Nov 18, 2002, 6:16:54 AM11/18/02
to
Hi -- did the installation specialist have any solution to this problem? It
would also be useful to see my post in microsoft.public.xml (search for it
using my name, Gregory Hassett). Please advise!

Thanks

Greg


"Bobby Mattappally [MS]" <bob...@online.microsoft.com> wrote in message

news:BT9R7wdhCHA.1744@cpmsftngxa08...

bharat...@gmail.com

unread,
Dec 11, 2013, 1:23:52 PM12/11/13
to
Hi,
How did you address this problem? I am facing the same issue and could not find anything worthwhile on the web. Please let me know.

Regards
Bharath
Reply all
Reply to author
Forward
0 new messages