// ソフトリストの中身のパッケージ\r
if ((filteringType & PackageListViewPkgTypeFilter.NotInstalled) != 0) {\r
foreach (Package pkg in pkgListMan.AvailablePkgList.Search(keyword)) {\r
- if (Installation.GetPreferInstallerIndex(pkg) >= 0) { // インストール可能\r
+ if (Installation.IsInstallablePackage(pkg)) { // インストール可能\r
bool isInstalledAS = (pkgListMan.InstalledPkgList.GetPackageForName(pkg.Name) != null);\r
bool isInstalledSys = (pkgListMan.SystemInstalledPkgList.GetPackageForName(pkg.Name) != null);\r
\r
set {\r
installedPackage = value;\r
\r
+ installerIndex = getPreferInstallerIndex(value);\r
installerFile = getArchiveFilePath();\r
- installerIndex = GetPreferInstallerIndex(value);\r
}\r
}\r
\r
return exitCode;\r
}\r
\r
+ #region インストーラーファイル設定時の処理\r
+ \r
/// <summary>\r
/// もっともふさわしいインストーラー番号を返す\r
/// </summary>\r
/// <returns></returns>\r
- public static int GetPreferInstallerIndex(Package InstalledPackage)\r
+ private static int getPreferInstallerIndex(Package InstalledPackage)\r
{\r
if (InstalledPackage.Type == InstallerType.CANNOT_INSTALL) { // インストール不能パッケージ\r
return -1;\r
/// <summary>\r
/// インストーラーの保存先パスを生成\r
/// </summary>\r
+ /// <remarks>installerIndexが求まっているものとして仮定して処理する</remarks>\r
private string getArchiveFilePath()\r
{\r
Package package = this.InstalledPackage;\r
\r
string folderName = string.Format("{0}({1})", package.Name, package.Version);\r
+ string subFolderName = string.Format("installer.{0}", (installerIndex >= 0)? installerIndex.ToString("D") : "X");\r
string fileName = NaGet.Utils.Url2filename(new Uri(package.Installer[0].Url.Href));\r
\r
- string folder = Path.Combine(NaGet.Env.ArchiveFolderPath, folderName);\r
+ string folder = Path.Combine(NaGet.Env.ArchiveFolderPath, Path.Combine(folderName, subFolderName));\r
\r
if (! File.Exists(Path.Combine(folder, fileName))) {\r
if (Directory.Exists(folder)) {\r
return Path.Combine(folder, fileName);\r
}\r
\r
+ #endregion\r
+ \r
/// <summary>\r
/// すでにインストールされているパッケージを取得する\r
/// </summary>\r
return string.Join(" ", strs);\r
}\r
\r
+ #region 便利メソッド群\r
+ \r
/// <summary>\r
/// パッケージ配列をインストール処理配列に変換する便利メソッド\r
/// </summary>\r
}\r
return insts;\r
}\r
+ \r
+ /// <summary>\r
+ /// パッケージがインストール可能かを戻します。\r
+ /// </summary>\r
+ /// <param name="pkg">検査対象のパッケージ</param>\r
+ /// <returns>インストール可能か否か</returns>\r
+ public static bool IsInstallablePackage(Package pkg)\r
+ {\r
+ int installerIndex = getPreferInstallerIndex(pkg);\r
+ return installerIndex >= 0;\r
+ }\r
+ \r
+ #endregion\r
}\r
}\r