private uint checkUnselectedDependencies()\r
{\r
uint retVal = 0;\r
+ \r
+ List<Package> instPkgs = new List<Package>();\r
+ foreach (Installation inst in Installations) {\r
+ instPkgs.Add(inst.InstalledPackage);\r
+ }\r
+ \r
List<Package> pkg = new List<Package>();\r
- foreach (Installation inst in DependeciesResolver.CreateRequiresInstallations(CheckedInstallations, pkgListMan)) {\r
+ foreach (Installation inst in DependeciesResolver.CreateRequiresInstallations(CheckedInstallations, pkgListMan, instPkgs)) {\r
pkg.Add(inst.InstalledPackage);\r
}\r
\r
List<Installation> depInsts;\r
\r
// 依存関係のインストールリスト\r
- depInsts = CreateRequiresInstallations(insts, pkgListsMan);\r
+ depInsts = CreateRequiresInstallations(insts, pkgListsMan, null);\r
dependencies = depInsts.ToArray();\r
\r
// 依存解決をしたインストールリスト\r
/// </summary>\r
/// <param name="insts">対象インストールリスト</param>\r
/// <param name="pkgListsMan">現在インストールされているか否かの判断に使われるパッケージリスト</param>\r
+ /// <param name="preferencial">優先して使用をするパッケージのリスト。<c>null</c>でもよい</param>\r
/// <returns>Requires依存による依存</returns>\r
- public static List<Installation> CreateRequiresInstallations(Installation[] insts, PackageListsManager pkgListsMan)\r
+ public static List<Installation> CreateRequiresInstallations(Installation[] insts, PackageListsManager pkgListsMan, ICollection<Package> preferencial)\r
{\r
List<Installation> reqInsts = new List<Installation>();\r
\r
VersionComparetor vc = new VersionComparetor();\r
Package pkgToBeInstall = null;\r
\r
- foreach (Package pkg in pkgListsMan.availablePkgList.GetPackagesForEntry(entry)) {\r
- if ((pkgToBeInstall == null) || (vc.Compare(pkgToBeInstall.Version, pkg.Version) < 0)) {\r
- pkgToBeInstall = pkg;\r
+ if (preferencial != null) {\r
+ foreach (Package pkg in preferencial) {\r
+ if (entry.Match(pkg)) {\r
+ pkgToBeInstall = pkg;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ if (pkgToBeInstall == null) {\r
+ foreach (Package pkg in pkgListsMan.availablePkgList.GetPackagesForEntry(entry)) {\r
+ if ((pkgToBeInstall == null) || (vc.Compare(pkgToBeInstall.Version, pkg.Version) < 0)) {\r
+ pkgToBeInstall = pkg;\r
+ }\r
}\r
}\r
\r