473,789 Members | 2,732 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

About SelfReg table for registering dlls

Hi

I just made an installer for an application that uses two external COM dlls.
On the surface, everything seems to be running smoothly and the the
application runs without any errors. However, I am not completely satisfied
by my implementation.

I basically used a software that generates an msi file quite easily and
included the two dlls in my package. I then edited the msi file using orca,
and forced the dlls to self register by stating their FileName key in the
column of the SelfReg table. Nothing wrong there...
Now here is my concern:

The SelfReg table makes a unique registry entry in the HKCR logical section,
by overwriting the already existing key. That's still acceptable but the
problem is that on uninstalling the application, the installer also
unregisters these two dlls, which is undesirable as they might be needed by
other applications which now must register the dlls again.

Ideally, shouldn't the installer make a new key in the HKCU section, which
does not effect the previously existing registry entry? I don't know how it
could be done but if somehow the installer could generate a separate key for
the copy of dlls being used by my application, then on unregistering them,
the other applications wouldn't get affected (or so I'm guessing).

I would appreciate if anybody could suggest a better way to do this.

Thanks!
Nov 17 '05 #1
2 4237
Shiraz,

If this DLL is shared, then your installer should be able to pick up
that the component is installed and not install in the first place. This
should keep the installer from not uninstalling the original component.

Also, you shouldn't have to modify the install tables yourself. I
remember that Visual Installer 1.1 allowed you to specify the
install/uninstall properties of a COM dll. I can't imagine that's been
removed. You should be able to set a flag indicating that the component
should not be uninstalled.

Also, it should be installed in the Common Files directory, assuming it
is shared.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

"Shiraz" <Sh****@discuss ions.microsoft. com> wrote in message
news:97******** *************** ***********@mic rosoft.com...
Hi

I just made an installer for an application that uses two external COM
dlls.
On the surface, everything seems to be running smoothly and the the
application runs without any errors. However, I am not completely
satisfied
by my implementation.

I basically used a software that generates an msi file quite easily and
included the two dlls in my package. I then edited the msi file using
orca,
and forced the dlls to self register by stating their FileName key in the
column of the SelfReg table. Nothing wrong there...
Now here is my concern:

The SelfReg table makes a unique registry entry in the HKCR logical
section,
by overwriting the already existing key. That's still acceptable but the
problem is that on uninstalling the application, the installer also
unregisters these two dlls, which is undesirable as they might be needed
by
other applications which now must register the dlls again.

Ideally, shouldn't the installer make a new key in the HKCU section, which
does not effect the previously existing registry entry? I don't know how
it
could be done but if somehow the installer could generate a separate key
for
the copy of dlls being used by my application, then on unregistering them,
the other applications wouldn't get affected (or so I'm guessing).

I would appreciate if anybody could suggest a better way to do this.

Thanks!

Nov 17 '05 #2
Nicholas

I think I somewhat understand the problem now. Firts of all, I used the
software Installer2Go for making my msi file instead of the Visual Installer
1.1, so I don't have the same kind of options as in VSI.

Secondly, I did put my dlls in the Common Files folder as you suggested and
found out that whoever had made the previous installer had done so likewise,
but the main problem I believe is with using the SelfReg table. The other
installer has a bunch of dlls all listed under this table. What SelfReg seems
to be doing is overwriting any exisiting registry entries in the Global cache
with these new ones and when the application is unregistered, it deletes the
GUIDs for the dlls. This I think causes a lot of problem; for instance, if
application1 is installed and then application2, or the other way around,
things will definitely keep running. But the moment either one of these
application are uninstalled, no application using the shared dlls of these
two applications will work, making it necessary to re-install the application
being used currently, which of course is just a very bad fix...

So what I need to do is to not make the same mistake again of using SelfReg
and somehow register my dlls and on uninstallation, keep them in the registry
if they're being shared. And I can do this only using Orca, so I have to
figure out a way to use the tables for this : |

Any suggestions?

Anyhow, if there's anyone who might know a better way to proceed or if what
I said wasn't totally correct, I'd be glad to hear your ideas.

Thanks a lot

Shiraz

"Nicholas Paldino [.NET/C# MVP]" wrote:
Shiraz,

If this DLL is shared, then your installer should be able to pick up
that the component is installed and not install in the first place. This
should keep the installer from not uninstalling the original component.

Also, you shouldn't have to modify the install tables yourself. I
remember that Visual Installer 1.1 allowed you to specify the
install/uninstall properties of a COM dll. I can't imagine that's been
removed. You should be able to set a flag indicating that the component
should not be uninstalled.

Also, it should be installed in the Common Files directory, assuming it
is shared.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

