Version 0.2 Alpha
guinget Version 0.2 Alpha Changelog
Released on 3/10/2021 (MM/DD/YYYY).
There are so many changes in this version that make guinget far more capable than it had ever been before (partially thanks to winget itself), so much so that I decided it deserved to get a +0.1 version bump. Changes that were meant for v0.2 have been delayed to v0.3, but it shouldn't be that big of a problem since a lot of these changes were desperately needed.
Please note: Import and export aren't fully tested, so they may need to be fixed in a future version once they're both implemented in winget. I haven't tested import yet even though it's in the latest version of winget itself. This version won't be pushed to winget since it lacks support for the new manifest format, which must be fixed immediately and would be a waste of time to have it go through the steps.
Some packages like CrystalDiskMark and LibreOffice may require administrative permissions to install, so you'll have to check the Elevate winget with UAC checkbox in the Options: Apply Changes mini-form (accessible from Apply changes window>Options... linklabel) 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 now. Some Windows 10 installations seem to have issues with running winget elevated from a non-Administrator account, so it may be a good idea to run winget from within an Administrator account and elevate using the checkbox if necessary. 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.
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.2-alpha.exe", which is the installer attached to this release:
680ABC803E0D41ED45245AF723AAA92314B57B7065733C7C7B45BF823E5BF810
SHA-256 sum for "guinget.exe" in the archive:
24398F2E496AAD578881C1362D35F9BDC19FE58794FE348E5BD832A7DC58B8CE
SHA-256 sum for "lib\libguinget.dll" in the archive:
46A29795596A87FB6799E427149EC770A29B9C227796B3747DCEA717F69738EF
SHA-256 sum for "lib\libscrollswitchtabs.dll" in the archive:
3F2741B885A3BDD03422E0346542BF4D13384A5287FD3BAF94D05C964ABECB92
SHA-256 sum for "update-manifests.bat" in the archive:
522392D92BC5E6AEE85DADCBB2D4A3F6A84BD3163A42DC72B7ABDCC7CA37CDE6
SHA-256 sum for "lib\YamlDotNet.dll" in the archive:
23710F6413E488866B37E82C61943B1381126FBE52340B827B53D68C2B33112C
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
- Support for uninstall and upgrade
UninstallandUpgradeare available in the package context menu,Selected packagesmenu, and theActioncolumn dropdowns.- Both may require experimental winget features to be available and on for them to work.
- You can use
Ctrl+Uto mark a package for uninstallation andCtrl+Pto mark a package for upgrade. - Unfortunately, there were no other characters that fit better for the accelerator than
pinupgrade.
- Filtering the
ActioncolumnActioncolumn filters are available from the sidebar dropdown by changing it fromSearch termstoAction.- Double-clicking or pressing
Enteron any of them works almost like theSearch termslist, except nothing gets sent to the search box. - Unlike the
Search termslist, you can't clear this listbox. - From PR #93: Now you can filter packages based on how they're marked, like Synaptic. You get to the
Actionfilters by opening the sidebar dropdown and choosingAction. From there you can double-click or pressEnteron the items in the listbox to filter as desired, or useAllfor an unfiltered list. As these filters use the same code as the search box, it says "Searching for (filter)..." in the statusbar even though it's looking in theActioncolumn. Additionally, if it's set to search after a cache update, a regular search will be performed if there's text in the search box. This regular search will override any other filter since it uses the same core code.
- Importing and exporting packages
- These features rely on
winget importandwinget exportand require the relevant experimental features to be on. - You can use them from
File>Import packages...andFile>Export packages..., respectively. - Keyboard shortcuts are available for both.
Import packages...:Ctrl+OExport packages...:Ctrl+S- Keyboard shortcuts are subject to change if better ones are suggested.
JSONis the main file type in the browse dialogs, but you can show all files if you need to.- Choosing a file in the import dialog will run
winget import (your-filepath-here), and saving a file in the export dialog will runwinget export (your-filepath-here). - The next version will add options to choose which (if any) import and export flags will be sent to winget.
- Had a tough time figuring out what accelerators to set, so if anyone suggests better ones than
mforImportandoforExport, they might be changed as long as they don't conflict with any other items in theFilemenu.
- These features rely on
- Viewing available upgrades
View>Available upgrades...will open a CMD window and runwinget upgradeto display a list. Eventually something better than CMD may be used so text doesn't disappear if it's long.- Requires the relevant experimental features to be available and on in winget.
- Viewing installed packages
View>Installed packages...will open theApps & featurespage in theSettingsapp by default.- If the
Settingsapp can't be run, we'll try to runPrograms and FeaturesinControl Panelinstead. - You can change what opens from this menuitem by going to
Tools>Options...>Apps and UIs, and selecting something in the dropdown. Available choices:Settings app: Apps & features (default)CMD: winget listControl Panel: Programs and Features
- Using
winget listrequires the relevant experimental feature to be on in winget, if it's not already considered stable.
- Deleting temp files after cache update
- This is what
update-manifests.batoffered the user, and now it's available in guinget by default. - You can turn it off by unchecking
Delete temp files after cache updatefromTools>Options...>Refresh Cache, and clickingOK. - If you're an app developer who's using libguinget, simply set
PackageListTools.DeleteTempDirsAfterCacheUpdate = Truebefore running the cache update to use this. - Temporary files are always deleted before refreshing the cache.
- This is what
- Specify version number when installing, upgrading, and uninstalling
- By default, version numbers are passed to winget when installing, but not when upgrading or uninstalling.
- For uninstallation, this is to ensure something doesn't get messed up when the "wrong" version is uninstalled.
- It's expected that you'll want to upgrade to the latest version, so it's also not passed to winget on upgrade.
- You can change these from
Tools>Options...>Apply Changesand the mini-form in theApply changeswindow accessible from theOptions...linklabel in the bottom-left corner as mentioned below. - From the
Optionswindow: Not specifying a version number will just use the latest version according to winget. You may want to use this when installing, but maybe not when upgrading or uninstalling as that may cause issues.
- Reset package status in the
Apply changeswindow- Right-click on a package and choose
Reset status for selected packageto change itsCurrent statusback toReadyif you have trouble with winget and need to change your settings but don't want to close and reopen theApply changeswindow. - You can also reset the status for all packages using
Reset status for all packages.
- Right-click on a package and choose
- Skip certain packages
- In case there's a package you don't want to have it try to install/uninstall/upgrade again after resetting status or forgot to unmark before opening the
Apply changeswindow with other packages marked, you can useSkip selected packageto set a selected package'sCurrent statustoSkipso you can use theConfirm changesbutton instead of having to go one-by-one. - Any packages with their
Current statusset toSkipwill be ignored until resetting that package's status or closing and re-opening theApply changeswindow.
- In case there's a package you don't want to have it try to install/uninstall/upgrade again after resetting status or forgot to unmark before opening the
- Mini-form for
Apply changes-related options- Both of the checkboxes that were on the
Apply changeswindow were moved into a new mini-form, accessible from theOptions...linklabel in the bottom-left corner of theApply changeswindow. - This mini-form duplicates everything in the full
Optionswindow'sApply Changestab, with some wording changes here and there. - When the
Apply changeswindow is moved around, this one stays "glued" to just below the bottom-left corner. - Maximizing the
Apply changeswindow moves this one to the bottom-left corner just above theOptions...linklabel. - Any changes in this mini-form will be applied as soon as the control for that setting is changed.
- If things get messed up by accident, you can use the
Defaultsbutton in the bottom-left corner to reset the settings in this form to default. - The
Closebutton just closes the form and isn't a cancel button, unlike the fullOptionswindow. - Resizing this window will give you scrollbars, though the buttons at the bottom appear to cover the checkboxes and other controls. Might be a good idea to do a table layout panel and put the controls and buttons in separate panels.
- Checking the
Automatically open this window when the Apply Changes window is openedcheckbox will, as it says, open the mini-form every timeApply changesis opened. I notice that the checkbox text is different to theApply changeswindow text, so I'll eventually change theApply changeswindow text to be properly capitalized as a window title. - Since it may be difficult to see all the controls in the mini-form, it may eventually be merged into a sidebar for the
Apply changeswindow. Didn't really want to do that after getting everything working in this version as late as it was implemented. - Known issue: If the
Apply changeswindow is too low when you open the mini-form, the mini-form will be offscreen. (issue #101)
- Both of the checkboxes that were on the
- Buttons to delete cache files guinget uses
- You no longer have to manually delete guinget's cache in case things break. Instead, you can use the
Delete cache files in Local AppDatabutton fromTools>Options...>Maintenance.- If you're an app developer using libguinget, you can call it with this:
libguinget.PackageListTools.DeleteCacheFilesInRoaming(Me, Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),"Delete cache files in Local AppData")
- Older versions of guinget used
Roaminginstead ofLocal, so you can also delete that cache using theDelete cache files in Roamingbutton from the same tab as the other button.- Developers using libguinget can use this by calling
libguinget.PackageListTools.DeleteCacheFilesInRoaming(Me, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Delete cache files in Roaming")
- It's assumed you're using this from a form as the messageboxes are attached to the calling form.
- The
Maintenancetab will be moved to a sources manager app in a future version. It's in theOptionswindow for now because it's easier and faster than putting together another program with its own UI.
- You no longer have to manually delete guinget's cache in case things break. Instead, you can use the
- Pressing
Deleteon an item in the sidebar search terms list will clear it. - Running CMD from guinget
- You can run CMD right from guinget in case you need to drop into a terminal to do something in winget using
File>Run CMD. - Running CMD elevated is available with
File>Run CMD elevated (UAC) - Keyboard shortcuts for each are available.
Run CMD:Ctrl+Alt+TRun CMD elevated (UAC):Ctrl+Alt+Shift+T
- Known issue: Running CMD from guinget on 64-bit Windows causes filesystem redirection to occur, resulting in anything that has to be launched from the "real" System32 not working correctly. (issue #98)
- Unless you need to run something like
SystemPropertiesProtection.exefrom the "real" System32 folder, you're probably fine. - This may affect running Add and Remove Programs on Wine from this CMD window, though.
- If you need to use the "real" System32 folder, just use CMD from the Start menu, I guess. Compiling guinget as 64-bit would fix this, but winget doesn't offer multiple architectures yet and I don't want to have people manually install a different version.
- Unless you need to run something like
- You can run CMD right from guinget in case you need to drop into a terminal to do something in winget using
- Copyright info for winget is displayed in the
Aboutwindow now.
Fixed
- Some of the ListBox controls in the sidebar tabpages are the wrong size. (issue #74)
- Canceling the UAC dialog after clicking "Edit winget settings as admin (UAC)" causes a mild exception. (issue #77)
- If there's only one package loaded, the statusbar text will now display "1 package loaded" instead of "1 packages loaded".
- If there are fewer manifests available than the number of rows in the database that are returned, it won't crash anymore.
- This fix isn't part of the library, so other programs would have to manually add it if they set up the progress bar maximum value the same way I did.
- The way this was implemented is the progress bar maximum value was being set to the total number of manifest paths found in LocalAppData. That's fine as long as there were as many as or more manifests than returned database rows, but if manifests are manually deleted, it's not ok.
- Now we're setting the maximum value to the number of rows in the database if we're supposed to load from the database.
- Other crashing issues related to the database-loading code have been fixed, such as where you had to manually delete the manifest folder to use the database.
Changed
- Search when typing, and loading from the database have both graduated from being experimental features.
- Database loading should be better, faster, and stronger too than just loading the manifests.
- The main benefit is that you'll only see packages winget can also see, but there might be a bit of a speed boost since there's less manifest reading.
- Loading only the latest version of each package is still off by default since some packages don't display the correct latest version and there's no way to force a specific version without the full list.
- Search when typing is also off by default since it might bother people if it just starts searching all of a sudden and they don't expect it.
- You can turn on search when typing through
Tools>Options...>Search, and checkSearch when typing. - If the delay is too much or not enough, you can change it from the default of 325 milliseconds.
- For loading the latest versions only, you can check the relevant checkbox on the
Refresh Cachetab in theOptionswindow. - Existing installs will have to turn this on manually from
Tools>Options...>Refresh Cachesince each new version migrates settings from the previous version automatically. Eventually I'll add a way to reset the settings to get the new version's config file instead.
- Marking a package or multiple packages will store the width of the column and re-apply it right after the autosize is turned off.
- This makes it so that no matter how many packages are being marked at once, it should be fast and look ok except for the first time you mark a package in a given session.
- Not sure why, but the first time you mark any packages in a session, the Action column shrinks until they're marked. If I figure it out, I'll fix it in a future version. (issue #94)
- The package list in the
Apply changeswindow is now unselected when you open it since it confused me a while back and might confuse other people. - When downloading, extracting, and copying the manifests, the progress dialog now stays on top of just the main window if possible. If a main window isn't specified, it'll fall back to being on top of every window.
- Tabs in the
Optionswindow have been switched around where more potentially-relevant ones are above ones that might not be used as much. - Since uninstall and upgrade are now supported, mentions of "install" on things like "Install interactively" have been changed to be neutral, such as "Run interactively".
- guinget's cache has been moved to
%LocalAppData%\winget-frontends\. You can delete the old cache from theOptionswindowMaintenancetab as mentioned above. - HiDPI Mode now resizes the package list in the
Apply changeswindow so it's easier to use on higher-resolution devices. - The rounded edge on the right side of the toolbar is now hidden.
- Developers using the library might need to know that some subs and functions were renamed.
BulkInstallPkgis nowBulkPackageProcessorInstallPkgis nowSinglePackageProcessor- That might be it, I hope.
BulkPackageProcessorhas anActions(i)list as its first thing now. I might stop specifying updates in the library for developers. Please don't use the library unless you're prepared for breakages across versions.- There were some wording updates in the
Optionswindow. - YamlDotNet has been updated to version 9.1.4, and Microsoft.Data.Sqlite has been updated to version 5.0.4.
- Documentation has been updated. This includes up-to-date info in the readme (except the outdated screenshots), an updated usage guide, and updates to other documentation files for the latest version.
- Updated copyright years from 2020 to 2020-2021.
Removed
- Nothing in this version as far as I can tell.
Deprecation notices
update-manifests.batis deprecated. Its removal will be done in stages to slowly transition to a world that no longer relies onupdate-manifests.batfor 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.
update-manifests.bat Version 2021.01-1 - January 22, 2021
- Switched to using LocalAppData instead of Roaming since guinget also switched and anyone that still uses update-manifests.bat would have issues.
- Added a message at the end of the cache update that allows deleting the cache files in the old location.
- Updated copyright years.