I want to make a DLL, so I go to "New Project" and select "ActiveX DLL." I can make the functions and compile it, however, am I missing something? Under the Project Properties "Compile" Tab, I see a DLL Base Address with a value of &H11000000. Is this something I need to change or what? Anything else in the Project Properties that I need to worry about?

Now I open my project which uses this DLL, so I include my DLL in my references and use it as I should. Any settings I should be aware of? When I run my setup on another person's machine, do I need to register it? I'm going to put it in the program's folder and there's no reason any other program will use it. So will my project find it because it's in the same folder, or will I need to register it anyway?



Now here's the thick of it -- I want my program to update itself with the newest version of the DLL which will be out on an FTP site. How to do this? My thought is this, but I want to see if it's the best way or not...

Program detects it needs to update the DLL. Since it uses the DLL, it can't replace the DLL file because it is in use by itself. So it kicks off a seperate program called Update.exe and then closes itself. Update.exe goes out and gets the new DLL. Now am I fine just copying over the current one? Or do I need to call the regsrv32 to unregister the current one (in silent mode with /u /s), then copy over the new one, and then register the new one?

My issue with this, is what if the user doesn't have regsvr32? And even if it's guaranteed (don't know if it can be) that may not be the case for later Windows version, right? Or can I get by without registering my DLL at all like I asked above? In any event, the Update.exe then kicks off the main program, which is happy now, and the Update.exe closes itself.

So where am I right? Where am I wrong? Where can I get improvement and direction? Thanks!