guinget

Unofficial GUI for Microsoft's Windows Package Manager (winget). Kinda like Synaptic, but for Windows. Not associated with either Microsoft or the Synaptic project, and Microsoft does not endorse this software.

APACHE-2.0 License

Stars
134
Committers
1

Bot releases are hidden (Show)

guinget - Version 0.3.0.2 Beta Latest Release

Published by DrewNaylor over 2 years ago

guinget Version 0.3.0.2 Beta Changelog

Released on 5/12/2022 (MM/DD/YYYY).

Had to fix a few things that broke near the release of v0.3.0.1 (manifests with too-long file paths) or will probably break soon (winget database URL), so that's why this version exists.

You can find the full changelog below.

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

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.3.0.2-beta.exe", which is the installer attached to this release:
0A8B2DF0E4CA1D2353D68C806CFDDF72A3027056D5CBCA56E6D03DA0F4A7EA4A

SHA-256 sum for "guinget.exe":
ABD75F6409113A734F304B3C1CB03FDEDE69F0A246DB2CD9E090796F0D6F6718

SHA-256 sum for "EnableLongPathsEnabled.reg":
20CBDA1EEFE7C24FB3A432CAE07A4D3C4B66449DB4B333AE007FE8BC1D4DACFC

SHA-256 sum for "DisableLongPathsEnabled.reg":
D732F552C8F9D0B9E4EF85F7BD422CB6136434994F9E5267C4F94F9139A55D32

These SHA-256 sums are for the libraries. Figured it would be a good idea to list them all out. I got this list by running Get-ChildItem -Path .\lib -Recurse -Filter *.dll | Get-FileHash -Algorithm SHA256 in the archive's root folder. Here's how I learned to do it recursively: https://shellgeek.com/get-md5-checksum-or-sha-checksum-for-file-in-powershell/#Get-FileHash_Recursive_for_files

2311160E10FEE44C66C2F46AEA6C70CAC4F36B1A0AA4CCB9F69BADEF381B9D01       .\lib\libguinget.dll
3F2741B885A3BDD03422E0346542BF4D13384A5287FD3BAF94D05C964ABECB92       .\lib\libscrollswitchtabs.dll
FC681DC1FD170A4F27487BD6D91103093A16F526D47F07EFF363EB85362A18B7       .\lib\Microsoft.Data.Sqlite.dll
B70365348A01BC6F8753B6F5F39FDA30504EB585158F457613F6A3C8B7B89214       .\lib\SQLitePCLRaw.batteries_v2.dll
947B730A2DB758D062A79749D3877A8611ED9516179F16862CDDEFA556E5F467       .\lib\SQLitePCLRaw.core.dll
9982F856992E7234E77A13EA2AD200D679D5CDB3EB1706CD735AB494120D8F31       .\lib\SQLitePCLRaw.nativelibrary.dll
A0AB2C550198463C0A7EAA2071A4214793B57591C53A681634ED3E228D2F8C74       .\lib\SQLitePCLRaw.provider.dynamic_cdecl.dll
ACCCCFBE45D9F08FFEED9916E37B33E98C65BE012CFFF6E7FA7B67210CE1FEFB       .\lib\System.Buffers.dll
437CEDACC15547BCC5F997B65774B9B52B1A6B5F1E00303A9B31F48711BC6594       .\lib\System.dll
8E76318E8B06692ABF7DAB1169D27D15557F7F0A34D36AF6463EFF0FE21213C7       .\lib\System.Memory.dll
1D3EF8698281E7CF7371D1554AFEF5872B39F96C26DA772210A33DA041BA1183       .\lib\System.Numerics.Vectors.dll
37768488E8EF45729BC7D9A2677633C6450042975BB96516E186DA6CB9CD0DCF       .\lib\System.Runtime.CompilerServices.Unsafe.dll
F24D57A17849F58239561BA7872F2AA68BF6C80F365A0FCD6AEEF06B4440B476       .\lib\YamlDotNet.dll
618AE75967ACF2053FDE3C74B2D96C4E6C097675C3A725EBC5605521DF296FBC       .\lib\runtimes\win-arm\native\e_sqlite3.dll
29029877DCE20E985487B1805733D72E0962E6A5CB72796B52A52628AED085D5       .\lib\runtimes\win-x64\native\e_sqlite3.dll
D2E0558E63AC31BD4ED01E4DB7107812808B17C0223455C00482F631C0B43339       .\lib\runtimes\win-x86\native\e_sqlite3.dll

Fixed

  • Some packages have manifests that result in a file path that's too long for Windows. On Windows 10 version 1607 and higher, the LongPathsEnabled Registry key allows you to remove the 260-character path limit (259 characters with a NUL at the end). Applications have to change their manifest to support this, and this version of guinget has done such. If you still have issues, you can open the EnableLongPathsEnabled.reg file using an elevated (Administrator) Command Prompt or PowerShell. As with any .reg file, it's wise to check it in Notepad first. You can also turn this feature off by opening DisableLongPathsEnabled.reg in another elevated prompt. You may need to restart your computer for these changes to take effect. A future version will make this easier. See also: https://github.com/DrewNaylor/guinget/issues/149

Changed

Deprecation notices

  • The dropdown boxes in the Action column are deprecated in this version and will be removed in v0.4 since it was difficult to keep them with efficiency improvements. As a result, there's a new option in the Options window Package List + Details tab that'll let you single-click in the Action column to open the package context menu instead of having to double-click if you want to get used to how v0.4 will be. This is off by default, as it's kinda wonky with dropdown columns. Please see the related content in the Added section for more information.
  • 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.
guinget - Version 0.3.0.1 Beta

Published by DrewNaylor over 2 years ago

guinget Version 0.3.0.1 Beta Changelog

Released on 3/19/2022 (MM/DD/YYYY).

