From ea23df45e04dacbc7bebf61a446e0fe99cc54e37 Mon Sep 17 00:00:00 2001 From: balazs Date: Thu, 6 Jun 2019 10:49:34 +0000 Subject: [PATCH] Opkman: Warn user if a package is incompatible with the current system. Implemented for third party packages too. git-svn-id: trunk@61325 - --- .../onlinepackagemanager/opkman_mainfrm.pas | 89 ++++++++++++------- .../opkman_packagelistfrm.pas | 2 +- 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/components/onlinepackagemanager/opkman_mainfrm.pas b/components/onlinepackagemanager/opkman_mainfrm.pas index c50ef85586..9bdd8c3f4d 100644 --- a/components/onlinepackagemanager/opkman_mainfrm.pas +++ b/components/onlinepackagemanager/opkman_mainfrm.pas @@ -737,58 +737,79 @@ begin if not IsSomethingChecked(False) then Exit; CanGo := True; - NeedToRebuild := False; - VisualTree.UpdatePackageStates; - PackageListFrm := TPackageListFrm.Create(MainFrm); - try - PackageListFrm.lbMessage.Caption := rsMainFrm_PackageUpdate0; - PackageListFrm.PopulateList(2); - if PackageListFrm.Count > 0 then - CanGo := PackageListFrm.ShowModal = mrYes - else - CanGo := True; - finally - PackageListFrm.Free; - end; + if Options.IncompatiblePackages then + begin + PackageListFrm := TPackageListFrm.Create(MainFrm); + try + PackageListFrm.lbMessage.Caption := rsMainFrm_PackageIncompatible; + PackageListFrm.PopulateList(3); + if PackageListFrm.Count > 0 then + CanGo := PackageListFrm.ShowModal = mrYes + else + CanGo := True; + finally + PackageListFrm.Free; + end; + end; if CanGo then begin - if MessageDlgEx(rsMainFrm_PackageUpdateWarning, mtConfirmation, [mbYes, mbNo], Self) <> mrYes then - Exit; - - PackageAction := paUpdate; + NeedToRebuild := False; VisualTree.UpdatePackageStates; - if SerializablePackages.DownloadCount > 0 then + if Options.AlreadyInstalledPackages then begin - DoExtract := True; - CanGo := UpdateP(Options.LocalRepositoryUpdateExpanded, DoExtract) = mrOK; - VisualTree.UpdatePackageStates; + PackageListFrm := TPackageListFrm.Create(MainFrm); + try + PackageListFrm.lbMessage.Caption := rsMainFrm_PackageUpdate0; + PackageListFrm.PopulateList(2); + if PackageListFrm.Count > 0 then + CanGo := PackageListFrm.ShowModal = mrYes + else + CanGo := True; + finally + PackageListFrm.Free; + end; end; if CanGo then begin - if SerializablePackages.ExtractCount > 0 then + if MessageDlgEx(rsMainFrm_PackageUpdateWarning, mtConfirmation, [mbYes, mbNo], Self) <> mrYes then + Exit; + + PackageAction := paUpdate; + VisualTree.UpdatePackageStates; + if SerializablePackages.DownloadCount > 0 then begin - DoOpen := False; - CanGo := Extract(Options.LocalRepositoryUpdateExpanded, Options.LocalRepositoryPackagesExpanded, DoOpen, True) = mrOk; + DoExtract := True; + CanGo := UpdateP(Options.LocalRepositoryUpdateExpanded, DoExtract) = mrOK; VisualTree.UpdatePackageStates; end; if CanGo then begin - if Options.DeleteZipAfterInstall then - SerializablePackages.DeleteDownloadedZipFiles; - if SerializablePackages.InstallCount > 0 then + if SerializablePackages.ExtractCount > 0 then begin - InstallStatus := isFailed; - if Install(InstallStatus, NeedToRebuild) = mrOk then + DoOpen := False; + CanGo := Extract(Options.LocalRepositoryUpdateExpanded, Options.LocalRepositoryPackagesExpanded, DoOpen, True) = mrOk; + VisualTree.UpdatePackageStates; + end; + + if CanGo then + begin + if Options.DeleteZipAfterInstall then + SerializablePackages.DeleteDownloadedZipFiles; + if SerializablePackages.InstallCount > 0 then begin - if (InstallStatus = isSuccess) or (InstallStatus = isPartiallyFailed) then + InstallStatus := isFailed; + if Install(InstallStatus, NeedToRebuild) = mrOk then begin - SerializablePackages.MarkRuntimePackages; - VisualTree.UpdatePackageStates; - if NeedToRebuild then - Rebuild; + if (InstallStatus = isSuccess) or (InstallStatus = isPartiallyFailed) then + begin + SerializablePackages.MarkRuntimePackages; + VisualTree.UpdatePackageStates; + if NeedToRebuild then + Rebuild; + end; end; end; end; diff --git a/components/onlinepackagemanager/opkman_packagelistfrm.pas b/components/onlinepackagemanager/opkman_packagelistfrm.pas index d7feca81c4..e280b6bfaf 100644 --- a/components/onlinepackagemanager/opkman_packagelistfrm.pas +++ b/components/onlinepackagemanager/opkman_packagelistfrm.pas @@ -232,7 +232,7 @@ begin begin Node := FVST.AddChild(nil); Data := FVST.GetNodeData(Node); - Data^.FName := LazarusPkg.Name + '(' + LazarusPkg.InstalledFileVersion + ')'; + Data^.FName := LazarusPkg.Name + '(' + LazarusPkg.VersionAsString + ')'; Data^.FImageIndex := IMG_PKG_FILE; Data^.FSupLazVers := LazarusPkg.LazCompatibility; Data^.FIsLazComp := LazComp;