From c91f159c112965670a9f9e702956996db5d4ec63 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Tue, 18 Oct 2022 18:14:14 -0400 Subject: [PATCH 1/7] fix Update prerelease version comparision that results in reinstall of packages --- src/code/UpdatePSResource.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index fcb0dfe3e..df04a6006 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -354,7 +354,8 @@ private string[] ProcessPackageNames( continue; } - if ((versionRange == VersionRange.All && repositoryPackage.Version > installedPackage.Version) || + NuGetVersion.TryParse(repositoryPackage.Version.ToString(), out NuGetVersion repositoryPackageNuGetVersion); + if ((versionRange == VersionRange.All && repositoryPackageNuGetVersion > installedVersion) || !versionRange.Satisfies(installedVersion)) { namesToUpdate.Add(repositoryPackage.Name); From 1db00f0edb40d693225520a7f3389f892ec5dc0d Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Tue, 18 Oct 2022 18:16:02 -0400 Subject: [PATCH 2/7] add error handling for NuGetVersion.TryParse call --- src/code/UpdatePSResource.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index df04a6006..c241d52fa 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -354,7 +354,12 @@ private string[] ProcessPackageNames( continue; } - NuGetVersion.TryParse(repositoryPackage.Version.ToString(), out NuGetVersion repositoryPackageNuGetVersion); + if (!NuGetVersion.TryParse(repositoryPackage.Version.ToString(), out NuGetVersion repositoryPackageNuGetVersion)) + { + WriteWarning($"Cannot parse nuget version in repository package '{repositoryPackage.Name}'. Cannot update package."); + continue; + } + if ((versionRange == VersionRange.All && repositoryPackageNuGetVersion > installedVersion) || !versionRange.Satisfies(installedVersion)) { From e355e05d1fa23d2fabf757991718feb2c5adf9ed Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Fri, 21 Oct 2022 13:08:06 -0400 Subject: [PATCH 3/7] add comment about System.Version comparision discrepancy --- src/code/UpdatePSResource.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index c241d52fa..9c9e03254 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -360,6 +360,8 @@ private string[] ProcessPackageNames( continue; } + // We compare NuGetVersions instead of System.Version as repositoryPackage.Version (3.0.17.0) and installedPackage.Version (3.0.17.-1) + // should refer to the same version but with System.Version end up having discrepancies which yields incorrect results. if ((versionRange == VersionRange.All && repositoryPackageNuGetVersion > installedVersion) || !versionRange.Satisfies(installedVersion)) { From c781f2c5bb719c6e789343b18a186a56fb0091e2 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Tue, 18 Oct 2022 18:14:14 -0400 Subject: [PATCH 4/7] fix Update prerelease version comparision that results in reinstall of packages --- src/code/UpdatePSResource.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index fcb0dfe3e..df04a6006 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -354,7 +354,8 @@ private string[] ProcessPackageNames( continue; } - if ((versionRange == VersionRange.All && repositoryPackage.Version > installedPackage.Version) || + NuGetVersion.TryParse(repositoryPackage.Version.ToString(), out NuGetVersion repositoryPackageNuGetVersion); + if ((versionRange == VersionRange.All && repositoryPackageNuGetVersion > installedVersion) || !versionRange.Satisfies(installedVersion)) { namesToUpdate.Add(repositoryPackage.Name); From 945b8fdc6a50e813093fd6807032bb5907e74654 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Tue, 18 Oct 2022 18:16:02 -0400 Subject: [PATCH 5/7] add error handling for NuGetVersion.TryParse call --- src/code/UpdatePSResource.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index df04a6006..c241d52fa 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -354,7 +354,12 @@ private string[] ProcessPackageNames( continue; } - NuGetVersion.TryParse(repositoryPackage.Version.ToString(), out NuGetVersion repositoryPackageNuGetVersion); + if (!NuGetVersion.TryParse(repositoryPackage.Version.ToString(), out NuGetVersion repositoryPackageNuGetVersion)) + { + WriteWarning($"Cannot parse nuget version in repository package '{repositoryPackage.Name}'. Cannot update package."); + continue; + } + if ((versionRange == VersionRange.All && repositoryPackageNuGetVersion > installedVersion) || !versionRange.Satisfies(installedVersion)) { From 9f2b295822ae9b3d263c244a3ff4d392c1cc912d Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Fri, 21 Oct 2022 13:08:06 -0400 Subject: [PATCH 6/7] add comment about System.Version comparision discrepancy --- src/code/UpdatePSResource.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index c241d52fa..9c9e03254 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -360,6 +360,8 @@ private string[] ProcessPackageNames( continue; } + // We compare NuGetVersions instead of System.Version as repositoryPackage.Version (3.0.17.0) and installedPackage.Version (3.0.17.-1) + // should refer to the same version but with System.Version end up having discrepancies which yields incorrect results. if ((versionRange == VersionRange.All && repositoryPackageNuGetVersion > installedVersion) || !versionRange.Satisfies(installedVersion)) { From 02585c571f12686a0d8c6bf29cfaba7471dcf489 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Wed, 2 Nov 2022 23:50:13 -0400 Subject: [PATCH 7/7] add version to verbose message --- src/code/UpdatePSResource.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code/UpdatePSResource.cs b/src/code/UpdatePSResource.cs index 9c9e03254..86b66dc71 100644 --- a/src/code/UpdatePSResource.cs +++ b/src/code/UpdatePSResource.cs @@ -369,7 +369,7 @@ private string[] ProcessPackageNames( } else { - WriteVerbose($"Installed package {repositoryPackage.Name} is up to date."); + WriteVerbose($"Installed package {repositoryPackage.Name} {repositoryPackageNuGetVersion} is already up to date."); } }