{"id":13705477,"url":"https://github.com/vensko/pint","last_synced_at":"2025-05-05T16:32:47.125Z","repository":{"id":86203480,"uuid":"54421759","full_name":"vensko/pint","owner":"vensko","description":"A single-file command-line package manager for Windows.","archived":false,"fork":false,"pushed_at":"2019-02-17T14:38:16.000Z","size":228,"stargazers_count":38,"open_issues_count":3,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-13T13:38:11.473Z","etag":null,"topics":["command-line-tool","package-manager","portable-apps","powershell","windows"],"latest_commit_sha":null,"homepage":"","language":"Batchfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vensko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-03-21T20:51:22.000Z","updated_at":"2024-06-01T22:56:29.000Z","dependencies_parsed_at":"2023-03-05T13:30:39.784Z","dependency_job_id":null,"html_url":"https://github.com/vensko/pint","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vensko%2Fpint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vensko%2Fpint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vensko%2Fpint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vensko%2Fpint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vensko","download_url":"https://codeload.github.com/vensko/pint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252534012,"owners_count":21763699,"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","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":["command-line-tool","package-manager","portable-apps","powershell","windows"],"created_at":"2024-08-02T22:00:42.179Z","updated_at":"2025-05-05T16:32:46.812Z","avatar_url":"https://github.com/vensko.png","language":"Batchfile","funding_links":[],"categories":["Batchfile"],"sub_categories":[],"readme":"# Pint\nPortable INsTaller - a command line manager of portable applications for Windows, which fits into a single file.  \n[Support forum](https://www.portablefreeware.com/forums/viewtopic.php?f=6\u0026t=22888) at TPFC.\n\nPint is a tool for the people who prefer unpacking over installing. Its primary goal was to provide a way to easily manage a collection of portable apps. With the emergence of portabilizers like [yaP](http://rolandtoth.hu/yaP/), [PortableApps.com Platform](http://portableapps.com/platform/features) and other, focusing solely on the natively portable apps became irrelevant. Pint downloads and unpacks everything it can. At the moment it supports:\n- Zip archives.\n- MSI packages.\n- All formats supported by 7-zip (7z, RAR, NSIS installers, etc.).\n- Inno Setup installers.\n\n# Features\n- Downloads, unpacks and removes applications.\n- Checks for updates and downloads them if available. Unlike Chocolatey and Scoop, Pint's databases do not require constant attention by humans. Pint will automatically detect, download and install an update once it becomes available on a website.\n- Extracts download links from websites using [Xidel](http://www.videlibri.de/xidel.html).\n- Supports RSS and PAD files as link sources.\n- Unpacks various types of archives and installers and upgrades apps, keeping configuration files intact.\n- Apps can be installed into arbitrary subdirectories under *apps*. This allows to keep yaP and PortableApps.com packages up to date.\n- Automatically detects console applications and creates shim files for them in the *shims* directory.\n- Can remember, if a 32-bit or a 64-bit application was installed.\n- Can handle multiple installations of the same application.\n- Detects app versions.\n- Forms a report with installed applications.\n- Can temporarily suppress updates for selected apps.\n- Can update itself.\n- Can use multiple local and remote databases, even choose not to use default ones.\n- Allows to override paths and settings via environment variables.\n\n# What Pint is not\n- **Pint is not a portabilizer**, though it provides ways to manage portable apps more easily.\n- Pint can't install a particular version of an app, only the latest, preferably portable, one. Though, it's often able to detect a version after installation.\n\n# Installation\nTo install Pint, save [pint.cmd](https://github.com/vensko/pint/raw/master/pint.cmd) to a separate directory. By default, Pint will create the following items:\n- **apps** *a directory for your apps*\n- **apps\\\\.shims** *a directory for shims*\n- **dist** *a directory for downloaded archives and installers*\n- **deps** *a directory for Pint's dependencies*\n\nAll paths are customisable, see the [Environment variables](https://github.com/vensko/pint/wiki/Environment-Variables) chapter.\n\n# Requirements\n- Powershell 2.0+\n- .NET Framework 2.0+  \n\nBoth are shipped with Windows 7+.\n\nThere are also hard dependencies, installed automatically when needed:\n- [7-zip](http://www.7-zip.org/) - file archiver supporting a wide range of formats,\n- [Xidel](http://www.videlibri.de/xidel.html) - HTML/XML/JSON data extraction tool,\n- [innoextract](http://constexpr.org/innoextract/) - unpacks installers created by Inno Setup,\n- [shimgen](https://github.com/chocolatey/choco/blob/master/src/chocolatey.resources/tools/shimgen.exe) - shim generator by Chocolatey team.\n\n# Usage\n```\npint \u003ccommand\u003e \u003cparameters\u003e\n```\n\n## Available commands\n\n### `pint self-update`\nSelf-explanatory. Updates Pint to the latest version.\n\n### `pint search [\u003cterm\u003e]`\nIf `\u003cterm\u003e` is empty, yields a full list of app IDs from all databases.  \nIf not, searches the databases for `\u003cterm\u003e`.\n\nExample: `pint search xnview`\n\n### `pint download \u003capp\u003e [\u003capp\u003e]`\n`\u003capp\u003e` is an ID from the `search` list. This downloads one or more apps into **dist** without unpacking them. All downloaded packages are stored with filenames in the format `\u003capp\u003e--\u003carchitecture\u003e--\u003cactual-filename\u003e`.\n\nKeep in mind, that the architecture attribute in Pint never refers to an actual bit count, but rather to a *preferred* value. If a 64-bit version of an app is not available yet and your processor is 64-bit, a 32-bit version will be downloaded and marked as 64. With a 64-bit version released, the app will be automatically upgraded from 32 to 64 bit.\n\nExample: `pint download xnview foobar2000`\n\n### `pint install \u003capp\u003e [\u003capp\u003e]`\nDownloads an archive (or a few) into **dist** and unpacks them into subdirectories with corresponding names under **apps**.\n\nExample: `pint install foobar2000`\n\n### `pint installto \u003capp\u003e \u003cdir\u003e [32|64]`\nInstalls `\u003capp\u003e` into an arbitrary **apps** subdirectory. After installation, the app directory can be renamed or moved anywhere under **apps**, all installations are self-contained. Check `pint l` for a changed `\u003cdir\u003e` value.\n\nOptionally, preferred bit count can be set with the third parameter (useful, if you need to force installation of a 32-bit version in a 64-bit system).\n\nExample: `pint installto subtitle-workshop \"Subtitle Workshop\"`  \nFor more examples, see [this chapter](#custom-install-destinations-installto).\n\n### `pint list`\nShows a full list of installed apps with some metadata.\n\n### `pint l`\nLists only directories without retrieving metadata.  \nIf the `pint list` table becomes too large, this may be a faster way to check directory names.\n\n### `pint reinstall \u003cdir\u003e [\u003cdir\u003e]`\nForces reinstallation of the apps.\n\nExample: `pint reinstall foobar2000 \"Subtitle Workshop\"`\n\n### `pint remove \u003cdir\u003e [\u003cdir\u003e]`\nRemoves the subdirectories. This is fully equivalent to manual deletion of the folders.\n\nExample: `pint remove \"Subtitle Workshop\"`\n\n### `pint purge \u003cdir\u003e [\u003cdir\u003e]`\nRemoves subdirectories AND corresponding archives from **dist**.\n\nExample: `pint purge foobar2000 1by1`\n\n### `pint cleanup`\nDeletes all downloaded installers and archives from **dist**.\n\n### `pint outdated [\u003cdir\u003e [\u003cdir\u003e]]`\nChecks for updates for the apps. With parameters omitted, Pint will check all installed apps.\n\nExample: `pint outdated 7-zip`\n\n### `pint upgrade [\u003cdir\u003e [\u003cdir\u003e]]`\nChecks for updates AND installs them if available. Same here, without parameters this will try to upgrade everything.\n\nExample: `pint upgrade foobar2000 1by1 7-zip`\n\n### `pint forget \u003cdir\u003e [\u003cdir\u003e]`\nPint never touches subdirectories, where it hadn't installed anything previously. Subdirectories with manually installed apps will simply be ignored. This command removes Pint's metadata from the subdirectories. To make them manageable again, use `installto`.\n\nExample: `pint forget 7-zip`\n\n### `pint pin \u003cdir\u003e [\u003cdir\u003e]`\nKeeps Pint's metadata yet suppresses automatic updates for the apps.\n\nExample: `pint pin 7-zip`\n\n### `pint unpin \u003cdir\u003e [\u003cdir\u003e]`\nAllows automatic updates (undoes `pin`).\n\nExample: `pint unpin 7-zip`\n\n### `pint shims`\nRemoves all shims files and recreates them.\n\n### `pint test [\u003cfile.ini\u003e|\u003capp\u003e] [32|64]`\nTests given file, URL or app ID. Verifies remote file availability, content type and reported content length.\n\nExamples:  \n`pint test \"D:\\my-packages.ini\"`  \n`pint test foobar2000`\n\n### `pint info \u003capp\u003e`\nShow package configuration.\n\n### `pint unpack \u003cfile\u003e \u003cdir\u003e`\nUnpacks a file to a specified directory.\n\nExample: `pint unpack \"D:\\foobar2000.zip\" \"D:\\foobar2000\"`\n\n# Custom install destinations (installto)\nPint deals with app identifiers only during their download and/or installation. After that, all commands refer to actual subdirectories in **apps**, e.g.:\n- apps\\\\**firefox**\n- apps\\\\**foobar2000**\n\nTo keep things simple, you may use only the `install` command. This way, database identifiers and subdirectories will always be the same. But if you prefer storing your browser in *apps\\Mozilla Firefox* instead of *apps\\firefox*, this can be done with `installto`:\n```\npint installto firefox \"Mozilla Firefox\"\n```\nFF will be installed into\n- apps\\\\**Mozilla Firefox**\n\nFrom this point, it will have to be referred to as \"Mozilla Firefox\":\n```\npint outdated \"Mozilla Firefox\"\npint remove \"Mozilla Firefox\"\n```\n\nFor another example, consider a yaP setup with the directory structure:\n- apps\\WinRAR\\WinRARPortable.exe (yaP executable)\n- apps\\WinRAR\\x86\\\n- apps\\WinRAR\\x64\\  \n\nTo be able to manage this setup, run this:\n```\npint installto winrar WinRAR\\x86 32\npint installto winrar WinRAR\\x64 64\n```\nPint will handle both copies and update them using a correct archive.\nAs can be seen via the `list` command, they'll be referred to as *WinRAR\\x86* and *WinRAR\\x64* respectively:\n```\npint pin WinRAR\\x86\npint upgrade WinRAR\\x64\n```\n\nAbsolute paths outside **apps** are allowed. They will not be visible in `list` and not automatically included by `upgrade` or `outdated`, because there is no database tracking their locations. To manage them, you'll always have to use absolute paths, e.g.\n```\npint installto imagine \"E:\\Total Commander\\Plugins\\Imagine\"\npint upgrade \"E:\\Total Commander\\Plugins\\Imagine\"\n```\n\n# More\n- [Environment Variables](https://github.com/vensko/pint/wiki/Environment-Variables)\n- [Database: How To](https://github.com/vensko/pint/wiki/Database-How-To)\n- [Database: Repository](https://github.com/vensko/pint-packages)\n\n# Alternatives\n- [Scoop](https://github.com/lukesampson/scoop)\n- [Chocolatey](https://github.com/chocolatey/choco)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvensko%2Fpint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvensko%2Fpint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvensko%2Fpint/lists"}