Version 0.1.3 Alpha
guinget Version 0.1.3 Alpha Changelog
Released on 12/1/2020 (MM/DD/YYYY).
Took a half a year, but you can now bulk-install packages! Considering the previous update was three months ago, there are quite a few changes in this version. Here are some highlights:
- [SECURITY]: An extra
\
is added to the end of the extraction path for security reasons when extracting sources. This also applies toupdate-manifests.bat
version 2020.10-1. Shouldn't be a concern right now, but it could be when third-party sources are used. - You can now do things like update winget's sources (if it doesn't do it automatically) and edit winget's settings without typing anything into a command-line. Editing winget's settings for the administrator account you use when elevating winget is also available.
- A new checkbox in the
Apply changes
window you can use to have winget run elevated when installing packages, something rather important in case winget doesn't automatically elevate the installer like it's supposed to. - Now you can quickly get back to the package list after a search by pressing
Ctrl+F
again while the search box is in focus. - Package
Actions
are no longer in a submenu, thus making them quicker to use. - You can show a package in winget using the
Show in winget
button, available in the package context menu and theSelected packages
menu. This takes into account the version you're looking at right then, but maybe it would be helpful to add an option to show the latest version according to winget. - Any of the options that can be set anywhere in the UI can also be set in the
Options
window, now accessible fromTools>Options...
in addition to thePackage list>Search options...
shortcut. - Fixed winget not knowing which source to use when installing a package available in multiple sources. This was only an issue when the Store source was on, and it affected Windows Terminal, as one example. If the source name ever changes, it can be changed in the
Experimental options
as described in the main part of the changelog. - Documentation has been greatly improved, and the website is now a lot closer to being a recommended documentation source.
Now that the highlights are done, here's the rest of the notes:
Some packages like CrystalDiskMark and LibreOffice may require administrative permissions to install, so you'll have to check the Elevate winget (UAC)
checkbox in the Apply changes
window before clicking Confirm changes
. Please do not run guinget 0.1.3 or newer as an administrator; everything that requires running winget as an administrator that's available in guinget is covered in this version. Windows 10 version 2004 seems to have issues with running winget elevated, so it may be a good idea to just rely on winget automatically elevating installers if the checkbox doesn't work. If that doesn't work, then winget must be broken, or something. I've run into that issue and can't seem to fix winget, so I'm not sure if there really is a fix, though I haven't tried resetting App Installer.
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.3-alpha.exe", which is the installer attached to this release:
A741EAD690CB2C8EF28B9A5640F7DED6FDB1EC9FB4F6D4BBAB519CBBE4BD484A
SHA-256 sum for "guinget.exe" in the archive:
51C15C3CDC76FB34804CE5BBE24DA471530EA4655A968922ADE42DA1E26CA860
SHA-256 sum for "lib\libguinget.dll" in the archive:
E30396C6CE3D84F1746F9C54E72CAD3DAE5B03C63842E7922922680AD6208210
SHA-256 sum for "lib\libscrollswitchtabs.dll" in the archive:
3F2741B885A3BDD03422E0346542BF4D13384A5287FD3BAF94D05C964ABECB92
SHA-256 sum for "update-manifests.bat" in the archive:
633D1BCDB8663C26EE122A3FFB3E3DDC7356775D2F96EF3AF993AA87ED55E2F7
SHA-256 sum for "lib\YamlDotNet.dll" in the archive:
D71FD1DBB96AD0BB78EB40F79228B2A4D1DF045C33FA7A5F9FDE93D433FD700A
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
- Bulk package installs
- For now, they're all passed to winget all at once, but eventually there may be a graphical progress indicator.
- You can still install one package at a time by double-clicking or pressing
Enter
on the one you want to install. - Only packages marked as "Ready" will be bulk-installed, in case there were others that were installed solo in the current session.
- To make it easier to bulk-install packages,
Confirm changes
is now focused when opening theApply changes
window. - Tip: If you run into an issue with winget, you can close and reopen the
Apply changes
window to reset package status and try again.
- New keyboard shortcuts
Ctrl+I
to mark packages for installation (not the best since it looks like a lowercase "L", but there isn't really anything else that would make sense).Ctrl+D
to mark packages to be ignored (Do nothing
).Ctrl+H
to open theApply changes
window.
- Pressing
Ctrl+F
when the search box is focused will send focus back to the package list. - Update winget sources
- If winget doesn't automatically update its sources, you can now use the
Package list>Update winget sources
menu item to have it update its sources without having to typewinget source update
manually. - For some reason as mentioned in a few other places in this changelog, winget doesn't properly update its sources if it's running elevated. As a result, please don't run guinget version 0.1.3 and above as an administrator; elevating winget is handled automatically via an option described below and as a separate menu item if you want to edit winget settings as an administrator, also described below.
- An elevated winget session does pick up the source updates done from a non-elevated user account if you have a standard/limited account you usually use and a separate one for administrative activity, so it should work fine if you use that menu item then install a package with winget elevated by guinget.
- If winget doesn't automatically update its sources, you can now use the
- Edit winget settings
- Instead of having to type
winget settings
every time you want to edit its settings, you can just useTools>Edit winget settings
. - In case you wish to edit the settings used by an administrator account you elevate winget with, use
Tools>Edit winget settings as admin (UAC)
. - If the default JSON file type editor differs between your limited account and the administrator account, the settings file will open in different programs. Changing the default when logged into the other account will change it in this situation as well.
- Instead of having to type
- Elevate winget
- Sometimes winget won't automatically elevate package installers, but now you can force it to with the
Elevate winget (UAC)
checkbox in theApply changes
window. - MSIX packages like Windows Terminal might not install properly if your account used for administrative actions is logged out at the moment.
- Windows 10 version 2004 might have issues with running winget elevated, so hopefully winget will elevate the installer itself. If it doesn't, then it's broken and there's not really anything you can do based on my experience.
- The account used for administrative actions must have winget installed, so what you'll probably have to do is this:
- Log into your administrator account.
- Download and install winget in your administrator account.
- Log back into your regular account.
- Download and install winget in your regular account (if you don't, it won't be able to run for some reason).
- Make sure winget still runs in both an elevated and non-elevated CMD window (just
winget
should be enough). - Update winget's sources, perhaps using
Package list>Update winget sources
, or manually type it in CMD. For some reason, winget doesn't update its sources if it's running elevated from a non-administrator account. - Now you can use the
Elevate winget (UAC)
checkbox.
- Edited excerpt from the usage guide: Please don't run guinget as administrator in version 0.1.3 or higher, as winget seems to have an issue updating its sources when running elevated (which is what guinget does if guinget itself is elevated). If you need to install a package with winget elevated, please use the
Elevate winget (UAC)
checkbox in theApply changes
window as described above. Be sure to use thePackage list>Update winget sources
menu item described below if winget complains that it can't find that package/package version, then try installing that package again.
- Sometimes winget won't automatically elevate package installers, but now you can force it to with the
- When one package is selected, you can show it in winget in any of these ways:
Show in winget
from the package context menuSelected packages>Show in winget
Ctrl+W
- Currently, this sends the version along with the package ID, but it may be useful to add an option to send only the package ID.
- If no packages are selected or loaded, this button may look available, but it's not and clicking it will do nothing. I just didn't get around to blocking it in that situation yet.
- Instead of only showing the package details for the first package you select, now each package shows its details as you select them.
- If this doesn't work as expected or you prefer the old method, you can uncheck
Show last-selected package details when selecting multiple packages
underTools>Options...>Package Details
. - Please note that if you're using Shift+click and the selection goes above the first-selected package, then the first-selected package's details will be shown instead of the most-recently selected one like it's supposed to. More details.
- If this doesn't work as expected or you prefer the old method, you can uncheck
- The
Apply changes
window is now wider to accommodate theElevate winget (UAC)
option. - More experimental options have been added, and you can use them by unchecking
Hide unfinished controls and experimental stuff
on theTools>Options...>Experimental
tab, then reopening the tab. Please note that they're not fully tested and may cause issues.- Hide unfinished controls and experimental stuff
- Name in config file:
HideUnfinishedControls
- Boolean; defaults to
True
/checked - This is listed here because it had a checkbox added to the
Options
window, but it's been in the config file in every version. - May require application restart to take full effect. The rest of these options still apply even if this is on.
- If unchecked, these options and other unfinished controls will remain visible even after restarting or upgrading guinget.
- Name in config file:
- Load only the latest version of each package
- Name in config file:
OnlyDisplayLatestPackageVersion
- Boolean; defaults to
False
/unchecked - Some packages may display a version number that's not really the latest version. Not sure how to fix this at the moment. Requires loading from the community database checkbox to be checked.
- Name in config file:
- Search when typing
- Name in config file:
SearchWhenTyping
- Boolean; defaults to
False
/unchecked - Instead of requiring you to press
Enter
or clickSearch
on the toolbar, you can just wait a bit (325 milliseconds by default) for search to run automatically. This feature would probably have been a regular, non-experimental one had it been implemented sooner and not within a week of the expected release phase. - Wait time (ms)
- Name in config file:
SearchWhenTypingTimerInterval
- Integer; defaults to
325
- This is how long it'll wait after you finish typing before running a search (in milliseconds).
- Minimum value is
1
, and maximum value is9999
.
- Name in config file:
- Name in config file:
- HiDPI Mode
- Name in config file:
HiDPIMode
- Boolean; defaults to
False
/unchecked - For now, only doubles the height of items in the package list.
- May eventually be expanded to cover the rest of the controls that are difficult to use on HiDPI devices.
- Name in config file:
- Default source name
- Name in config file:
DefaultSourceName
- String; defaults to
"winget"
- In case the default source for winget is renamed, you can change it so guinget still works. This is used when passing packages to winget to do things like show or install them, because it gets confused when a package is available in multiple sources and there are multiple sources active. One affected package is Windows Terminal.
- Name in config file:
- Hide unfinished controls and experimental stuff
- Not really a new feature since it wasn't noticeably lacking before, but you can use the mouse scroll wheel to switch tabs in the
Options
window. This is provided by libscrollswitchtabs. Help>How to use guinget
is available if you ever have trouble, and it goes to the usage guide. You can useF1
for it, too.- More copyright info for each library is displayed in the
About
window now.
Fixed
- [SECURITY]: An extra
\
is added to the end of the extraction path for security reasons when extracting sources. This also applies toupdate-manifests.bat
version 2020.10-1. Shouldn't be a concern right now, but it could be when third-party sources are used. - If multiple sources are used (such as both the default/"community" one and the Store), winget will get confused if you try to install a package available in both, even if you specify the version number. This is no longer the case in guinget as the default source name is now passed to winget. You can change the
DefaultSourceName
in the config file (or underTools>Options...>Experimental
, if hidden controls are shown) in case the default source's name changes in the future, but it's currentlywinget
. (issue #70) - Double-clicking or pressing
Enter
while the search terms list was focused but nothing was selected (such as after an app restart or after clearing all the search terms) would cause a mild exception. This is fixed now. - I messed up the checkbox state when you click the Defaults button in the Options window in 0.1.2, but it's fixed now. (issue #47)
- guinget 0.1.2 and 0.1.1 appear to ship with the same version of libguinget (0.1.1), even though they don't. This is now fixed for version 0.1.3. (issue #45)
- If the database is built incorrectly and ends up not giving the correct details for some packages, guinget will no longer crash if it can't find the manifest and ends up trying to load a path with
Nothing
.- The database was broken just after 1 AM EDT on October 8, 2020, so this is to prevent future crashes, even if the database is broken again.
Changed
- Package
Actions
have been moved out of their submenu so they're easier to access now:Action: Install
instead ofAction>Install
Action: Do nothing
instead ofAction>Do nothing
- The
Options
window now contains everything that can be configured anywhere else in the UI.- You can get to this window from
Tools>Options...
, but theSearch options...
shortcut is still available. - As a result of containing every available option, the
Show sidebar
checkbox was moved to theLayout
tab as it makes more sense there.
- You can get to this window from
- Exact matches are now the default when using
Selected packages>Search for package ID
, but you can change it back by uncheckingUse exact match for selected package ID search
inTools>Options...>Search
.- Only one package can be selected at a time to use this button, otherwise it'll be unavailable. This is how it was intended to be used before, but I didn't make it like that.
- If no packages are selected or loaded, this button may look available, but clicking it won't do anything. Didn't get around to making it unavailable yet.
- Since this relies on using double-quotes ("") in the search box, you can surround your search term with double-quotes if you want to do an exact search without using the menu item, even if the option to use exact matches is off.
- Searches check the entire package ID when surrounded by double-quotes, rather than checking if the package ID simply contains the search term.
- If the search term doesn't begin and end with double-quotes, exact matches won't be performed.
- libguinget: Manifest paths are now added to a
List(Of String)
instead of aString
that's manually split with?
. - libguinget:
GetPackageDetailsTableFromSqliteDB()
returns a new column, that being what it thinks is the latest version of a package. - Per-user installation is now available in the installer as a result of winget eventually requiring it. If you've already installed for the entire system, you'll have uninstall and reinstall to get the option to install as per-user.
- YamlDotNet has been updated to version 9.1.0, and Microsoft.Data.Sqlite has been updated to version 5.0.0.
- Documentation has been updated. This includes up-to-date info and better readability in the readme, an almost entirely rewritten usage guide, and updates to other documentation files for the latest version.
Removed
- Nothing in this version as far as I can tell.
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.