Version 0.1.2 Alpha
guinget Version 0.1.2 Alpha Changelog
Released on 9/7/2020 (MM/DD/YYYY).
There may be times when you want to retain search terms for later use in the same session, so this update introduces the sidebar. In the future, this sidebar may include other lists just like Synaptic, but it's just search terms for now. Double-clicking or pressing Enter
on a search term in this list will start a search with it. You can clear search terms by right-clicking in the list and choosing either Clear selected search term
or Clear all search terms
.
Please be aware that it may take several more times of pressing Tab
to get back to the package list from the search bar when the sidebar is showing.
If you want to close the sidebar, you can click the X
button in its top-right corner; uncheck View>Sidebar
; or uncheck the Show sidebar
checkbox in the Options
window, which you can get to from Package list>Search options...
, then click OK
.
This update also fixes the bug where the package context menu doesn't show up where expected the first time it's opened every session.
Some packages like CrystalDiskMark and LibreOffice may require administrative permissions to install, so you'll have to run guinget as an administrator.
Please be sure to read the Readme included with this version of guinget or online as it has important info. Also refer to the System Requirements.
If you are reading this in Notepad or another text editor, it displays best in Word Wrap view. Click on Format>Word Wrap on the top bar. Notepad++ users will find it under View>Word Wrap. Word Wrap is automatically done if viewing on GitHub or on the website.
Hashes
MD5 checksums/hashes are not used for guinget as they are weaker than SHA-256. More details, though they're not as relevant to guinget:
You can use Windows PowerShell to confirm the hash of the main guinget EXE file by running
Get-FileHash .\guinget.exe -Algorithm SHA256
in the folder you extracted the archive to and comparing the output to my sums listed below. HowToGeek has a nice article on this, but the Windows section is a bit further down on the page.
The PowerShell method can be used for all files listed below, though you'll have to switch out the filenames.
SHA-256 sum for "guinget_v0.1.2-alpha.exe", which is the installer attached to this release:
459C86F3FBC1C17BF8C0138A496875B580315258EF90742027F420480825691F
SHA-256 sum for "guinget.exe" in the archive:
6D1317FB0227D8D803684664DE20A7B2A052C7A165703B411E0ADD7630C85466
SHA-256 sum for "lib\libguinget.dll" in the archive:
19BF60E59EC5183529D5857C39D53F864C200C85CB861B9ADA721B9160788D16
SHA-256 sum for "update-manifests.bat" in the archive:
AFA421669D4856FB9136656B97CD2098478B1FE67AD5CB2326DA5A8BDA4BD36A
SHA-256 sum for "lib\YamlDotNet.dll" in the archive:
8838A6EC1F2DED411D7C72CAA5DA2F524CFF08145850D2496A758F072FC96F67
The rest of the libraries in the "lib" folder are from Microsoft.Data.Sqlite and I don't want to list them all:
https://www.nuget.org/packages/Microsoft.Data.Sqlite/
Added
- Search sidebar
- Displays all search terms from the current session, like Synaptic
- Double-clicking or pressing
Enter
on one of these terms (aside fromAll
, at the top) will start a search for it - Double-clicking or pressing
Enter
onAll
at the top of the list will take you back to an unfiltered list - The list can be cleared with the items in its context menu
Clear selected search term
clears whatever is currently selected in the listClear all search terms
clears everything- Both options leave the
All
entry
- If you don't want to use the sidebar, you can hide it in three ways:
- Clicking the
X
button in the top-right corner next to the page dropdown - Unchecking
View>Sidebar
- Unchecking the
Show sidebar
checkbox in theOptions
window underPackage list>Search options...
, and clickingOK
.
- Clicking the
- Resizable using the splitter line between it and the package list area, although the size doesn't persist between sessions. May be a good idea to allow this at some point.
- Please be aware that it may take several more times of pressing
Tab
to get back to the package list from the search bar when the sidebar is showing.
Escape
/Esc
key clears the search box when focused- An
Options
window has been added.- For now, this only has search-related options, but more stuff will be here in a future version. You can get to this window from
Package list>Search options...
or fromSearch options...
in theSearch
button dropdown on the toolbar. - You can reset the values to default using the
Defaults
button in the bottom-left corner of the window. These settings won't be applied until clickingOK
.
- For now, this only has search-related options, but more stuff will be here in a future version. You can get to this window from
- Search for all packages containing a specific ID using
Search for last-selected ID
in the package context menu or from theSelected packages
menu - Searches are automatically re-run after a cache update if there's something in the search box. This can be turned off by opening
Package list>Search options...
, uncheckingRe-run search after cache update
, then clickingOK
. - The setting for
Install interactively (-i)
is automatically migrated if using the installer version, as migrating settings relies on being installed to the same folder as the previous version. - Some experimental features have been added, and you can use them by changing the config file
Use7zipForExtraction
: Boolean; defaults toFalse
- Package manifest ZIP files will be extracted using 7-Zip instead of the built-in .NET extractor. This may be a lot faster, although it's neither fully tested nor is it as complete as the code using the .NET extractor.
- If 7-Zip can't be found in what's set in
PathTo7zip
, extraction will fail.
PathTo7zip
: String; defaults to"C:\Program Files\7-Zip\7z.exe"
- Specifies the path of the 7-Zip CLI binary for use when using 7-Zip for extraction.
UseRobocopyForCopying
: Boolean; defaults toFalse
- Robocopy will be used for copying manifests into the proper folder instead of the built-in .NET file copy method. This may be a lot faster, although it's neither fully implemented nor is it fully tested.
- During testing on my laptop, using 7-Zip and Robocopy reduced the cache updating time from 1 minute 40 seconds to about 1 minute 4 seconds.
- Closing guinget before the cache update is completed if using Robocopy and/or 7-Zip will leave those programs open and you'll have to close them manually. This should be changed in a future version to automatically close them when closing guinget.
LoadFromSqliteDb
: Boolean; defaults toFalse
- More details
- The package list will be loaded using the same SQLite database as
winget
uses by default, located at https://winget.azureedge.net/cache/source.msix. This still relies on the manifests to get the package descriptions as those aren't directly available in the database, though. - The goal is to allow the database URL to be changed, but it's hardcoded for now. May be a good idea to allow the manifest location to be changed eventually, too.
- Each package version is listed as a separate entry even when loading from the database, though using the database will make sure only packages
winget
can display right now are shown. - Some packages may be in a different order compared to loading all the manifests at once, but this shouldn't be much of an issue, and clicking the
Package
column header should sort them as expected. - Loading the descriptions may still take a bit as we have to take the package ID and version number and figure out where its manifest is, instead of just grabbing all the manifests and loading from them. In case we can't find a package's manifest, we'll just look through all the manifests until we find the right one.
- Figuring out where each package's manifest is stored is done in three ways:
- If replacing all instances of "." in the package ID and appending the package version to the end of the path along with ".yaml" finds a file that exists, then that's great and we'll use that file. This is the fastest method.
- If that doesn't work, then we only replace the first instance of the "." in the ID and try again with the version thing. This should be fast, too.
- If neither of those work, then we fall back to looking for manifests with the package's version number in their filename, opening each file match we find, checking the package ID in the file, and if it's a match, we use it. Otherwise we keep going until finding the manifest. At the moment, this doesn't check to make sure that a file exists, so it may crash if it can't find a matching manifest. The Visual Studio profiler says there's a lot of garbage collection going on as well, so this will probably need to be changed to something like Using to keep automatic garbage collection to a minimum.
- Figuring out where each package's manifest is stored is done in three ways:
- Both the zip file and installer for version 0.1.2 will be larger than version 0.1.1 due to the extra libraries that are used when reading the SQLite database.
- You may need to manually delete the package list cache located in
%AppData%\winget-frontends\source
before using the database as it may get confused if the manifest directory (winget-pkgs
) exists but the database one (winget-db
) doesn't. This'll be changed when loading from the database is officially supported.
Fixed
- Sometimes the package context menu isn't shown where expected. (issue #14)
- If a manifest cannot be found after being loaded into the package list, guinget will no longer try to load the manifest.
Changed
- Both guinget and libguinget have been upgraded to use .NET Framework 4.8, primarily to reduce the number of libraries copied to the bin directory when using Microsoft.Data.Sqlite. Users may need to update to .NET Framework 4.8 for guinget/libguinget version 0.1.2 to work on their systems.
- Microsoft has a table of system requirements available, but to make things simple, versions of Windows prior to Windows 10 1903 (aside from Windows 8.0, which doesn't appear on that list for .NET Framework 4.8 so I assume it's not supported anymore) will have to update to .NET Framework 4.8.
- Disk space requirements increased from 2.5 GB to 4.5 GB in .NET Framework 4.8, so guinget's disk space requirements are going up as well with a note that it's based on .NET Framework's requirements.
- Due to using Microsoft.Data.Sqlite for database reading (if set), there are now several more libraries in the
bin
folder, so all the libraries have been moved to\lib
. This may cause issues for people upgrading from 0.1.1 or earlier to 0.1.2 without using the installer, so it's recommended to delete the files in there and copy them all from the ZIP file. This will remove any changes made to the config file if they were done in the one next to the app. The installer will deletelibguinget
andYamlDotNet
if present when upgrading. - The header of the currently-selected column is now highlighted due to something Microsoft changed in .Net Framework 4.8.
- More detail has been added to some error messages when the manifest zip file can't be extracted or copied for some reason.
- YamlDotNet has been updated to version 8.1.2.
Package list>Selected package
has been moved to its own menu,Selected packages
. This helps make both menus less cluttered.- If there's something in the search box, it'll appear in the status bar as "Searching for (search term)...". Otherwise it'll just say "Searching..."
Package list>Search
has been renamed toPackage list>Focus search box
.- The main window has been resized to be a little bigger, as the sidebar made it feel a little small.
- The cache update progress window's progress bar animation speed has been sped up from 100 to 63 so that it feels like it goes faster even though it doesn't; this is a psychological thing.
- Uninstaller now mentions the
winget-frontends
folder after uninstallation. This was a last-minute change in 0.1.1's installer, but it's also in this version. - Instead of displaying a hardcoded version number, the About window now display's the version number from the Assembly Info.
- There's no longer a version number displayed in the main window's titlebar.
- Documentation has been updated. This includes new screenshots, better organization in the readme, and updates to other documentation files for the latest version.
Removed
- The non-split Search button on the toolbar has been deleted since the split one is now functional with the
Search options...
button in its dropdown. - No installer startup message is displayed for the default installer anymore.
Deprecation notices
update-manifests.bat
is deprecated. Its removal will be done in stages to slowly transition to a world that no longer relies onupdate-manifests.bat
for any scenario:- For now it'll stay in the package, but be unused by default. <-- You Are Here
- Eventually the version in the package will be changed to be a simple script that tells you where to download the main script.
- After a while it'll be fully removed from the package.
- A while after that support for it will be fully removed from guinget. It's expected that support will be fully removed by the time guinget (and winget, but it may take longer for guinget to gain that feature) supports multiple sources, if not in the same version.
- It may be possible that it'll go from being supported in a way that requires it to be enabled manually to being removed from the package, or having support be removed completely, all at once.
- Since the code to get details from winget is deprecated, it was commented out in version 0.1 alpha. This code may continue to exist in this state as an example for how to get info from winget.