{"id":17188020,"url":"https://github.com/icculus/loki_update","last_synced_at":"2025-09-14T03:05:03.256Z","repository":{"id":106920057,"uuid":"384861008","full_name":"icculus/loki_update","owner":"icculus","description":"Loki Software's update tool.","archived":false,"fork":false,"pushed_at":"2021-08-20T17:37:40.000Z","size":1596,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-25T04:29:15.731Z","etag":null,"topics":["updater"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icculus.png","metadata":{"files":{"readme":"README","changelog":"CHANGES","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["icculus"],"patreon":"icculus"}},"created_at":"2021-07-11T04:41:14.000Z","updated_at":"2022-06-06T15:24:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"9b3a762f-fea9-4a0a-a66d-f06f3a41f2c1","html_url":"https://github.com/icculus/loki_update","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/icculus/loki_update","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icculus%2Floki_update","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icculus%2Floki_update/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icculus%2Floki_update/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icculus%2Floki_update/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icculus","download_url":"https://codeload.github.com/icculus/loki_update/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icculus%2Floki_update/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275055088,"owners_count":25397576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["updater"],"created_at":"2024-10-15T01:07:53.372Z","updated_at":"2025-09-14T03:05:03.226Z","avatar_url":"https://github.com/icculus.png","language":"C","funding_links":["https://github.com/sponsors/icculus","https://patreon.com/icculus"],"categories":[],"sub_categories":[],"readme":"\nLoki Update Tool 1.0\n\n\nIntroduction\n============\nThis is a tool written by Loki Software, Inc., designed to be used in\nconjunction with their setup and patchkit tools to automatically update\ninstalled products.\n\n\nLicensing\n=========\nThis update tool is available for use under the GNU General Public License.\n\n\nBasic Operation\n===============\nFirst the update tool looks for updates for itself, and if any are available,\nautomatically downloads and applies them and restarts.  If an application\nname is given on the command line, the update tool looks for all updates\nthat apply to the existing application, automatically applies them, and\nthen quits.\n\nIf the update tool is not given any command line arguments, then it enters\nan interactive mode in which the user can select available updates for any\ninstalled products.  It then downloads the README for the patch and makes\nit available to the user while the rest of the patch is downloaded.  If a\nGPG signature is available, it will be downloaded and used to verify the\nupdate.  If the GPG signature isn't available, or cannot be verified for\nsome reason, then an MD5 checksum is downloaded and used for verification.\nWhen the user chooses to continue, the update is executed, and passed the\n\"--nox11\" and \"--noreadme\" options, telling it to run in quiet mode and\nprint out percentage progress information.  When the patch completes, the\nuser can continue applying updates until an error occurs or all updates\nare complete.\n\nLoki's games have a special feature built into them which allow you to\nrun the game with the '--update' option to automatically update them and\nthen restart for normal play.\n\n\nUpdate Creation\n===============\nThe update tool assumes that your patches have been created using the\nLoki patchkit tools, and packed using the makeself.sh script written\nby Stephane Peter.\n\nThe patchkit tools are available from Loki Software, Inc.\n\nThe makeself.sh script is available from:\nhttp://www.lokigames.com/~megastep/makeself/\n\nWhen the product is installed with Loki's setup tool, it is provided\nwith an product update URL, a place where a list of updates for this\nproduct are listed.  The listing can be text or HTML, and must contain\na set of entries in the form:\n\nProduct:\nVersion:\nArchitecture:\nLibc:\nApplies:\nFile:\n\nThe product is the keyword name of the product, as specified by the\n\"product\" tag in the product installation description file.  The name\nof the product actually shown the user is the product description, as\nspecified by the \"desc\" tag in the product installation description file.\n\nThe version is the version of the patch, i.e. what the final version of the\nproduct will be after the patch is applied.  The patch is responsible for\nupdating the installation database, which is done automatically by Loki's\npatchkit tools.\n\nThe architecture is an optional comma separated list of architectures for\nwhich the patch is valid.  The default is to match any architecture.\nRecognized keywords are: x86, ppc, alpha, sparc64, arm, any\nNew keywords may be added by modifying arch.c in the setupdb distribution.\n\nThe libc is an optional comma separated list of versions of libc for\nwhich the patch is valid.  The default is to match any version of libc.\nRecognized keywords are: libc5, glibc-2.0, glibc-2.1\nNew keywords may be added by modifying arch.c in the setupdb distribution.\n\nThe applies field is a comma separated list of product versions to which\nthe patch may be applied.  If the installed version of the product doesn't\nmatch one of these strings, then the patch is discarded.\n\nThe file field is the archive file used to upgrade this product.\n\nYou can also add an optional \"Note: blah blah\" field which is listed in\nparenthesis after the update version when shown to the user.  These notes\napply to versions, not patches, so if you want a note about a version, you\nonly need to add it to one of the update listings for that version.\n\nThe update tool supports patches that linearly increase an application\nversion, convert to a different \"flavor\" of the product, or add extra\nfunctionality to the application.\n\n\nComponents\n==========\nPatches that add extra functionality to an application, in the form of\nan \"add-on\" or expansion pack are considered special in several ways:\n\n * They are considered separate components and may be patched separately\n   from the main application.\n\n * They require a separate \"Component\" keyword that comes before the\n   \"Version\" keyword in the patch description indicating the verbose\n   name of the component.\n\n * The applies field of the patch description contains only a single\n   version, and represents the minimum version of the product which\n   must be installed for this component to show up as an update option.\n\n * Patches to this component must have a matching \"Component\" keyword.\n\n * The component installation update must be specified in the same file\n   as the patches to this component.  Since the description syntax for a\n   new component update and patches to that component are the same, the\n   entry with the lowest version number is considered the base update.\n\n * The component update must not modify any files in the base install,\n   it should just add new files.\n\nExamples of good candidates for \"components\" might be game level editors,\nmission packs, development kits, etc.\n\n\nFlavors\n=======\nAn application flavor is designated by an extension to the application\nversion, using any character except alphanumeric characters, the period,\nor a comma, followed by any amount of non-whitespace characters.  An\nexample of an application flavor might be \"1.0 Spanish\", or \"1.1-demo\"\n\nThe patch tools support patches that convert from one flavor to another\nor upgrade the version of a particular flavor, but keep in mind that \nthis is equivalent to a separate product in that only updates for your\nparticular product flavor will be visible on the update selection list.\n\nThe product as installed usually has no \"flavor\", this is the default.\n\n\nGNU Privacy Guard\n=================\nWhile the update tool does not ship with GPG for legal reasons, it will\ntake advantage of GPG for update checksum and verification if it is\ninstalled on the user's system.  They do not need to know how to use\nGPG, the appropriate public keys are automatically downloaded from a\npublic key server for update verification.\n\nMore information about GNU Privacy Guard can be found at:\nhttp://www.gnupg.org/\n\n\nAdvanced Operation\n==================\nIf you give the update tool the command line argument \"--verbose\", it will\nbe verbose about file transfers and patch application.\n\nIf you give the update tool the command line argument \"--debug\", it will\ngive full debug information about file transfers and internal parsing.\n\nIf you give the update tool the command line argument \"--noselfcheck\", it\nwill skip the normal check for updates for itself before going into normal\noperation.\n\nIf you give the update tool the command line argument '--tmppath\" followed\nby a directory name, it will use that directory as the temporary download\npath for updates and signatures.  This defaults to ~/.loki/loki_update/tmp\n\nIf you give the update tool the command line argument \"--meta_url URL\",\nit will parse the given URL for \"product: URL\" key/value pairs, and use\nthose as the update URLs for the listed products.  URL's may be relative\nfilenames as well as normal internet style URLs.  This makes it easy to\ncreate patch update disks.\n\nOn the final download screen, you have three buttons that give you control\nover the update download sites.  Each update download site is called a\n\"mirror\", and you can choose which site gives you the best download speed.\nThe first button, \"Choose Mirror\", brings up a list of download sites for\nthe current update, and let's you choose which one you want to use.\nThe second button, \"Next Mirror\", automatically connects to the next\navailable download site, continuing the download where it left off,\nif possible.\nThe third button, \"Save Mirror\", saves the current download site to the\nfile ~/.loki/loki_update/preferred_mirror.txt, and will use that site\nfirst for future downloads.\n\nIf you download an update that has a GPG signature, the update tool will\nautomatically try to download the public key for that signature from a\npublic key server.  The list of keyservers that are contacted for public\nkeys is stored in ~/.loki/loki_update/keyservers.txt.  You can add new\nservers to this file, one per line.\n\n\nAuthor\n======\nThe Loki update tool was written by Sam Lantinga at Loki Software, Inc.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficculus%2Floki_update","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficculus%2Floki_update","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficculus%2Floki_update/lists"}