These are a few options that I can think of:
(*) Microsoft has a technology called
ClickOnce that might help you out here. It's pretty slick, but it's kind of got a steep learning curve. I haven't used it quite sometime. I think you can use either Visual Studio or the ClickOnce
command line to create an Installer package that will install your application and manage your updates for you. In addition to the steep learning curve, you'll also need to get into creating and managing a
Certificate to so that your antivirus and malware removals back off and let your application live in peace.
(*) An alternative installer/build method is
WIX. This has another steep learning curve, but it makes a really nice Windows Installer using MSBuild. I think for this option, you will need to build something into the application to prompt your users to install the latest version (or do it for them) when a new version is available.
Both ClickOnce and Wix can be created without using Visual Studio, but it's probably easier with
Visual Studio Community
(*) A somewhat simpler option is to build a Script that deploys your application updates for you and then Deploy the script to your users. This works in a similar fashion as ClickOnce, but with the entire process scripted by hand. It's simpler to understand and get going. This question discusses it a bit:
Feeding updates from a newer database version (1.1) to an older version (1.0) and this is a related insight by Twinnyfo
Working with Front and Back-Ends
We've been using a deployment script for 1 1/2 to 2 years now and it has been working great. We have multiple sites as well and this way the application is deployed to one site and the script installs the new copy on the local machine only when there is a new version available.
Here is a stripped down version of our current deployment Script, which is saved with a .cmd extension so that Windows knows it is a batch file:
- @ECHO OFF
-
CLS
-
SET gSourceLocation=\\DeploymentServer\Applications\CoolProgram\
-
SET gAppFileName=CoolProgram.accde
-
SET gVersionFileName=CoolProgram.txt
-
SET gAppDir=Documents\Applications\CP\
-
-
SET sUserProfile=%userprofile%
-
SET sSourceFile=%gSourceLocation%%gAppFileName%
-
SET sSourceVersionFile=%gSourceLocation%%gVersionFileName%
-
-
SET sDestination=%sUserProfile%\%gAppDir%
-
SET sDestinationFile=%sDestination%%gAppFileName%
-
SET sDestinationVersionFile=%sDestination%%gVersionFileName%
-
-
SET sSourceVersion=0
-
SET sDestinationVersion=0
-
-
SET /p sSourceVersion=<%sSourceVersionFile%
-
SET /p sDestinationVersion=<%sDestinationVersionFile%
-
IF "%sDestinationVersion%"=="" (SET sDestinationVersion=0)
-
-
ECHO ....................................
-
ECHO Application: %sSourceFile%
-
ECHO Local Directory: %sDestination%
-
ECHO Source Version File: %sSourceVersionFile%
-
ECHO Current Version File: %sDestinationVersionFile%
-
ECHO ....................................
-
ECHO Current Version: %sDestinationVersion%
-
ECHO Availiable Version: %sSourceVersion%
-
ECHO ....................................
-
-
IF NOT EXIST %sDestination% (
-
ECHO Making Destination Directory
-
MKDIR %sDestination%
-
)
-
-
IF %sDestinationVersion% LSS %sSourceVersion% (
-
ECHO Installing latest Version of the Application to the Local Computer
-
ECHO Please be patient, this should take no more than a Minute...
-
COPY %sSourceFile% %sDestination%
-
ECHO Copying Version File to Local Computer...
-
COPY %sSourceVersionFile% %sDestination%
-
)
-
-
START "MSAccess.exe" %sDestinationFile%
Once you have the Script and you are comfortable with it, you would need a Version file and a Shortcut to the Batchfile:
- In this case the Version file is a text file that only contains the application Version number. I attached one as it's probably easier to understand that way. (a version file is worth a thousand words)
- You may not need a Shortcut, but I found it easier with our infrastructure to create the shortcut and supply it to our IT department, who then copies it to all the users Desktop. It would have been nice to email all the users a copy of the Shortcut, but our Outlook Server will instantly delete any *.lnk file. Regardless, the Shortcut would point to the Batch file and in this example the target would be: \\DeploymentServer\Applications\CoolProgram\CoolPr ogram.cmd
Once this is all setup, all the users would have to do is launch the Shortcut. The Batchfile would be located over the network and executed. Which would check the Version file and copy down the Access database if it is missing or if a new one is available. Then it would launch Access and open the latest Database. To deploy a new version, create your new compiled database and place it in the deployment directory, then increment the version number in the CoolProgram.txt and you are done.
There are other methods, but these are the ones I'm familiar with. I know you'll probably put your own spin on it and I would be interested to see what that is.