Forum Moderators: open
Thoughts are:
Wireless laptops constanty connected to web via cellular technology ... no idea about costs, availability, reliability, etc. of wireless.
Laptop based app (with local DB) that talks with webserver for uploads at end of day/week/whatever. Would like to work on software distribution issues (ie .net no touch deployment, but don't know how that would work with part-time web connectivity).
Has anyone gone down this road?
Thanks!
Just create an Access DB on the local machine, write a simple web interface if you want it to look like the server one, then import the data from Access to whatever database you use.
Like use a file upload control, have the guys upload their mdb files and then I unload them to SQL when they hit the server from the upload? Or what about this... store the stuff in XML on the laptop then use javascript to tranmit to the server with the MS control (I've seen similar code somewhere)?
What about updating the executable on the laptop with new versions of the software? Anyway to automatcally push that down when they connect to the server for the data upload?
Thanks for any thoughts!
The .Net web based zero deployment model looks interesting, but it's not clear that that will work in a disconnected scenario. I'd like to be able to push the software that runs disconnected down from the web server when the clients connect to upload their data. Like a hyper link saying "There is a new version of the sales call application available. Please click here to install it."
I've been reading up on .net application software deployments but haven't come up with a compelling solution yet.
Comments?
Thanks,
Ross
The amount of work to do this is trivial. Maybe 30 lines of code. I'm not kidding!
It also has that technology for updating the application, which is easy and nifty.
The JavaWebStart seems to do the same thing.
I'm working on the same project. I have a very popular online database program, but several users have expressed an interest in an offline version that will sync with the online version.
There is a company called Panorama that has a database which apparently does this today - you have to build the desktop application with their software and it will sync with an online version. But I wasn't impressed with the product at all.
If its really small and needs a cheap/quick solution, I would go with PWS running locally with Access, and an ASP script to query the days records, and make a form that is POSTed to remote ASP page that then does a series of inserts.
take a look at the Java WebStart on the java pages at Sun
With .NET, you can download data into a dataset on the local machine. You can then persist that dataset as a file. You can load and save that file as many times as you want. When you are ready, you can then have the dataadapter upload the data.
The amount of work to do this is trivial. Maybe 30 lines of code. I'm not kidding!It also has that technology for updating the application, which is easy and nifty.
If its really small and needs a cheap/quick solution, I would go with PWS running locally with Access, and an ASP script to query the days records, and make a form that is POSTed to remote ASP page that then does a series of inserts.
Good thought. But I think it still leaves me with the issue of pushing down a new version of the code running on PWS.
Thanks to all for your ongoing interest, thoughts, and comments.
Nothing against it, I just think its cost overkil for this problem.
How about giving the agents an excel template for collecting sales info. The tempalte can incorporate pricing, calculator, auto-complete features etc.
Then have an ASP page for agents to upload the xls files, the script opens them on the server using ADODB, and inserts the records into a database.
If you want to upgrade the template with any more features like print invoice macros or VBA etc. Just email agents the new template. Version control is handled by a date in the filename.
Its cheap on development time and licencing, low min spec for the clients (Win 95/Excel) and easy to upgrade. Training is minimal and backups are available on both clients and server.
Visual Studio is killer, but Web Matrix is 3/4th as good for 1/infinity of the price.
Get the data into a DataSet. If downloading from a server, that can be done with (vb.net code):
Dim strSql as string = "select * from tblFoo"
dim strConnectionString as string = "connectionstring"
Dim sda As New SqlDataAdapter(strSql, strConnectionString)
Dim ds As New DataSet()
sda.Fill(ds, "tablename")
ds.WriteXml("filename.xml")
that last line persists the dataset to filename.xml, and can be done any time.
Then when you want the data back, do:
Dim ds As New DataSet()
ds.ReadXml("filename.xml")
Manipulate the dataset. See any .NET book on the details.
When you want to post back to the server, do:
Dim sda As New SqlDataAdapter(strSql, strConnectionString)
Dim scb As New SqlCommandBuilder(sdaGroup)
sda.InsertCommand = scb.GetInsertCommand()
sda.DeleteCommand = scb.GetDeleteCommand()
sda.UpdateCommand = scb.GetUpdateCommand()
sda.Update(ds, "tablename")
Sorry, I guess I wasn't very clear. The piece I'm puzzling over concerns distributing new software across the Internet.
On the client's we'll have a .net program that runs standalone, without need for an active Internet connection (Winsocket, I guess). When the client establishes an Internet connection and visits my web page, I need to do either of the following:
- Present a link to download and install a new version of the standalone program
- Automatically initiate the download and install process
These processes are where I'm stuck. I have an idea of how to do the download, but not how to automatically run the install.
Thanks!
Also, I'm looking at this as a learning exercise. Sure, I could email new install files and have the users in the field download and run set-up.exe, but somehow that strikes me as being so 1990's, ya know?
Thanks!
Public Sub Main()
Dim asm as System.Reflection.Assembly
Dim strUrl As String = "http://www.domain.com/path/application.exe"asm = [Assembly].LoadFrom(strUrl)
Dim mi As MethodInfo
mi = asm.EntryPoint
mi.Invoke(Nothing, Nothing)
End Sub
You may have to configure some security settings on the client to allow this to run without problems.
The way that it works is that it downloads the program into IE's cache. When you run it, it checks the cache against the server. If the program in the cache has changed, it downloads a new copy. In any case, it runs it out of the cache.