(release) 3.1.0#1135
Merged
Merged
Conversation
(maint) Finish the 3.0.0 release by merging master to develop
Update assembly signing conditions across project files to validate both that the CHOCOLATEY_OFFICIAL_KEY variable is set and that the key fileactually exists on disk. This prevents test failures when the variableis defined but points to a non-existent file path, and ensures that theassemblies are always signed.Key Changes:- Add file existence check to PropertyGroup conditions in relevant project files.Reason for the change:- Prevent test failures when signing key variable is set but file does not exist.- Improve build reliability by checking both variable and file existence.
…alidation (maint) Fix assembly not signed if environment key doesn't exist
(maint) merge master back to develop (v3.0.1)
This commit adds log4net as a top-level dependency to decouple the log4net dependency from Chocolatey.lib. This allows us to control the shipped version of log4net without having to take new dependencies on Chocolatey.lib.
(#1132) Update log4net dependency
This is a fairly significant overhaul of how the Chocolatey GUI internal messaging is done, in order to work around an issue that was idenitifed with the process of upgrading packages, when there is a prerelease version of the package available from a remote source. There were a combination of issues are play here, and I think it is safe to say that this _never_ worked. What follows is a summary of the changes that had to be made in order to get things to work, along with some other minor tweaks that had to be made in order to get things to work cleanly. The root of the problem was essentially that the RemoteSourceViews and some of the methods that are executed in the ChocolateyService, simply didn't know anything about prerelease packages. As a result, the ability to use the Upgrade Context menu action was never presented, and the Outdated/Installed status for a package was never updated correctly. - In order to keep information about the remote package that was located for a RemoteSource, we need to keep information about it around, so that this information can be used at later times. To that end, the ChocolateySource and RemoteVersion properties were added to the IPackageViewModel interface. - On the IChocolateyService, two new methods were added that can take into account what package version is being acted on, and also which RemoteSource made the request. This latter part is important when it comes to updating information about packages. In addition, the packageName argument was removed from the GetOutdatedPackages method, as this is no longer required. The old methods were marked as Obsolete, so that they aren't used again by mistake. - On the IChocoalteyGuiCacheService, a new method was added for purging the outdated packages. This needed to be more granular, and only delete the file(s) associated with a particular RemoteSource. - The new PurgeOutdatedPackages takes into account the fact that a persisted file is now kept around on a per RemoteSource basis. This was required due to the fact that a package could be outdated from more than one RemoteSource, with different package versions. As such, we need to be able to either delete _all_ files when purging, or only specific ones. - New Resource Strings were added to cover some new areas of functionality, and a single string was updated to make it clearer about what version is being shown. - Several new discrete message classes were added, and ultimately replaced the single PackageChangedMessage. This was the biggest part of the refactoring here, since it proved to be too complicated trying to update things based on a single message, with different types. By having a message for each change that can happen to a packge, it became much easier to update the necessary portions of the UI when things happened. - The RemoteSourceView was updated to include the information about whether a package was outdated or not. This had always been shown when using the Grid View layout, but it was never included in the list view for the remote source. On top of this, the binding for the list of Packages was switched to use an ICollectionView, similar to what is done on the LocalSourceView, there was no good reason for having a different approach here. - On the PackageView, an additional TextBlock was added to show the Available Version, in addition to essentially the installed version of a package, when the package is marked as IsOutdated. - The RemoteSourceViewModel was updated to record the Source that is used when querying for packages, as well as the RemoteVersion that was located. This information is very important when processing the update messages that are being sent out. It was also found that the information about whether a locally installed package was IsPinned or not wasn't being added to the PackageViewModel, so this was corrected as part of the overall work here. - In the LocalSrouceViewModel, the handle method for the PackageChangedMessage was completely removed, and replaced with smaller message handlers, to only deal with the install and uninstall methods, which are responsible for adding/removing a package from the overall package list. Important change here is to mark the ChocolateySource as null for this ViewModel, so it is clear that these are packages on the local computer. - Several changes in the PackageViewModel... It was found that some methods, Uninstall and Reinstall were available when a package was pinned, which isn't allowed. The Can methods were updated to include information about the package IsPinned property. All the _eventAggregator.PublishOnUIThreadAsync methods were updated to use the smaller messages, rather than the larger PackageChangedMessage message, which has beenn deleted. New handle methods were added for each of the new small messages, to correctly update the package inforamtion when an action was taken. Care was taken to only do this when it is known to be required, for example, uninstalling when on the LocalSource is not required. The biggest check here is about only marking a package as outdated when it is known to be being shown on the RemoteSource associated with where the outdated information is coming from. - In the ChocolateyService, a race condition was discovered, where the ChocolateyConfiguration was being overwritten before the intended execution could be completed. To guard against this, Lock.WriteLockAsync was added before each invocation. This approach was already being used in some areas, but not all of them, so the decision was taken to added it to all methods. When storing the information about what packages are outdated, a file is now created per RemoteSource, and also whether it includes prerelease packages or not. The actual call for outdated packages was updated to use the same approach that is used in Chocolatey Agent, rather than calling UpgradeDryRun. These are _essentially_ the same thing, but it was felt that it is better to keep things consistent across products. The UpdatePackage method was updated to include the version number, which now allows the installation of prerelease package versions.
This commit wraps a few more functions with locking for the config file and removes the unused original lock mechanism.
(#1109) Fix issue on upgrading prerelease packages
Establish foundational UI testing framework for ChocolateyGui by introducing base test classes and initial test cases for package version handling. This enables automated testing of the application's user interface through FlaUI automation. Key Changes: - Add ChocolateyGuiTestBase class providing UIA2 automation and application startup logic with retry mechanisms - Create ChocolateyGuiBaseScreen base class for screen object models with helper methods for finding UI elements by text - Implement BetaPackagesTests fixture to verify stable and prerelease package version discovery and selection Reason for the change: - Establish automated UI testing capability to catch regressions in user-facing functionality - Provide reusable base classes to reduce duplication across future UI test implementations - Enable validation of package version filtering and selection workflows
This commit updates the AutomationIds to be in alphabetical order, and adds new Ids for parts that had been initially missed. It also cleans up some whitespace.
This updates the ChocolateyGui.UITests project to not build on the WIX configurations. When running an official build, the WIX build was building as well. This also adds a ReleaseOficial build to the UITests project for consistency with the other projects.
|
🎉 This issue has been resolved in version 3.1.0 🎉 The release is available on: Your GitReleaseManager bot 📦 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the finalization of the Chocolatey GUI 3.1.0 release. This includes the milestone https://github.com/chocolatey/ChocolateyGUI/milestone/41