"Shiraz" <Sh****@discuss ions.microsoft. com> wrote in message
news:97******** *************** ***********@mic rosoft.com...
Hi

I just made an installer for an application that uses two external COM
dlls.
On the surface, everything seems to be running smoothly and the the
application runs without any errors. However, I am not completely
satisfied
by my implementation.

I basically used a software that generates an msi file quite easily and
included the two dlls in my package. I then edited the msi file using
orca,
and forced the dlls to self register by stating their FileName key in the
column of the SelfReg table. Nothing wrong there...
Now here is my concern:

The SelfReg table makes a unique registry entry in the HKCR logical
section,
by overwriting the already existing key. That's still acceptable but the
problem is that on uninstalling the application, the installer also
unregisters these two dlls, which is undesirable as they might be needed
by
other applications which now must register the dlls again.

Ideally, shouldn't the installer make a new key in the HKCU section, which
does not effect the previously existing registry entry? I don't know how
it
could be done but if somehow the installer could generate a separate key
for
the copy of dlls being used by my application, then on unregistering them,
the other applications wouldn't get affected (or so I'm guessing).

I would appreciate if anybody could suggest a better way to do this.

Thanks!


Nov 17 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

16
1848
by: Catherine Jones | last post by:
I need to register a Vb DLL under restricted acess privilages please provide me a solution Regards and thanks
1
1618
by: Kelly G. | last post by:
I need to register a Vb DLL under restricted acess privilages please provide me a solution. Here is the complete issue: I building a MSI using Vs.net ,One of the Dll's is Vb Component ( A shim component basically) , Our application has to install both with Administrative privialges and restricted user privilages . The actual problem is that of registering this dll ,Since it tries to register under Hkey_local_machine ,But under...
6
4138
by: ian | last post by:
Hi All I have a DLL (nahd.dll) that has been supplied to me will a PBX phone system. According to the documentation it is to allow developers to write there own applications to monitor the system. Now when I try to register this DLL I get an error. “DLL RegisterServer entry point not found” According to Microsoft this means it is not a DLL. I can view it using Dependency Walker and it has all the events mentioned in the...
0
2753
by: Shiraz | last post by:
Hi I have a question regarding the functionality of merge modules. Since this relates to my previous queries, I'll just give you a brief background on the topic. I had to make an installer for an application which was to share dlls with another application and these dlls were not self-registering. Someone on the forum suggested a few methods for the Visual studio installer, but since I had been using another software, a certain...
2
3565
by: fig000 | last post by:
Hi everyone, I recently wrote a vb.net app which includes some crystal reports. The user has very little money in their budget and have been without a working application for quite a while. This being the case I worked with what was available: I used vb.net and crystal 8.5. The crystal reports are being viewed in the crystal report viewer which is still included in vb.net. I went ahead with developing this project because I found that...
1
2147
by: Chris Petchey | last post by:
I have a VB.NET application which installs/updates other applications. Some of these other applications are VB6. Part of the processing includes registering the OCXs and DLLs and I use the DLLSelfRegister function from the vb6stkit.dll As a VB.NET desktop utility this worked well. However,I have made the application into a service (customer's requirement) running in an administrators account. Now DLLSelfRegister fails to register the...
0
212
by: Mark | last post by:
Hi, I have some components which I have purchased and I do have a distribution license. I use the dlls in my application by simply registering them via Visual Studio.NET and therefore they are contained in the folder where the application is installed. My question is what stops people from simply grabbing these dlls from the install folder and then referencing them in their own projects? I want to protect the people who I purchased...
3
2719
by: gopal | last post by:
I am developing an application in CSharp - windows forms based, which copies the DLLs both unmanaged and managed DLLs from a shared folder and will overwrite the existing versions of managed & unmanaged DLLs into folder where some .NET application and a VB application has been installed. To be more clear, i will make some chnages to DLLs and using this tool(developed in CSharp) i will overwrite the existing version of DLLs - unmanaged...
9
2465
by: Sundar | last post by:
Hi, i am trying to make an application that will require registering of quite a few dlls and execute. Now one of the first bottlenecks that my mentor refused is allocation of memory or the usage of mallocs in the dlls. He tells me that for an application to run perfectly , there must be no dynamic memory in the libraries.. I am not quite impressed.. Can anyone clear out this mess please?
0
9666
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, well explore What is ONU, What Is Router, ONU & Routers main usage, and What is the difference between ONU and Router. Lets take a closer look ! Part I. Meaning of...
0
10410
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10200
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9020
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development projectplanning, coding, testing, and deploymentwithout human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5418
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5551
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4093
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3701
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2909
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.