Author | Topic: Loadfromurl heavy traffic network before communication | |
---|---|---|
Nico Houben | Loadfromurl heavy traffic network before communication on Mon, 30 May 2005 20:32:02 +0200 Hello Everybody, My app uses the LoadFromURL when the application is started the firsttime there is a lot of traffic on my network before the request is done. The second time (without clossing the app) the request is done immediatly. The app is located on a networkdrive (novell/Samba/Win server all the same), if the app is started from a local drive there is no extra traffic the first time either. It looks like windows sends the whole app over the network ?! Any suggestions ? I was thinking about the windows cache but cann't find the right settings / or sollution. Kind regards, Nico Houben Car-Systems Heerlen | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Tue, 31 May 2005 10:20:04 +0100 Nico, > My app uses the LoadFromURL when the application is started the firsttime > there is a lot of traffic on my network before the request is done. > The second time (without clossing the app) the request is done immediatly. > > The app is located on a networkdrive (novell/Samba/Win server all the same), > if the app is started from a local drive there is no extra traffic the first > time either. > > It looks like windows sends the whole app over the network ?! I'm not quite sure what you mean here - LoadFromUrl() simply connects to the requested server, requests the resource and accepts the resource when the server downloads it. If the resource you download is very large, then of course you wil have to wait for it to arrive. The next time, the server may well respond with a "resource unchanged" code, in which case LoadFromUrl() will fish the resource from the cache avoiding the download altogether. Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** Do not think by infection, catching an opinion like a cold. | |
Sander Elias | Re: Loadfromurl heavy traffic network before communication on Tue, 31 May 2005 11:36:36 +0200 Hi Nico, >My app uses the LoadFromURL when the application is started the firsttime >there is a lot of traffic on my network before the request is done. >The second time (without clossing the app) the request is done immediatly. > >The app is located on a networkdrive (novell/Samba/Win server all the same), >if the app is started from a local drive there is no extra traffic the first >time either. > >It looks like windows sends the whole app over the network ?! the first time you use the loadurl function, it loads the needed DLL form your app directory. this is the network traffic you see. on later calls the needed DLL's are already loaded, so there is no additional traffic needed. my advice would be, install your app's on the workstations, not on the server. A medium size application, including the needed DLL can be around the 40-50Mb (exe's and DLL's) most off it will be read when you start the application, but as you have noticed, there are function that calls in extra, so adding to the network traffic. if you have a small network, this is not a big problem, but if you have more then, lets say 6, users you will notice that every boot of your program will cost you approximate 40-50 Mb network traffic. regards Sander Elias | |
Nico Houben | Re: Loadfromurl heavy traffic network before communication on Wed, 01 Jun 2005 07:57:52 +0200 Hi Sander, >>My app uses the LoadFromURL when the application is started the firsttime >>there is a lot of traffic on my network before the request is done. >>The second time (without clossing the app) the request is done immediatly. >> >>The app is located on a networkdrive (novell/Samba/Win server all the >>same), >>if the app is started from a local drive there is no extra traffic the >>first >>time either. >> >>It looks like windows sends the whole app over the network ?! > the first time you use the loadurl function, it loads the needed DLL > form your app directory. this is the network traffic you see. on later > calls the needed DLL's are already loaded, so there is no additional > traffic needed. > > my advice would be, install your app's on the workstations, not on the > server. A medium size application, including the needed DLL can be > around the 40-50Mb (exe's and DLL's) most off it will be read when you > start the application, but as you have noticed, there are function > that calls in extra, so adding to the network traffic. > if you have a small network, this is not a big problem, but if you > have more then, lets say 6, users you will notice that every boot of > your program will cost you approximate 40-50 Mb network traffic. Thanks for your reply first. That's what I thought of first but then I noticed that it depends on the Workstations/Server setting because the whole EXE is transported (66 MB) over the Network and not just a DLL. The od thing is that some networks (same server/workstations) does this and others don't. Kind regards, Nico Houben | |
Sander Elias | Re: Loadfromurl heavy traffic network before communication on Wed, 01 Jun 2005 08:58:30 +0200 Hi Nico, >Thanks for your reply first. You're welcome. >That's what I thought of first but then I noticed that it depends on the >Workstations/Server setting because the whole EXE is transported (66 MB) >over the Network and not just a DLL. The od thing is that some networks >(same server/workstations) does this and others don't. Are you sure it is the application itself that gets loaded? loading a bunch of DLL's may amount to the same account off network traffic. for the difference between workstation, there can be lot of reasons just to name a few: 1. more memory, so thing's don't "swap-out" 2. some off the DLL's local 3. another application has already loaded the DLL's 4. different rights on the network share. 5. different os's and this list can go on for quite a while. I saw you are from the Netherlands, If you would like you can meet me at one off the XXP (www.xxp.nl) meetings, and I can show you how to make an installer that does the workstation upgrade(s) automatically, so there is no problem in installing them local. This would solve your network-traffic issue! regards Sander Elias | |
Anand Gupta | Re: Loadfromurl heavy traffic network before communication on Thu, 02 Jun 2005 18:04:58 +0530 Sander Would love to know the way you auto-update your nodes. Anand "Sander Elias" <Sander@eso.nl> wrote in message news:2lmq91509l2fiuh0c2e8b6120k883raj98@4ax.com... > Hi Nico, <snip> > meetings, and I can show you how to make an installer that does the > workstation upgrade(s) automatically, so there is no problem in > installing them local. This would solve your network-traffic issue! | |
Sander Elias | Re: Loadfromurl heavy traffic network before communication on Thu, 02 Jun 2005 16:01:58 +0200 Andand, it is a bit to much to tell it in a newsgroup message. this is one off the things you can better show, then try to explain. nevertheless I will try. basically it is simple process. when you startup your program you compare the date-time stamp off your install program (created with innosetup or any other program like it) with the date-time stamp of the previous install (I keep that in the registry) if it is newer, I set a flag in the registry, store the date-time of the new setup, and start the setup with runshell(setup....) and the quit my app. next boot of your program you have to check if the flag is reset by the install program, if not, reinstall. (this protects form a aborted install) This is the process in a nutshell, if you want to know something more, just ask. if there is enough demand, I will see if I can create a sample of this. this works fine in networks for local installation. if you want it to function over the Internet, I have a tool that can do this for you also, just drop me a mail. regards Sander Elias | |
Anand Gupta | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 12:34:12 +0530 Thanks Sander for your input. I use something similar as well. Instead of keeping date-time stamp, I use a field in a Table to store the version number (major and minor both). Further after checking the version details, it looks for the Updater in a particular location (specified in the Table again)... I fire the updater program via RunShell and fire a QUIT for my application. The reason I asked was I just wanted to be aware of a better way to do the same. Thanks for writing-by Sander Anand "Sander Elias" <Sander@eso.nl> wrote in message news:h22u91tqtqu5rt8228l871iard249qdnn5@4ax.com... > Andand, > > it is a bit to much to tell it in a newsgroup message. this is one off > the things you can better show, then try to explain. > > nevertheless I will try. > basically it is simple process. when you startup your program you > compare the date-time stamp off your install program (created with > innosetup or any other program like it) with the date-time stamp of > the previous install (I keep that in the registry) > if it is newer, I set a flag in the registry, store the date-time of > the new setup, and start the setup with runshell(setup....) and the > quit my app. > next boot of your program you have to check if the flag is reset by > the install program, if not, reinstall. (this protects form a aborted > install) > > This is the process in a nutshell, > if you want to know something more, just ask. > > if there is enough demand, I will see if I can create a sample of > this. > > this works fine in networks for local installation. > if you want it to function over the Internet, I have a tool that can > do this for you also, just drop me a mail. > > regards > Sander Elias > | |
Sander Elias | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 10:14:29 +0200 Hi Anand, >I use something similar as well. Instead of keeping date-time stamp, I use a >field in a Table to store the version number (major and minor both). >Further after checking the version details, it looks for the Updater in a >particular location (specified in the Table again)... I use date-time because it is easy to compare the date-time stamp of the installer. the installer is also in fixed location. So when my program fires it just checks the date-time off the installer. Easy on my part, just drop a new installer in, and I'm ready. the rest goes automagicly >I fire the updater program via RunShell and fire a QUIT for my application. same here. >The reason I asked was I just wanted to be aware of a better way to do the >same. having a good installer is the most important thing here. >Thanks for writing-by Sander No thanks, you're welcome. Regards Sander Elias | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 11:01:02 +0100 Sander, Anand, I thought you might like to hear about my take on this problem. I've written a program which basically is a just a menu bar. It looks for DLL's in a certain directory, and loads them. Each (package) DLL contains some routines which identify it as a 'package' dll, and installs some menu items on the menu bar. Using this method, I can dynamically add new items and new menu's simply by dropping another dll in the appropriate directory. When the application boots, it calls LoadFromUrl() to download a server-generated shtml page, which contains a directory listing. Since this is dynamically created by Apache, I simply load any new dll's to the web server and they immediately become visible. The application compares the directory listing against files already installed, using the date-time stamps, and downloads any newer dll's to an 'install' directory. Next it generates a batch file, launches it and terminates. The batch file calls a small C application which waits for the previous application to vanish (you can use mutexes or monitor the status of the application window), allows a short pause to allow the application to fully shutdown, then copies the new files over the old ones (I also backup the old files), and finally re-launches the original application. By allowing for sub-directories one the web-server, I can also copy non-package dll's, and in this way I can even upgrade an application from 1.82 to 1.90 just by copying the relevant files to the web-server. Within 24 hrs, all my users are using the new version. This mechanism has been slowly developing over the last 6 months, and whilst not yet perfect, it is very promising. Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** A crow perched himself on a telephone wire. He was going to make a long-distance caw. | |
Mike Grace | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 11:15:23 +0100 Impressive stuff Phil, How do you handle table updates? Mike Phil Ide wrote: > Sander, Anand, > > I thought you might like to hear about my take on this problem. > > I've written a program which basically is a just a menu bar. It looks for > DLL's in a certain directory, and loads them. Each (package) DLL contains > some routines which identify it as a 'package' dll, and installs some menu > items on the menu bar. Using this method, I can dynamically add new items > and new menu's simply by dropping another dll in the appropriate directory. > > When the application boots, it calls LoadFromUrl() to download a > server-generated shtml page, which contains a directory listing. Since this > is dynamically created by Apache, I simply load any new dll's to the web > server and they immediately become visible. > > The application compares the directory listing against files already > installed, using the date-time stamps, and downloads any newer dll's to an > 'install' directory. > > Next it generates a batch file, launches it and terminates. > > The batch file calls a small C application which waits for the previous > application to vanish (you can use mutexes or monitor the status of the > application window), allows a short pause to allow the application to fully > shutdown, then copies the new files over the old ones (I also backup the > old files), and finally re-launches the original application. > > By allowing for sub-directories one the web-server, I can also copy > non-package dll's, and in this way I can even upgrade an application from > 1.82 to 1.90 just by copying the relevant files to the web-server. Within > 24 hrs, all my users are using the new version. > > This mechanism has been slowly developing over the last 6 months, and > whilst not yet perfect, it is very promising. > > Regards, | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 11:51:46 +0100 Mike, > Impressive stuff Phil, > > How do you handle table updates? Well, in this particular case, there are no tables! The application calls special routines in our WAA apps, which return web-pages of formatted information. Using LoadfromUrl() to fetch these pages and HRF to extract the information. It is very similar in priniciple to SOAP. As an example of some of things we do with this program: 1. Check certificate count status Each customer may have several policies, and can print their insurance certificates through our web. We limit the number of prints for each type of policy that can be made each month to reduce fraudulent use. This routine tells us how many certs any particular customer has printed for type of policy. 2. Reset cert count Occassionaly a customer has a good reason for printing more than 3 certs in one month (possibly problems downloading/printing the PDF), so we have the ability to reset the counter. 3. Check cover status If we are contacted by an insurer or the police to check whether a particular vehicle/driver combination was covered on our policy on a particular day, we can send this query and return a list of each vehicle and each driver registered at that time. The two lists are returned as HTML tables, the data is extracted and used to generate two XbpBrowse's. I let the web application handle get/set of the data from the various sources, since it already has that ability (I don't like re-writing perfectly good existing code, and absolutely hate copying code from one project to another - it means two locations to update during maintenance!). All I have to do is 'tap-into' the features already available in the web-apps, which is why I didn't end up writing new code for the SOAP servers (which can't access some of the data sources without adding the code to the SOAP projects). Besides, using HRF or XML/SOAP - there really is no difference with one minor exception. With HTML, you can embed HTMLDOC supported tag-codes, which allow yo to run the page through HTMLDOC to print it out. This means you can have definitive page breaks, set formal page header/footer data, set page margins etc. The page still displays as normal in a web-browser too. Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** When the need arises, anything within reach becomes a hammer. | |
Mike Grace | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 15:18:26 +0100 O.K. I understand. Now for a hypothetical question. If you had to make data structure operations using your software, how would you approach it? Mike Phil Ide wrote: > Mike, > > >>Impressive stuff Phil, >> >>How do you handle table updates? > > > Well, in this particular case, there are no tables! > > The application calls special routines in our WAA apps, which return > web-pages of formatted information. Using LoadfromUrl() to fetch these > pages and HRF to extract the information. It is very similar in priniciple > to SOAP. > > As an example of some of things we do with this program: > > 1. Check certificate count status > Each customer may have several policies, and can print their > insurance certificates through our web. We limit the number > of prints for each type of policy that can be made each month > to reduce fraudulent use. This routine tells us how many certs > any particular customer has printed for type of policy. > > 2. Reset cert count > Occassionaly a customer has a good reason for printing more > than 3 certs in one month (possibly problems downloading/printing > the PDF), so we have the ability to reset the counter. > > 3. Check cover status > If we are contacted by an insurer or the police to check whether > a particular vehicle/driver combination was covered on our policy > on a particular day, we can send this query and return a list of > each vehicle and each driver registered at that time. The two lists > are returned as HTML tables, the data is extracted and used to generate > two XbpBrowse's. > > I let the web application handle get/set of the data from the various > sources, since it already has that ability (I don't like re-writing > perfectly good existing code, and absolutely hate copying code from one > project to another - it means two locations to update during maintenance!). > All I have to do is 'tap-into' the features already available in the > web-apps, which is why I didn't end up writing new code for the SOAP > servers (which can't access some of the data sources without adding the > code to the SOAP projects). Besides, using HRF or XML/SOAP - there really > is no difference with one minor exception. > > With HTML, you can embed HTMLDOC supported tag-codes, which allow yo to run > the page through HTMLDOC to print it out. This means you can have > definitive page breaks, set formal page header/footer data, set page > margins etc. The page still displays as normal in a web-browser too. > > Regards, | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 15:41:48 +0100 Mike, > O.K. I understand. > > Now for a hypothetical question. > > If you had to make data structure operations using your software, how > would you approach it? Depending on the datasource. For SQL, it is easy - call a function which forwards an SQL command - although for this type of operation I have direct access to the SQL engine via the VPN, as I would probably just use the SQL Administrator application (PGAdmin III). For DBF operations I might simply add a function to create the new structure, copy the existing table into it, delete the old table, close the new table, rename the new table to the old table name, delete the index file(s) and re-open the table (causes automatic reindex). Generally, I'd simply put a test in the code which opens the tables and restructure them on-demand - i.e. when the application attempts to open a particular table, check the structure and update as necessary. What I could do is allow new structures to be installed in a similar fashion to new dll's - when a DBF is updated, copy the existing data in before copying the new dbf to the data directory. However, this is only really suitable for adding non-mandatory fields (i.e. they don't have to have a value) or extending a field from say 10 chars to 15. Otherwise you have to start worrying about default values, which is going to require more than some generic chunk of code. Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** Learn to pause -- or nothing worthwhile can catch up to you. | |
Mike Grace | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 16:56:05 +0100 Nice, nice. But what if the data is multi user i.e. on the server, can you guarantee that 2 workstations won't try and update at the same time or would you add the fields yourself (assuming the SQL database can handle structure changes whilst everyone is still logged in) then place the update ready for download? Mike Phil Ide wrote: > Mike, > > >>O.K. I understand. >> >>Now for a hypothetical question. >> >>If you had to make data structure operations using your software, how >>would you approach it? > > > Depending on the datasource. > > For SQL, it is easy - call a function which forwards an SQL command - > although for this type of operation I have direct access to the SQL engine > via the VPN, as I would probably just use the SQL Administrator application > (PGAdmin III). > > For DBF operations I might simply add a function to create the new > structure, copy the existing table into it, delete the old table, close the > new table, rename the new table to the old table name, delete the index > file(s) and re-open the table (causes automatic reindex). > > Generally, I'd simply put a test in the code which opens the tables and > restructure them on-demand - i.e. when the application attempts to open a > particular table, check the structure and update as necessary. > > What I could do is allow new structures to be installed in a similar > fashion to new dll's - when a DBF is updated, copy the existing data in > before copying the new dbf to the data directory. However, this is only > really suitable for adding non-mandatory fields (i.e. they don't have to > have a value) or extending a field from say 10 chars to 15. Otherwise you > have to start worrying about default values, which is going to require more > than some generic chunk of code. > > Regards, | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Mon, 06 Jun 2005 13:42:31 +0100 Mike, > But what if the data is multi user i.e. on the server, can you guarantee > that 2 workstations won't try and update at the same time or would you > add the fields yourself (assuming the SQL database can handle structure > changes whilst everyone is still logged in) then place the update ready > for download? For SQL, all requests (fetch/update) are queued an handled serially. This is the only way the server can guarantee the integrity of the database - it's very much like the fact that DBF indexes get locked when a skip/seek or update occurs. Therefore, it is easy for you to add/delete or modify columns in an SQL database even when multiple people are using it. In fact, since the datasets returned from queries are usually either static (e.g. data is exported to a temporary table) or purely dynamic, making column configuration changes is usually not a problem. However, this is not an issue for me, so I haven't had to look deep into it at all. Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** Is death legally binding? | |
Sander Elias | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 17:11:03 +0200 >Sander, Anand, > >I thought you might like to hear about my take on this problem. As always, this is welcome! >I've written a program which basically is a just a menu bar. It looks for >DLL's in a certain directory, and loads them. Each (package) DLL contains >some routines which identify it as a 'package' dll, and installs some menu >items on the menu bar. Using this method, I can dynamically add new items >and new menu's simply by dropping another dll in the appropriate directory. <snip> >This mechanism has been slowly developing over the last 6 months, and >whilst not yet perfect, it is very promising. This is also a nice way to do updates. But this is mostly for "dynamic" applications (lots off modules, high frequency of updates. Or software in the "test" stadium) this system put's some restrains on how you can develop your app. for example cross-calling functions (form one DLL to another) is hmm, more challenging as in a normal app. Also this adds a layer in the runtime that will cost extra runtime, and resources. This can be fine for some app's, but not for all. my app's do not get much updates, so there is no real problem sending a complete app-setup once in a while. drop it in the on the right place, and all network-nodes get it at the next boot off the program. If I want I can decide to kick all current users out, so I know for sure that they all are running the "current" version. I have even a solution for sending the updates. ad program boot it checks my "update-server", and if there is a new update, it download's it. puts it on the right place (renaming the old setup, so that there is a history of versions available) and starts the update procedure. this mean 1 download for an entire "client" network. I as a programmer, only need to make a new setup.exe (or whatever it is called) and drop it in the client-update-dir on my server, they will get it the next time they boot my program. just my 2 cents. Regards Sander | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Fri, 03 Jun 2005 17:10:10 +0100 Sander, >>This mechanism has been slowly developing over the last 6 months, and >>whilst not yet perfect, it is very promising. > > This is also a nice way to do updates. But this is mostly for > "dynamic" applications (lots off modules, high frequency of updates. > Or software in the "test" stadium) > this system put's some restrains on how you can develop your app. for > example cross-calling functions (form one DLL to another) is hmm, more > challenging as in a normal app. > Also this adds a layer in the runtime that will cost extra runtime, > and resources. This can be fine for some app's, but not for all. As always, what works in one scenario won't work in another. However, for the cross-calling dll's, I get around that very easily. Each DLL statically links DAUTIL.DLL, which contains all the 'common' code. Additionally, I can access functions in the EXE and other DLL's by macro compiling the call. Since no (package) DLL is dynamically unloaded, statically linking the common utils dll is not a problem. Further, if I add a function to DAUTILS for one package, all other packages automatically gain access to it. > I as a programmer, only need to make a new setup.exe (or whatever it > is called) and drop it in the client-update-dir on my server, they > will get it the next time they boot my program. ...which works well with infrequent updates. My application was designed so that I can add queries and reports on demand. After testing the new code (by simply dropping the DLL in my package directory), I post the new dll to the web server and that's it. What I didn't want to get into was creating a new installation and notifying everyone there was an update. When I started thinking about having the application looking for a new install program automatically I started thinking about incremental updates (i.e. just one DLL) and thought this would be the most efficient way to go. Interestingly, since the main application is simply a menu bar (plus the check-for-updates code), I took a bunch of utilities that I had written and turned them into DLL's simply by changing the project file (package DLL's are loaded using the DLL name as a prefix, so for THAT.DLL, Main() becomes ThatMain() etc.). Now I have all those utilities at my finger tips, and better, I can have personal utilities and procedures available on my menu bar simply by 'installing' packages that I don't give to everyone else. As for speed, there is a slight delay during bootup when it checks the website for updates, but since I backdoor into the webserver using a local network address at 100Mbps, it is only really an issue for our home workers (who all have broadband anyway). Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** My house is made out of balsa wood, so when I want to scare the neighborhood kids I lift it over my head and tell them to get out of my yard or I'll throw it at them. -- Steven Wright | |
Anand Gupta | Re: Loadfromurl heavy traffic network before communication on Sat, 04 Jun 2005 15:23:58 +0530 The emperor Strikes Am glad, I am on the right tracks. (The C Application you have mentioned, can you send that/post it here ?). Am working with a .NET built too (since we have few ppl working on .NET now). But I would prefer a stand-alone tool (so that I can even update the version update DLLs). Currently my updater is written in Alaska itself. Am currently only using LoadFromURL() to check for versions (well moved from .cgi approach to a simple TeXT file approach, after you gave me a hint a year ago or so). Phil a query here, have you tested on machines with AntiVirus installed (where you try to COPY/Read_Write an EXE file from your application. Do they make a noise ? Also are you reading the whole updated EXE via LoadFromURL() (using UUENCODED or something else method) and FWRITng the EXE/DLL on your own ? Anand "Phil Ide" <phil@idep.org.uk> wrote in message news:1t41fsylc3nv.dlg@idep.org.uk... > Sander, Anand, > > I thought you might like to hear about my take on this problem. > > I've written a program which basically is a just a menu bar. It looks for > DLL's in a certain directory, and loads them. Each (package) DLL contains > some routines which identify it as a 'package' dll, and installs some menu > items on the menu bar. Using this method, I can dynamically add new items > and new menu's simply by dropping another dll in the appropriate directory. > > When the application boots, it calls LoadFromUrl() to download a > server-generated shtml page, which contains a directory listing. Since this > is dynamically created by Apache, I simply load any new dll's to the web > server and they immediately become visible. > > The application compares the directory listing against files already > installed, using the date-time stamps, and downloads any newer dll's to an > 'install' directory. > > Next it generates a batch file, launches it and terminates. > > The batch file calls a small C application which waits for the previous <snip> | |
Phil Ide | Re: Loadfromurl heavy traffic network before communication on Mon, 06 Jun 2005 13:47:39 +0100 Anand, > Phil a query here, have you tested on machines with AntiVirus installed > (where you try to COPY/Read_Write an EXE file from your application. Do they > make a noise ? Also are you reading the whole updated EXE via LoadFromURL() > (using UUENCODED or something else method) and FWRITng the EXE/DLL on your > own ? Yes, I fetch the web-page with the list of files from the server, and check for updates. I then use LoadFromUrl() to download these and place them in special directories ready for installing. The batch file handles copying.moving them to the permanent location. My AV doesn't care about which files have been modified. It checks them just before they are loaded, which allows updates to occur seamlessly. AV units which don't allow software to upgrade transparently without making exceptions (i.e. the Windows/System32 etc. dirs) are IMHO bad software. Regards, Phil Ide *************************************** * Xbase++ FAQ, Libraries and Sources: * * goto: http://www.idep.org.uk/xbase * *************************************** Yesterday I saw a chicken crossing the road. I asked it why. It told me it was none of my business. -- Steven Wright |