Didn't think v0.4 would take as long as it has, so I decided to port a few specific changes to v0.3.0.1 so people can benefit from them in the meantime. Here are some highlights:

  • Important legal notices I accidentally forgot to include in previous versions
  • Slight efficiency improvements for package list loading and searching/filtering, though major improvements will be in v0.4
  • Database closing when we're done with it so the rare messagebox about it being opened by another program should no longer show up
  • A new default Start menu folder for new installs
  • Library updates
  • Deprecation of the Action column's dropdowns due to them being difficult to keep in v0.4 with its enhanced efficiency ("Thou art too slow to exist alongside me, you mere mortals", I guess)
  • An option to allow single-clicking in the Action column to get used to how it works in v0.4 (if desired) is available, but it's off by default due to wonkiness related to dropdowns
  • guinget and libguinget now get built in the Release configuration to reduce memory usage

You can find the full changelog below.

Important: Some packages such as the unofficial ProtonMail desktop client have a filename for their locale manifest that's too long for Windows by default, so not all manifests will be properly extracted or loaded. A workaround will be available in a future version, but for now you can right-click a package and select Show in winget... to get package details for unloaded manifests. See issue #149 (https://github.com/DrewNaylor/guinget/issues/149)

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

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.3.0.1-beta.exe", which is the installer attached to this release:
749117DD989C23958540898D77A005364DA1AFBB04BCEC4C48C147BC1A2137D0

SHA-256 sum for "guinget.exe" in the archive:
3D83383F2929431A9E2D1D016940834BEAF5BF6B6847867218BC2372F1C25904

These SHA-256 sums are for the libraries. Figured it would be a good idea to list them all out. I got this list by running Get-ChildItem -Path .\lib -Recurse -Filter *.dll | Get-FileHash -Algorithm SHA256 in the archive's root folder. Here's how I learned to do it recursively: https://shellgeek.com/get-md5-checksum-or-sha-checksum-for-file-in-powershell/#Get-FileHash_Recursive_for_files

82C1753E30043047E8AC6EA8E2EC53188790EC1CE492AFED0E5E70F0E8AD9ADA    .\lib\libguinget.dll
3F2741B885A3BDD03422E0346542BF4D13384A5287FD3BAF94D05C964ABECB92    .\lib\libscrollswitchtabs.dll
3BACEAED157174779B03D53A65F65700EB37E8C942CE1696B0A8B0EFE6BE077B    .\lib\Microsoft.Data.Sqlite.dll
B70365348A01BC6F8753B6F5F39FDA30504EB585158F457613F6A3C8B7B89214    .\lib\SQLitePCLRaw.batteries_v2.dll
947B730A2DB758D062A79749D3877A8611ED9516179F16862CDDEFA556E5F467    .\lib\SQLitePCLRaw.core.dll
9982F856992E7234E77A13EA2AD200D679D5CDB3EB1706CD735AB494120D8F31    .\lib\SQLitePCLRaw.nativelibrary.dll
A0AB2C550198463C0A7EAA2071A4214793B57591C53A681634ED3E228D2F8C74    .\lib\SQLitePCLRaw.provider.dynamic_cdecl.dll
ACCCCFBE45D9F08FFEED9916E37B33E98C65BE012CFFF6E7FA7B67210CE1FEFB    .\lib\System.Buffers.dll
437CEDACC15547BCC5F997B65774B9B52B1A6B5F1E00303A9B31F48711BC6594    .\lib\System.dll
8E76318E8B06692ABF7DAB1169D27D15557F7F0A34D36AF6463EFF0FE21213C7    .\lib\System.Memory.dll
1D3EF8698281E7CF7371D1554AFEF5872B39F96C26DA772210A33DA041BA1183    .\lib\System.Numerics.Vectors.dll
37768488E8EF45729BC7D9A2677633C6450042975BB96516E186DA6CB9CD0DCF    .\lib\System.Runtime.CompilerServices.Unsafe.dll
F24D57A17849F58239561BA7872F2AA68BF6C80F365A0FCD6AEEF06B4440B476    .\lib\YamlDotNet.dll
618AE75967ACF2053FDE3C74B2D96C4E6C097675C3A725EBC5605521DF296FBC    .\lib\runtimes\win-arm\native\e_sqlite3.dll
29029877DCE20E985487B1805733D72E0962E6A5CB72796B52A52628AED085D5    .\lib\runtimes\win-x64\native\e_sqlite3.dll
D2E0558E63AC31BD4ED01E4DB7107812808B17C0223455C00482F631C0B43339    .\lib\runtimes\win-x86\native\e_sqlite3.dll

Added

  • As mentioned in the Deprecation notices section, there's a new checkbox in the Options window Package List + Details tab that'll let you single-click in the Action column to open the package context menu instead of having to use the dropdowns, which will be removed in v0.4 since it was difficult to keep them with significant efficiency improvements. It's off by default due to wonkiness related to slowly clicking multiple times and causing the dropdown to activate along with showing the context menu. You can turn it on by navigating to Tools>Options...>Package List + Details and checking the Show Action column context menu when single-clicking one of the cells in that column checkbox.

Fixed

  • Sometimes the package list SQLite database wouldn't be properly closed by libguinget, so now I'm making sure everything related to the database is disposed and that the connection has its pools cleared after the datatable is filled. Before there would rarely be a messagebox that shows up asking you to close the Explorer window that's navigated to the package list cache folder. I would sometimes leave that folder open by accident, and that messagebox was meant to only show up in that situation, but sometimes the database wouldn't be properly closed and would incorrectly claim that Explorer is open to that folder. Maybe I should try to figure out if I can show what program has a handle to the database, just in case it ends up not being Explorer, which would mean that people will know what's going on more easily and I wouldn't have to open up Process Explorer to figure out what's going on during development.
  • libscrollswitchtabs was using the "Apace" License due to a typo, which has been corrected as it uses the Apache License, Version 2.0.

