Create a simple live update system with 2 components:
GENERATOR: create a live update config file (CONFIG) that the UPDATER (below) will use to run live update on the end-user's machine. It takes 4 parameters: source program files directory, liveupdate server name/IP where the latest program files and CONFIG will reside, name of the liveupdate project to be displayed in UPDATER, path of the program that will be run after live update completes on the end-user's machine (FINALIZER). FINALIZER must reside under the source program files directory. The generated CONFIG file will be packaged with the software setup and uploaded to the liveupdate http server manually (not a responsibility of the GENERATOR).
UPDATER: take CONFIG file on the end-user's computer as input (USERCONFIG). It first checks if a newer version is available from a specific URL location (to-be-provided) and if one exists, updates itself before proceeding. Then it downloads the latest CONFIG file from the liveupdate http server (LATESTCONFIG). Compare the end-user's program file directory against the downloaded LATESTCONFIG file based on MD5. Download and replace/add files that are different or new in the LATESTCONFIG file. Files missing from the LATESTCONFIG but present in the USERCONFIG should be removed. If files being replaced/updated are in use by some processes, the user will be given the option to terminate the process manually or to let UPDATER terminate such processes automatically before continuing. At the end, UPDATER will run a FINALIZER program as specified in the LATESTCONFIG. If live update was canceled or failed, the content of the program files directory on the end-user's computer should remain unchanged.
- Use Unicode
- All displayable strings should reside in the RC file
- Standalone EXEs with MFC statically linked
- No dependency on 3rd party OCX/DLL
GENERATOR: single dialog window, simple, functional design would be fine.
UPDATER: the user interface should look similar to the attached screenshots
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).