Skip to content

Version 0.2 Alpha

Choose a tag to compare

@DrewNaylor DrewNaylor released this 11 Mar 00:08
· 433 commits to master since this release

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
    • Uninstall and Upgrade are available in the package context menu, Selected packages menu, and the Action column dropdowns.
    • Both may require experimental winget features to be available and on for them to work.
    • You can use Ctrl+U to mark a package for uninstallation and Ctrl+P to mark a package for upgrade.
    • Unfortunately, there were no other characters that fit better for the accelerator than p in upgrade.
  • Filtering the Action column
    • Action column filters are available from the sidebar dropdown by changing it from Search terms to Action.
    • Double-clicking or pressing Enter on any of them works almost like the Search terms list, except nothing gets sent to the search box.
    • Unlike the Search terms list, 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 Action filters by opening the sidebar dropdown and choosing Action. From there you can double-click or press Enter on the items in the listbox to filter as desired, or use All for 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 the Action column. 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 import and winget export and require the relevant experimental features to be on.
    • You can use them from File>Import packages... and File>Export packages..., respectively.
    • Keyboard shortcuts are available for both.
      • Import packages...: Ctrl+O
      • Export packages...: Ctrl+S
      • Keyboard shortcuts are subject to change if better ones are suggested.
    • JSON is 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 run winget 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 m for Import and o for Export, they might be changed as long as they don't conflict with any other items in the File menu.
  • Viewing available upgrades
    • View>Available upgrades... will open a CMD window and run winget upgrade to 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 the Apps & features page in the Settings app by default.
    • If the Settings app can't be run, we'll try to run Programs and Features in Control Panel instead.
    • 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 list
      • Control Panel: Programs and Features
    • Using winget list requires 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.bat offered the user, and now it's available in guinget by default.
    • You can turn it off by unchecking Delete temp files after cache update from Tools>Options...>Refresh Cache, and clicking OK.
    • If you're an app developer who's using libguinget, simply set PackageListTools.DeleteTempDirsAfterCacheUpdate = True before running the cache update to use this.
    • Temporary files are always deleted before refreshing the cache.
  • 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 Changes and the mini-form in the Apply changes window accessible from the Options... linklabel in the bottom-left corner as mentioned below.
    • From the Options window: 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 changes window
    • Right-click on a package and choose Reset status for selected package to change its Current status back to Ready if you have trouble with winget and need to change your settings but don't want to close and reopen the Apply changes window.
    • You can also reset the status for all packages using Reset status for all packages.
  • 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 changes window with other packages marked, you can use Skip selected package to set a selected package's Current status to Skip so you can use the Confirm changes button instead of having to go one-by-one.
    • Any packages with their Current status set to Skip will be ignored until resetting that package's status or closing and re-opening the Apply changes window.
  • Mini-form for Apply changes-related options
    • Both of the checkboxes that were on the Apply changes window were moved into a new mini-form, accessible from the Options... linklabel in the bottom-left corner of the Apply changes window.
    • This mini-form duplicates everything in the full Options window's Apply Changes tab, with some wording changes here and there.
    • When the Apply changes window is moved around, this one stays "glued" to just below the bottom-left corner.
    • Maximizing the Apply changes window moves this one to the bottom-left corner just above the Options... 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 Defaults button in the bottom-left corner to reset the settings in this form to default.
    • The Close button just closes the form and isn't a cancel button, unlike the full Options window.
    • 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 opened checkbox will, as it says, open the mini-form every time Apply changes is opened. I notice that the checkbox text is different to the Apply changes window text, so I'll eventually change the Apply changes window 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 changes window. 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 changes window is too low when you open the mini-form, the mini-form will be offscreen. (issue #101)
  • 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 AppData button from Tools>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 Roaming instead of Local, so you can also delete that cache using the Delete cache files in Roaming button 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 Maintenance tab will be moved to a sources manager app in a future version. It's in the Options window for now because it's easier and faster than putting together another program with its own UI.
  • Pressing Delete on 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+T
      • Run 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.exe from 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.
  • Copyright info for winget is displayed in the About window 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 check Search 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 Cache tab in the Options window.
    • Existing installs will have to turn this on manually from Tools>Options...>Refresh Cache since 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 changes window 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 Options window 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 the Options window Maintenance tab as mentioned above.
  • HiDPI Mode now resizes the package list in the Apply changes window 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.
    • BulkInstallPkg is now BulkPackageProcessor
    • InstallPkg is now SinglePackageProcessor
    • That might be it, I hope.
  • BulkPackageProcessor has an Actions(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 Options window.
  • 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.bat is deprecated. Its removal will be done in stages to slowly transition to a world that no longer relies on update-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.

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.