Changed

  • Both guinget and libguinget are now built using the Release configuration. This appears to decrease memory usage significantly (at least 20 MB when loading the package list, probably more), even though I didn't think it would help much because the filesize was barely any smaller, and so I didn't use it until now.
  • When loading the package list, the main window's progress bar no longer gets refreshed every time a package is added to the datagridview, and it only goes up by a certain amount every so often.
    • If the current row is divisible by 100 and there are 100 or more packages total, then the progress bar will go up by 100 every 100 packages.
    • If the current row is divisible by 10 and there are 10 or more but fewer than 100 packages total, then the progress bar will go up by 10 every 10 packages.
    • If there are fewer than 10 packages, then the progress bar will go up by 1 for every package, just like how it used to work.
    • This change makes guinget a little more efficient, but it may still say "(Not responding)" in the titlebar. Further optimizations in v0.4 will make package list loading far more efficient, and will usually no longer display "(Not responding)" in the titlebar. Early testing shows that it may still display in Task Manager, though.
    • Due to the way searches currently work, this change was also applied to searches and filters. This is unnecessary in v0.4, as searching is near-instant in that version thanks to the "further optimizations" mentioned previously.
  • The KDE-style fast resize checkbox now has a statement that "neither guinget nor Drew Naylor are associated with KDE, and KDE is (R) KDE e.V.)". This is something I just completely forgot that I should do, which is weird considering I did that for the 7-Zip and RoboCopy options currently under the Experimental tab.
  • Licenses and legal notices have been added for all dependencies used by Microsoft.Data.Sqlite, because I realized that would be a good idea when I noticed Microsoft.Data.Sqlite was now under the MIT License. I also realized that I didn't have the license files for it and its dependencies that I'm required to include, since I just forgot even though I added the license for YamlDotNet a long time ago.
  • New installations will default to the DrewNaylor folder in the Start menu due to the removal of the space in my name so it looks more like I'm a serious developer than just... my name going, "Hello!" like Michael Rosen when you open the Start menu.
  • Moved almost all About window text into Resources for easier editing.
  • YamlDotNet has been updated to version 11.2.1.
  • Microsoft.Data.Sqlite and Microsoft.Data.Sqlite.Core have been updated to version 6.0.3.
  • SQLitePCLRaw.bundle_e_sqlite3, SQLitePCLRaw.core, SQLitePCLRaw.lib.e_sqlite3, and SQLitePCLRaw.provider.dynamic_cdecl have been updated to version 2.0.7.
  • System.Runtime.CompilerServices.Unsafe has been updated to version 6.0.0.
  • The postbuild script now has an easy way to switch between Debug and Release builds by just changing a variable.

Deprecation notices

  • The dropdown boxes in the Action column are deprecated in this version and will be removed in v0.4 since it was difficult to keep them with efficiency improvements. As a result, there's a new option in the Options window Package List + Details tab that'll let you single-click in the Action column to open the package context menu instead of having to double-click if you want to get used to how v0.4 will be. This is off by default, as it's kinda wonky with dropdown columns. Please see the related content in the Added section for more information.
  • 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.
guinget - Version 0.3 Beta

Published by DrewNaylor over 3 years ago

guinget Version 0.3 Beta Changelog

Released on 6/26/2021 (MM/DD/YYYY).

Almost a year after guinget moved to alpha, it finally moves to the beta stage! This update has several performance improvements, a few new features, some bug fixes, and even some removals. Here are few of those changes by name:

  • Optional KDE-style fast resizing for the package list so it doesn't slow everything down
  • Moving the cache files instead of copying them
  • Only extracting .yaml files from the manifest zip file
  • A window that makes validating manifests easier so you don't have to type commands
  • Much-faster package list loading (may still be slow sometimes, but usually it should be a lot faster)
  • Fixes involving package ID sorting and an issue where the scrollbar didn't work correctly
  • The removal of both manifest-only loading and update-manifests.bat support

Some important fixes were backported to v0.2.0.3 as I wasn't sure how long v0.3 would take, but it's ready now.

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

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.3-beta.exe", which is the installer attached to this release:
234DF3E00AD4BEECB452999022B7C34F3EA56373690558AF626D42016CE5AEF5

SHA-256 sum for "guinget_v0.3-beta-rev1.exe", which is an installer with a publisher name that doesn't have a space in my name so that it matches with the winget manifest:
70A279B755A518208264EF3C4DA8B9627ED2678AD056B151C41B8ACF54A06259

SHA-256 sum for "guinget.exe" in the archive:
FB549A86AE201AB03FE78641FCF0DD469D8286C424BAC7F1B2D3B397F45BDB2E

SHA-256 sum for "lib\libguinget.dll" in the archive:
63C8959892E2A0EC4AD0E99D9EAF082DE8AE1886E28A83E638E43DCAE30EB860

SHA-256 sum for "lib\libscrollswitchtabs.dll" in the archive:
3F2741B885A3BDD03422E0346542BF4D13384A5287FD3BAF94D05C964ABECB92

