Client Software Deployment


Author
Message
Larry Caylor
Larry Caylor
Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)
Group: Awaiting Activation
Posts: 592, Visits: 3.7K
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

Trent Taylor
Trent Taylor
StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
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?

Larry Caylor
Larry Caylor
Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)
Group: Awaiting Activation
Posts: 592, Visits: 3.7K
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

Trent Taylor
Trent Taylor
StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
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.

Ben Hayat
Ben Hayat
StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)
Group: Forum Members
Posts: 374, Visits: 1.2K
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 Wink



Thanks!

..ßen
Larry Caylor
Larry Caylor
Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)Advanced StrataFrame User (902 reputation)
Group: Awaiting Activation
Posts: 592, Visits: 3.7K
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

Greg McGuffey
Greg McGuffey
Strategic Support Team Member (2.8K reputation)
Group: Forum Members
Posts: 2K, Visits: 6.6K
After struggling with Click-Once, I'd be the third BigGrin
Trent Taylor
Trent Taylor
StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)StrataFrame Developer (8.7K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
LOL BigGrin ....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 BigGrin  Thanks for all of your input!
Paul Chase
Paul Chase
Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)Advanced StrataFrame User (542 reputation)
Group: Forum Members
Posts: 414, Visits: 2.8K
I would like to get a hold of the guy that named it click-once!!. I clicked waaaaay more than once!
Ben Hayat
Ben Hayat
StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)StrataFrame User (430 reputation)
Group: Forum Members
Posts: 374, Visits: 1.2K
we can put on the table for the next major release.


So Trent, are you ready to tell us what your time frame is for the next major release? Will there be other releases like 1.7, 1.7.1, 1.8, ... before getting to 2.0? Or 2.0 is going to be after the 1.6.x?



Any insight [if you can] would be appreciated!


..ßen
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search