| | | 
StrataFrame User
       
Group: StrataFrame Users Last Login: Today @ 5:07:53 PM Posts: 358, Visits: 1,755 |
| | In the last SF calss Trent mentioned that you had developed a custom solution for distributing client software for your medical apps rather than usning MS one-click deployment. I don't remember all of the details so it would be helpful if you could provide a brief outline of the approach you took and any issues I should look out for. -Larry |
| | | | 
StrataFrame Developer

Group: StrataFrame Developers Last Login: Today @ 5:44:29 PM Posts: 4,366, Visits: 4,393 |
| | Hey Larry, You can go about this a number of ways. But in essence, we have the clients verify their version each time the application is launched. A query is made to the server to get the latest version, if the servers version does not match the clients, then it begins an automated download from the server. Once downloaded, the client automatically launches the installation, which is automated, and once the install is complete, it re-launches the client. Doing it this way will ensure that the security permissions are kept in tact. If you need to run the install as a different user, you can do that as well by launching the install process with more advanced permissions (i.e. Administrator). In any case, this allows you to create a more reliable and sophisticated installation than ClickOnce will allow while still making it easy to distribute to the clients. Does that answer your question or are you looking for more of the details? |
| | | | 
StrataFrame User
       
Group: StrataFrame Users Last Login: Today @ 5:07:53 PM Posts: 358, Visits: 1,755 |
| | Trent, Thanks for the summary. The one area I'd like a little more information on is the automated download process. I'm assuming that your install processis using the standard windows installer with the installation package put together using InstallAware. -Larry |
| | | | 
StrataFrame Developer

Group: StrataFrame Developers Last Login: Today @ 5:44:29 PM Posts: 4,366, Visits: 4,393 |
| | Gotcha. Well, there are a couple of ways to tackle this. In either case, as mentioned above, you need to have a version table on the server that the client can test against. We use teh assembly version of the main EXE to determine the version. On your server, you will also need to have the install stored in a database...or stored in a network folder location where all of the workstations can access it. In most cases, the database is the better and more secure route. Example Structures VersionTable
ver_pk - Integer (Primary Key) ver_CurrentVersion - VarChar (Holds the current version that the client will test against) ver_Posted - DateTime (Time stamp that indicates when the version was changed....this would be for display purposes only) DownloadsTable dl_pk - Integer (Primary Key) dl_CurrentVersion - VarChar (Allows you to query by the version for the download) dl_Install - VarBinary(MAX) (The installation in Byte() format) Application Startup When the application on the client side starts, check the version to see if there is an update. Dim lcMyVersion As String = Reflection.Assembly.GetExecutingAssembly().Version.ToString() Dim loVersions As New VersionsTableBO() If Not lcMyVersion.Equals(loVersion.GetCurrentVersion()) Then '-- Get the installation from the server Dim loDownloads As New DownloadsTable()
'-- Retrieve the install loDownloads.FillWithCurrentInstall(loVersion.GetCurrentVersion())
'-- Save the install to a temp folder Dim lcTempLocation As String = System.IO.Path.GetTemporaryFile()
'-- Change the extension lcTempLocation = System.IO.Path.ChangeExtension(lcTempLocation,".exe")
'-- Save the bytes to disk System.IO.File.WriteAllBytes(lcTempLocation,loDownloads.dl_Install,True)
'-- Launch the install System.Diagnostics.Process.Start(lcTempLocation)
'-- Terminate the client assembly End End If Note: I just typed this code out here so there could be some minor things to work through, but it should give you the general idea. If I went in the wrong direction with your question, please let me know and I will try to give you some more details. |
| | | | 
StrataFrame User
       
Group: Forum Members Last Login: 10/31/2007 5:20:05 PM Posts: 374, Visits: 1,197 |
| Trent, thanks for the valuable info.
Got a question/suggestion for you. Have you considered of offering a new product/components (general enough) that would allow us to use with our application that whether on the same network or remote users can get updates using ES? When I was using Delphi, one of the third party companies offered a complete set of components that we could add to the app and the upgrade was right built into the application without much efforts.
You have done it, tested it and works and it would make a great additions to your products list. Honestly, I think even people who don't use SF, would buy and use this module and I bet you can sell ES for their remote users. Think about it and I would be your first customer 
Thanks!
..ßen |
| | | | 
StrataFrame User
       
Group: StrataFrame Users Last Login: Today @ 5:07:53 PM Posts: 358, Visits: 1,755 |
| | Trent, Thanks for filling in the details. I think I can take it from here, however I like Ben's suggestion. I'd be the second one to buy it. -Larry |
| | | | StrataFrame VIP
       
Group: StrataFrame Users Last Login: Today @ 7:44:49 PM Posts: 1,194, Visits: 3,033 |
| After struggling with Click-Once, I'd be the third |
| | | | 
StrataFrame Developer

Group: StrataFrame Developers Last Login: Today @ 5:44:29 PM Posts: 4,366, Visits: 4,393 |
| LOL ....well I think Ben's idea is a good one and maybe it is something we can put on the table for the next major release. We are all about producing product that our developers are interested and....and that can make life much easier Thanks for all of your input! |
| | | | 
StrataFrame User
       
Group: StrataFrame Users Last Login: Today @ 3:49:33 PM Posts: 347, Visits: 2,183 |
| | I would like to get a hold of the guy that named it click-once!!. I clicked waaaaay more than once! |
| |
|
|