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