-
Notifications
You must be signed in to change notification settings - Fork 2
Updater is an update application and tools for your software.
License
lifchicker/Updater
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
================================================================================ ABOUT Updater is an update and launch application and tools for your software. Updater written on C++ with Qt libs usage. Tools written on Python. ================================================================================ DEPENDENCIES 1. CMake (minimal version 2.6) 2. Qt (tested on 4.8.1). Required packages: QtCore, QtGui, QtNetwork. 3. Python (tesed on 2.7.3) ================================================================================ HOW TO USE IT 1. Replace UPDATER_TEMP_DIR_NAME in mainapplication.cpp file by your application name. All temp files will be stored in C:\Documents and Settings\username\Local Settings\Temp\UPDATER_TEMP_DIR_NAME folder on Windows and /tmp/UPDATER_TEMP_DIR_NAME directory on Linux 2. Build Updater: 2.1. On Linux: cd build cmake -DCMAKE_BUILD_TYPE=Release ../ make 2.2. Cross compilation for Windows under Linux: cd build ./build make 2.3. On Windows : google how to compile Qt application via CMake. 3. Put Updater and all dependencies to, for example, v1.0 and v2.0 of your application directory. 4. Read tools/README.txt to know how to use tools/create-update-file.py 5. Use tools/create-update-file.py to create full file list for v1.0 cd tools ./create-update-file.py full 6. Use tools/create-update-file.py to create diff from v1.0 and v2.0 7. Put update.xml files to directories 7.1. update.xml from full put to v1.0 7.2. update.xml from diff put to v2.0 7.3. update.xml from diff put to platform directory 7.4. update.xml from full put to v1.0 installer as update-current.xml 8. Upload all files to your update server For more information read section "UPDATE PROCESS". ================================================================================ UPDATE PROCESS 1. UpdateClient downloads new update.xml from <update><source>/<platform>/update.xml url and say it update-latest.xml 2. UpdateClient compares <currentVersion> from update-latest.xml and update-current.xml (just downloaded and last updated respectively). If they are equal, then exit. 3. UpdateClient checks <currentVersion> of update-current.xml and <previousVersion> from just downloaded update-latest.xml file. If versions are equal say update-latest.xml as update-resulting.xml and go to Step 5. <!-- TODO: make algorithm for update from all previous versions at one time --> 4.1. If versions doesn't equal, UpdateClient downloads previous version of update.xml from <update><source>/<platform>/<previousVersion>/update.xml and say it as update-latest.xml 4.2. Go to Step 2. 5. Using update-resulting.xml as file for update. 6. For all files do 6.1. Download file from <update><source>/<platform>/<currentVersion>/<install><file><name> to temp directory. 6.2. Check file size and file hash. If file size or hash invalid, go to Step 6.1 with the same file name. If check fails N times, throw update error and exit. 7. Copy all files to application directory. 8. Rename update-resulting.xml to update-current.xml and copy to application directory. 9. Go to Step 1. ================================================================================ UPDATE PROCESS ALGORITHM 1. Read header from update-current.xml from application directory 2. Download update.xml from <update><source>/<platform>/update.xml to temp directory and say it update-latest.xml 3. Read header from update-latest.xml 4. Compare <currentVersion> from update-latest.xml and update-current.xml. If they are equal and flag "installUpdates" is false, show "No updates" and exit. 5. Check <currentVersion> of update-current.xml and <previousVersion> from update-latest.xml file. If versions are equal say update-latest.xml as update-resulting.xml and go to Step 7. 6.1. If versions doesn't equal, download previous version of update.xml from <update><source>/<platform>/<previousVersion>/update.xml and say it as update-latest.xml 6.2. Go to Step 3. 7. If flag "installUpdates" is false, show dialog "New version found. Update?" and set flag to result of dialog choice. 8. If flag "installUpdates" is false, exit. 9. For each file do 9.1. Download file from <update><source>/<platform>/<currentVersion>/<install><file><name> to temp directory. 9.2. Check file size and file hash. If file size or hash invalid, go to Step 10.1. with the same file name. If check fails N times, show message "Update error." and exit. 10. Rename update-resulting.xml to update-current.xml and copy to application directory. 11. Move all files to temp directory for result update. 12. If not all needed versions downloaded, go to Step 1. 13. Wait for application exiting. 14. Copy all files from temp directory for result update to application directory. ================================================================================ SIMPLE UPDATE FILE <?xml version="1.0" ?> <update> <currentVersion>1.0.1</currentVersion> <previousVersion>1.0.0</previousVersion> <platform>windows</platform> <source>http://update.your.app/url</source> <application-main-binary> <file> <name>app.exe</name> <size>23049</size> <hash>a627ac81657487dc4206bb0d28d1699a</hash> <permissions>0755</permissions> </file> </application-main-binary> <install> <file> <name>app.exe</name> <size>23049</size> <hash>a627ac81657487dc4206bb0d28d1699a</hash> <permissions>0755</permissions> </file> <file> <name>README.txt</name> <size>16</size> <hash>bb25ef10dafca9498ba827000e834382</hash> <permissions>0644</permissions> </file> <file> <name>directory/file.txt</name> <size>26</size> <hash>c1d0fe90d578084dbcf2d5b0b5d63413</hash> <permissions>0644</permissions> </file> </install> </update>
About
Updater is an update application and tools for your software.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published