SHA-256 sum for "lib\YamlDotNet.dll" in the archive:
A52924C5065FC796B0B6E16A1FE09B34A2AAF7BAB5308BE26EE6D27AE2B127E6

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

  • KDE-style fast resize (issue #71; pr #125)
    • While resizing the window, the package list is replaced with a screenshot of itself that's then stretched until resizing is finished.
    • One side-effect of this is that the package list will flicker after moving the window because moving a window counts as resizing it. Not sure how to make it only use the fast resizing during an actual resize and not a move.
    • Any windows above the package list will show up in the screenshot while resizing it. Not sure how to prevent that from happening, but it's not really that big of an issue.
    • This is on by default, and can be turned off by unchecking the Use KDE-style fast resize for the package list so that resizing the window is smooth when there are a lot of packages listed checkbox under Tools>Options...>Package List + Details. Doing so will return to the previous resizing behavior.
  • "Validate Manifest" window (issue #28)
    • Tools>Validate manifest... displays a window that allows you to enter or browse for a manifest to validate.
    • By default, it uses a folder browse window for use with multi-file manifests, but you can check the Browse for singleton manifest checkbox below the textbox to use a file open dialog, which will let you select a single-file manifest.
    • When you're ready for validation, simply click the Validate button at the bottom-right and the manifest will be passed to winget with output displayed in CMD.
    • "In Soviet Russia, manifest validates you."
  • Per-user installation options are now available in the manifest. Personally I highly recommend not using per-user installation for security reasons, but I think winget requires or at least highly recommends making it available for people.

Fixed

  • All the packages now display as expected when you scroll to the bottom before clicking the package list or moving controls around. (issue #117)
  • Packages with lowercase IDs will now be sorted properly rather than being shown after the rest of the packages. (issue #111)
  • The currently-selected package now displays its details once the cache update is complete. Usually this will be the first item in the package list. This has been a regression since database-loading became the default.
  • The Import and Export menu items weren't blocked while refreshing the cache. (issue #109)

Changed

  • Way faster cache updates and package list loading (pr #110)
    • Loading the package list isn't (usually) painfully slow anymore as the statusbar isn't being manually updated every time a row in the package list is updated. Sometimes it can still be slow, though.
    • Something else that may help increase the speed of package list loading would be that the list of manifests is now put together with Async stuff.
    • Updating the cache is now a lot faster. Most of the changes involve extracting only .yaml files and moving the folders instead of copying them. As a result of the speed improvements, we now show each file as it's being extracted and the extraction progress bar displays as you'd expect, where it increases for each file.
    • Canceling the zip file extraction will now immediately stop the cache update without you having to wait if you cancel it during the manifest zip file extraction as the cancel update flag is checked before each file is extracted. The database extraction still doesn't extract per-file, so it may take a bit to cancel, but it shouldn't be necessary as it was fast before. (issue #124)
    • If it's still slow for you, opening guinget, letting it run for a bit, and closing it a few times should get .NET Framework's JIT to compile it to machine code for better performance.
    • RoboCopy is still used if not using the built-in .NET Framework stuff and will probably be replaced with a move command in a future version for consistency.
  • Instead of being a regular TextBox, the package details textbox is now a RichTextBox. This means you can click links in manifests without having to copy and paste them. There's still a context menu, though with only Copy, Select All, and Right to left Reading order as the rest weren't really important or didn't seem to do anything.
  • Searches and package-marking may also be a bit faster as they're also not constantly updating the statusbar. Searches are still a little slow at the moment due to the DataGridView control being slow at hiding rows.
  • Closing the cache update window now sets the cancel update flag just like if you clicked the "Cancel" button. This has been a problem since v0.1 alpha, but it's now addressed. There's no way to stop it during the moving phase, so it'll just continue in the background if the window is closed. (issue #129)
  • Canceling the cache update while downloading the manifest zip file will cancel the rest of the update.
  • The 7-Zip and RoboCopy cache update code is now Async so that the progress bars update while running the commands and the windows remain interactive. (pr #116)
  • In the Apply Changes window, the Confirm changes and Close buttons have switched places to match the Options window. As a result, the sizes of both buttons may be slightly different. (issue #127)
  • The Package Details tab in the Options window is now Package List + Details to accommodate the fast resizing feature's checkbox without having to add more tabs that would be redundant. Additionally, the checkboxes on that tab have their own groupboxes to keep them visually separate. (pr #125))
  • Showing or hiding the sidebar is now done after changing HiDPI sizes if done through the Options window. This means it may take a bit for things to catch up, but it should also look less broken.
  • The uninstaller in Add & Remove Programs/Programs and Features/Apps & features now only displays "guinget" as the name rather than also showing the version number.
  • YamlDotNet has been updated to version 11.2.0.
  • Microsoft.Data.Sqlite has been updated to version 5.0.7.
  • The installer has been compiled with Inno Setup Compiler 6.2.0. The most noticeable effect of this is that there are new icons in the installer and in Apps & features.
  • Documentation has been updated.
  • An unused class has been commented out.

Removed

  • update-manifests.bat support has been completely removed and the script was moved to the deprecated folder in case anyone wants to see what it was. Updating to guinget v0.3 beta will delete the update-manifests.bat file in the installation directory. (pr #116)
  • Support for directly loading manifests has been completely removed along with its associated text in the Options window. (pr #116)

Deprecation notices

  • 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.
guinget - Version 0.2.0.3 Alpha

Published by DrewNaylor over 3 years ago

guinget Version 0.2.0.3 Alpha Changelog

Released on 6/21/2021 (MM/DD/YYYY).

While developing v0.3 Beta, I found some major bugs and decided to backport fixes as it may be a while until v0.3 is ready. Those fixes include a major issue where the package list won't show all the packages unless you click a package or move controls around, then scroll back to the bottom of the list. The other fixes include a performance fix so that loading the package list doesn't take forever (hopefully; it may still be kinda slow sometimes, so v0.3's changes may be necessary to make it reasonable) as well as a fix for lowercase package IDs showing up below the rest. I wasn't planning on backporting fixes, but that first bug was big enough that I decided to do so while working on the next version.

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.0.3-alpha.exe", which is the installer attached to this release:
D3A6E8C28CE684643AC8B511B853DBC721BBC88162479B80368BE908B7BB99BA

SHA-256 sum for "guinget.exe" in the archive:
5FED21F6C4BCC7A3E5BAE7B10A7C58666882F19FB5361BD4A852FEEB39074000

SHA-256 sum for "lib\libguinget.dll" in the archive:
74B0DFE8D24CE5700D367B7D278DA747E821C7BB6DF029BC4696435DD34AAAC4

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:
A52924C5065FC796B0B6E16A1FE09B34A2AAF7BAB5308BE26EE6D27AE2B127E6

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

  • Nothing in this version.

Fixed

  • All the packages now display as expected when you scroll to the bottom before clicking the package list or moving controls around. (issue #117)
  • Packages with lowercase IDs will now be sorted properly rather than being shown after the rest of the packages. (issue #111)
  • Loading the package list isn't (usually) painfully slow anymore as the statusbar isn't being manually updated every time a row in the package list is updated. Sometimes it might still be pretty slow, though. Further optimizations in v0.3 should help a lot with this. (part of pr #110 but manually backported)

Changed

  • The uninstaller in Add & Remove Programs/Programs and Features/Apps & features now only displays "guinget" as the name rather than also showing the version number. This is something else that's backported from v0.3.
  • YamlDotNet has been updated to version 11.2.0.
  • Microsoft.Data.Sqlite has been updated to version 5.0.7.

Removed

  • Nothing in this version.

Deprecation notices

  • Please be aware that loading manifests directly is deprecated and UI configuration for the feature was removed in guinget v0.2.0.2. A future version will fully remove it. More details: https://github.com/DrewNaylor/guinget/issues/105
  • 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.
guinget - Version 0.2.0.2 Alpha

Published by DrewNaylor over 3 years ago

guinget Version 0.2.0.2 Alpha Changelog

Released on 4/06/2021 (MM/DD/YYYY).

Recently winget added support for multi-file manifests, so this version adds support for them. There's also a fix for a potential performance regression involving loading package descriptions. Besides those two changes, database-loading is automatically enforced (since directly loading manifests is deprecated) if you're using the installer and upgrading from a previous version.

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.

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.0.2-alpha.exe", which is the installer attached to this release:
0FDE801D3CD2038750DC03D6549010EE8EC1572C17CEC232AAC8650499D38782

SHA-256 sum for "guinget.exe" in the archive:
8740D634FE31B026F592D4AFE8170A48BFF87F30D5AE9DFDCC312606EACE078F

SHA-256 sum for "lib\libguinget.dll" in the archive:
EBD9CFC10B81185E47100FD53BCE9724C08543E038BDDB8B936E871A84ED99B4

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:
8AC0C1165E3857DD2685A2A1146F24597218AE2DF90BA5F15EA3BA76D0605A4B

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

  • Initial support for multi-file manifests.
    • Requires loading from the database, which is now automatically set to on when upgrading to this version using the installer.
    • Directly loading manifests by modifying the config file will result in a bunch of extra entries showing up because I didn't implement a version of multi-file manifest support for it as it's deprecated.

Fixed

  • There's a potential performance regression relating to loading package descriptions that should be fixed or at least mitigated now.
  • If a single-file manifest can't be found when selecting its package in the package list, the package details textbox will now display "(Couldn't find manifest)" instead of continuing to show the previously-selected package's manifest.
  • Spacing has been added between the labels in the download progress window so they don't clip into each other at some DPI settings.

Changed

  • Single-file manifests now have a header that says "Manifest" above them in the package details textbox for consistency with the multi-file manifest section headers.
  • As mentioned previously, database-loading is now enforced on upgrading using the installer. If things aren't displaying properly, you can use the Defaults button in the Options window to check the database-loading checkbox, then click OK.
  • There are some wording updates in the Options window relating to database-loading.
  • YamlDotNet has been updated to version 11.0.1.
  • Microsoft.Data.Sqlite has been updated to version 5.0.5.

Removed

  • Does hiding the database-loading checkbox and deleting its description label count?

Deprecation notices

  • Please be aware that loading manifests directly is deprecated and UI configuration for the feature was removed in guinget v0.2.0.2. A future version will fully remove it. More details: https://github.com/DrewNaylor/guinget/issues/105
  • 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.
guinget - Version 0.2.0.1 Alpha

Published by DrewNaylor over 3 years ago

guinget Version 0.2.0.1 Alpha Changelog

Released on 3/30/2021 (MM/DD/YYYY).

This is just a basic patch to add support for the new v1.0 singleton manifests and their file paths. More details about what that involves are available below. You can read the v0.2 changelog here if you wish: https://github.com/DrewNaylor/guinget/releases/tag/v0.2-alpha

Since nothing changed that would warrant an update to the usage guide, I'm just using the one from v0.2.

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.

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.0.1-alpha.exe", which is the installer attached to this release:
370C4B4EC99FEC59FCBFB369F9D1B9FDDBD3BB97FEC5B0224F7000DCCC04BDDB

SHA-256 sum for "guinget.exe" in the archive:
569289A5D1331F26FC25E1144BAEE08BBD4AAA16A4EDCF0B522A74BB8CEA6E2A

SHA-256 sum for "lib\libguinget.dll" in the archive:
7B1AEB599F2432C06CD6DB0D863782C3729FED5E552D7DF0B2DC0E95C4897AB4

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:
0EF4F8AB2EE8C446B68FD97ACBBC70B1A1407944B5B1BD0D2FC145AE2C90F946

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 the new v1.0 singleton manifests and their file paths.
    • Multi-file manifests will have initial support in guinget v0.2.0.2, with better support in a future version.
    • Since ShortDescriptions are now supported in the manifests and some migrated packages have the ID as their ShortDescription, the regular Description is shown instead if the package ID matches the ShortDescription.

Fixed

  • The code for replacing only the first period in an ID was corrected so it actually works now instead of always using the fallback like it used to.

Changed

  • YamlDotNet has been updated to version 10.0.0.

Removed

  • Because support for v1.0 manifests was added, support for v0.1 manifests was dropped. Shouldn't be a problem since the main repo was migrated.

Deprecation notices

  • Please be aware that loading manifests directly is deprecated and UI configuration for the feature will be removed in guinget v0.2.0.2. More details: https://github.com/DrewNaylor/guinget/issues/105
  • 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.
guinget - Version 0.2 Alpha

Published by DrewNaylor over 3 years ago

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.
guinget - Version 0.1.3 Alpha

Published by DrewNaylor almost 4 years ago

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 to update-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 the Selected 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 from Tools>Options... in addition to the Package 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 the Apply 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 the Apply 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 type winget 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.
  • Edit winget settings
    • Instead of having to type winget settings every time you want to edit its settings, you can just use Tools>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.
  • Elevate winget
    • Sometimes winget won't automatically elevate package installers, but now you can force it to with the Elevate winget (UAC) checkbox in the Apply 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:
      1. Log into your administrator account.
      2. Download and install winget in your administrator account.
      3. Log back into your regular account.
      4. Download and install winget in your regular account (if you don't, it won't be able to run for some reason).
      5. Make sure winget still runs in both an elevated and non-elevated CMD window (just winget should be enough).
      6. 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.
      7. 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 the Apply changes window as described above. Be sure to use the Package 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.
  • When one package is selected, you can show it in winget in any of these ways:
    • Show in winget from the package context menu
    • Selected 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 under Tools>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.
  • The Apply changes window is now wider to accommodate the Elevate winget (UAC) option.
  • More experimental options have been added, and you can use them by unchecking Hide unfinished controls and experimental stuff on the Tools>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.
    • 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.
    • Search when typing
      • Name in config file: SearchWhenTyping
      • Boolean; defaults to False/unchecked
      • Instead of requiring you to press Enter or click Search 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 is 9999.
    • 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.
    • 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.
  • 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 use F1 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 to update-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 under Tools>Options...>Experimental, if hidden controls are shown) in case the default source's name changes in the future, but it's currently winget. (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 of Action>Install
    • Action: Do nothing instead of Action>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 the Search options... shortcut is still available.
    • As a result of containing every available option, the Show sidebar checkbox was moved to the Layout tab as it makes more sense there.
  • Exact matches are now the default when using Selected packages>Search for package ID, but you can change it back by unchecking Use exact match for selected package ID search in Tools>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 a String 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 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.
guinget - Version 0.1.2 Alpha

Published by DrewNaylor about 4 years ago

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 from All, at the top) will start a search for it
    • Double-clicking or pressing Enter on All 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 list
      • Clear 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 the Options window under Package list>Search options..., and clicking OK.
    • 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 from Search options... in the Search 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 clicking OK.
  • Search for all packages containing a specific ID using Search for last-selected ID in the package context menu or from the Selected 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..., unchecking Re-run search after cache update, then clicking OK.
  • 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 to False
      • 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 to False
      • 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 to False
      • 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.
      • 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 delete libguinget and YamlDotNet 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 to Package 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 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.
guinget - Version 0.1.1 Alpha

Published by DrewNaylor about 4 years ago

guinget Version 0.1.1 Alpha Changelog

Released on 8/3/2020 (MM/DD/YYYY).

Sometimes I want to install a package interactively as I don't like the defaults, as is the case with LibreOffice, so this update introduces that functionality. To use it, simply check the Install interactively (-i) checkbox in the Apply changes window. This will persist across closing the window and restarting the application.

There are also some fixes and changes related to the Apply changes window, including one where double-clicking on the column header used to install the currently-selected package.

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.1-alpha-quieter.exe", which is a quieter installer without the startup message:
EE7EE57E21BC999F68CFF63DF1DCCA6B9C6A22E2443AAC7406E9028298EA45A4

SHA-256 sum for "guinget_v0.1.1-alpha.exe", which is the main installer attached to this release:
924A4378503550E1D3061A6DA1D47970056BBDADC8D19131CDA43A6662979BCD

SHA-256 sum for "guinget.exe" in the archive:
77BE11957E22E4A3341F0D671E510981E7E7D45794FA89B861133EA71241A170

SHA-256 sum for "libguinget.dll" in the archive:
BE071A6B17AE209E0242777A7385250BD549E697B69F5B73425FDF597C6D971D

SHA-256 sum for "update-manifests.bat" in the archive:
AFA421669D4856FB9136656B97CD2098478B1FE67AD5CB2326DA5A8BDA4BD36A

SHA-256 sum for "YamlDotNet.dll" in the archive:
632E1C37E67E5BE46766FFC9ED7790C22D1FE75A5B83AAB9EC4C0678414E5B82

Added

  • Interactive installation option
    • Usable by checking the Install interactively (-i) checkbox in the Apply changes window
    • Setting persists across closing the window and restarting the application
    • Passes -i to winget along with the rest of the install command

Fixed

  • Double-clicking the column header in the Apply changes window would start installing the selected package, but now we make sure this doesn't happen.
  • Column headers in the Apply changes window were sometimes too tall, but now they're closer to the height they should be.

Changed

  • Multi-select has been turned off in the Apply changes window as there's no code to handle that situation and it could be confusing.

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.
guinget - Version 0.1.0.1 Alpha

Published by DrewNaylor over 4 years ago

guinget Version 0.1.0.1 Alpha Changelog

Released on 7/21/2020 (MM/DD/YYYY).

Didn't think the -e would be important when the package is passed to winget, but it turns out that there's a bug where some packages can't be installed without specifying the exact package name. This issue didn't show up until I tried to install CrystalDiskMark and it wouldn't work since there were conflicting package names. Ended up that the -e (exact) is just as important here as it is in some other situations outside winget. Since this is a major bug, I'm doing a quick bugfix update.

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.0.1-alpha-quieter.exe", which is a quieter installer without the startup message:
9063573663D99ADF58397B9D7E683F437BE362E850DCECF346CF62BCE5A292E5

SHA-256 sum for "guinget_v0.1.0.1-alpha.exe", which is the installer attached to this release:
BFEFEEC74F545AE7D81FA09D2F79CDEA8FCE26A583AFAC34E6A0DE39DE26D8BA

SHA-256 sum for "guinget.exe" in the archive:
6A6954811AB858A8F078B67D74579AA2716894EDF14C18697CC775CF10C3CA8C

SHA-256 sum for "libguinget.dll" in the archive:
2FE467A29806D3B7901A39B3B2A0D54A46BBB7E586FCE59AE777D81DD3028BF0

SHA-256 sum for "update-manifests.bat" in the archive:
AFA421669D4856FB9136656B97CD2098478B1FE67AD5CB2326DA5A8BDA4BD36A

SHA-256 sum for "YamlDotNet.dll" in the archive:
632E1C37E67E5BE46766FFC9ED7790C22D1FE75A5B83AAB9EC4C0678414E5B82

Added

  • Installer scripts are now in the repository.

Fixed

  • Can't install packages like crystaldiskmark as "-e" isn't passed to winget. (issue #24)

Changed

  • Some wording here and there.

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.
guinget - Version 0.1 Alpha

Published by DrewNaylor over 4 years ago

guinget Version 0.1 Alpha Changelog

Released on 7/7/2020 (MM/DD/YYYY).

One month after guinget's second pre-alpha version, the first real alpha version is now available! Although there are few overall changes in this version, the few changes that are there make a major difference in terms of usability, including one change that makes updating the package list much faster. 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.

As of July 17, 2020, there's an installer available as well.

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-alpha.exe", which is the installer attached to this release:
AFB4E6D91DA3BAA92655F70052D1E91667234D5EC7252181ECF182F26A6D5BA7

SHA-256 sum for "guinget.exe" in the archive:
41013DC21A36FF348AD9B2727059D2AFA10F3D7098042A154DE4D3E90A35F3C4

SHA-256 sum for "libguinget.dll" in the archive:
826B675C6666489B0F3D53D05502E3CD79B7E78AE04852E9808D9E473EEBC936

SHA-256 sum for "update-manifests.bat" in the archive:
AFA421669D4856FB9136656B97CD2098478B1FE67AD5CB2326DA5A8BDA4BD36A

SHA-256 sum for "YamlDotNet.dll" in the archive:
632E1C37E67E5BE46766FFC9ED7790C22D1FE75A5B83AAB9EC4C0678414E5B82

Added

  • libguinget is now in charge of updating the package list instead of update-manifests.bat. Benefits and implications:
    • Much faster package list zip file downloads and extractions (sadly the copying is a bit slower, but it doesn't matter much)
    • A pretty GUI to look at while it does its thing (unfortunately, with indeterminate progress bars for now since I don't know how to actually get the progress numbers to increment the progress bar)
    • Cancel buttons in the download and extract phases if you wish to stop the update and just load the package list from what's currently in the folder that's loaded into the package list data grid view
      • You can press the Esc key instead of clicking Cancel if that's easier or faster.
      • Please be aware that the cancel button is only available during the download and extract phases, and isn't available when copying. This is due to the package manifest folder being deleted before copying begins.
      • Additionally, canceling currently requires the current phase to complete before fully stopping the update.
      • Closing the progress windows doesn't cancel the task at the moment; clicking the cancel button is required.
    • update-manifests.bat is still available for now if you wish to use it, but it's deprecated and may be removed without warning. See here for instructions on re-enabling update-manifests.bat. This manual change will not persist guinget updates.

Fixed

  • Double-clicking on the column separators displays the package context menu. (issue #16)

Changed

  • When focusing the Search box with Ctrl+F, the text in it is now selected so it's easier to type something else.
  • The Apply changes window no longer displays in the taskbar, and it also no longer has a minimize button.
  • Controls that could interfere with the update process are blocked from being used, though some are still available such as File>Exit, Help>About, and the package details textbox (if people get bored and want to read something while it updates). This really only impacts the built-in update system provided by libguinget.
  • update-manifests.bat's message box now talks about how it's deprecated and that it's being used instead of the built-in updater.
  • About window text updates:
    • Separators to make it a bit easier to visualize where text starts and stops for the license parts
    • libguinget is now mentioned here: "Apache License 2.0 summary as it applies to guinget and libguinget:" (new text in bold)
  • Code for getting package details from winget has been commented out to save space in libguinget.dll's PackageTools class. This code is for example purposes and is deprecated.
  • libguinget's assembly info now has "Package and package list tools for guinget and other programs that want to use them." (new text in bold)
  • Documentation updates:
    • Project roadmap had some things moved around a bit.
    • System requirements are now a bit more detailed, especially with regards to minimum and recommended hardware requirements based on my testing.
    • Usage instructions now talk about how to use the new, built-in package list updater.

Deprecated

  • update-manifests.bat is deprecated as mentioned above. 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's been commented out as mentioned above. This code may continue to exist in this state as an example for how to get info from winget.
guinget - Version 0.1 Pre-Alpha 2

Published by DrewNaylor over 4 years ago

guinget Version 0.1 Pre-Alpha 2 Changelog

Released on 6/8/2020 (MM/DD/YYYY).

Only three days after the first pre-release, a new pre-release version is ready! Even though there aren't many changes in this version, what has been changed has made a major difference for usability in my opinion. 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.exe" in the archive:
9E93D482550551BF0529BF1CB26AF0B9562622760ECCD9BE30F0293031F414BF

SHA-256 sum for "libguinget.dll" in the archive:
7886890B0BC4168FDFFB853ACAB6313B77CDBF4E7905006FA64186F522496AC5

SHA-256 sum for "update-manifests.bat" in the archive:
AFA421669D4856FB9136656B97CD2098478B1FE67AD5CB2326DA5A8BDA4BD36A

SHA-256 sum for "YamlDotNet.dll" in the archive:
632E1C37E67E5BE46766FFC9ED7790C22D1FE75A5B83AAB9EC4C0678414E5B82

Added

  • You can now search for packages using the search bar available in the toolbar.
    • For now, this only searches in the Package column, but searching in other columns is planned.
    • Activating the search box is done in multiple ways:
      • Simply clicking the search box
      • Pressing Ctrl+F
      • Choosing Package list>Search from the menubar
    • Starting a search can be done in a few ways:
      • Pressing Enter once you're done typing
      • Clicking the Search toolbar button
    • If there are no packages loaded, searching won't do anything.
    • Please be aware that using Ctrl+A to select all packages in the search results currently selects even non-filtered packages.
    • At the moment, you'll have to manually clear the search box and search again to get back to the non-filtered package list.

Changed

  • Marking many packages at once is now almost instant as column auto-sizing is turned off while marking packages if more than 25 are selected to be marked.
    • The threshold of selected packages that determines whether we should disable column auto-sizing while marking selected packages could change in the future, and it may eventually be a setting the user can change.
    • Previously, column auto-sizing wasn't disabled, and marking an excessive number of packages would take way too long. Now the entire list can be marked in what feels like less than a second or two (even though that's not recommended), while before it would take an extremely long amount of time. It was awful, just awful.
  • Instead of saying "# packages listed", we're now saying "# packages loaded" as we don't yet have a way to show the current number of visible rows. Once we do have that available, it'll be changed back so that the number of packages listed updates as the list is filtered.
  • The project roadmap has been thinned out a bit to spread features and changes across more versions to get newer versions out faster.
guinget - Version 0.1 Pre-Alpha 1

Published by DrewNaylor over 4 years ago

guinget Version 0.1 Pre-Alpha 1 Changelog

Released on 6/5/2020 (MM/DD/YYYY).

guinget is now ready for its first pre-release at Version 0.1 Pre-Alpha 1, and it only took about two weeks from starting the project until now! Couldn't have done it without both Microsoft's winget/Windows Package Manager and YamlDotNet. guinget takes heavy inspiration from Synaptic Package Manager as well, so I need to give credit there. Please be sure to read the Readme included with 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.

SHA-256 sum for "guinget.exe" in the archive:
D54E9A09F9FD2DF783ABFEBC0C7B40240F46EBEE6CEDF2548E1F85D79F6FB14D

SHA-256 sum for "libguinget.dll" in the archive:
09284FABF19CE274F4DFE8C0CB74E5440CAD49100CEBF72AF19F740A51AE1BBD

SHA-256 sum for "update-manifests.bat" in the archive:
AFA421669D4856FB9136656B97CD2098478B1FE67AD5CB2326DA5A8BDA4BD36A

SHA-256 sum for "YamlDotNet.dll" in the archive:
632E1C37E67E5BE46766FFC9ED7790C22D1FE75A5B83AAB9EC4C0678414E5B82

Features

Instead of a standard changelog, I'm going to list some features of guinget.

  • One or multiple packages can be marked to be "Installed" or "Do nothing" (ignored, basically)
    • Package selection can be done multiple ways:
      • Through the package context menu's Action submenu (double-click and right-click both work to open the menu, though only right-click allows multiple packages to be selected and marked at once)
      • From the Package list>Selected package>Action submenu
      • By changing the combobox dropdown's value in the Action column. Changing the value in the dropdown may take a few clicks to open it, so it may be easier to use the context menu or simply use the arrow keys to move over to it and press spacebar to activate it, allowing the up and down arrow keys to mark as desired.
    • Multiple packages can be selected by using Ctrl+Click, Shift-Click, or Shift+arrow keys.
    • At the moment, marking a lot of packages at once (say, over 50 packages) may take a long time and you won't be able to interact with the window while it's marking them. I want to make this async so that the window can be moved around and stuff, but that's not something I've figured out how to do well yet.
  • Package list can be sorted by different columns, and these columns can be resized and moved. These columns include:
    • Action ("do nothing" or "install" for now)
    • Status ("unknown" for now, since guinget doesn't track whether a package is installed or not yet)
    • Package (displays the ID for each package; copied into the Apply changes dialog)
    • Name (the common name for a package as opposed to its ID)
    • Version (for now it shows all the versions available, but I'd like it to show only the latest version in the column so it's cleaner and put the rest in another window, just like what Synaptic does; copied into the Apply changes dialog)
    • Description
  • Details for each package are shown in the package details textbox below the package list. If you want to, you can resize this textbox since it uses a split view control.
  • Package list cache is stored in %AppData%\winget-frontends\source\winget-pkgs\pkglist\manifests and can be refreshed using any of the following methods:
    • Clicking the Refresh cache button on the toolbar.
    • Using Package list>Refresh cache from the menubar.
    • Pressing Ctrl+R.
    • Running update-manifests.bat directly. Please note that guinget still opens this script every time you refresh the cache, so you'll have to type no or close the script if you don't want it updating again if you just ran it manually.
  • The package list cache as mentioned above is used to fill the package list once you're ready and you've dismissed the last message box before the package list loads.
  • Other sources can have their manifests placed into %AppData%\winget-frontends\source\(source name)\pkglist\manifests, but only Microsoft/winget-pkgs is supported by guinget and update-manifests.bat for now.
  • That package cache location can be used by other winget frontends if they wish to use it, but there's no way to check yet if something is using the folder like APT with its lock file. This feature is planned.
  • Package selections are applied using the Apply changes dialog, which you can access from either its toolbar button, or from Package list>Apply changes...
    • For now, this dialog doesn't support batch installs (or uninstalls, whenever winget [and guinget, by extension] gets that feature), so you'll have to install packages either by double-clicking on each one in the list, or by pressing Enter on each one, when you're ready to start each package's install.
    • The Confirm changes button currently just shows a message box displaying something similar to the item above this one.
  • Any controls that don't have their features fully implemented are hidden by default, but you can show them in one of two ways:
    • Temporarily (until closing and restarting guinget) by clicking a hidden label in the bottom-left corner of the About window.
    • Semi-permanently (until the next guinget update) by opening the config file and changing the value for HideUnfinishedControls from True to False.
Badges
Extracted from project README
Main branch build status/nightly build
Related Projects