using System.Diagnostics;\r
using NaGet.Net;\r
using NaGet.SubCommands;\r
using System.Diagnostics;\r
using NaGet.Net;\r
using NaGet.SubCommands;\r
+using System.Xml.Serialization;\r
\r
namespace NaGet.Packages.Install\r
{\r
\r
namespace NaGet.Packages.Install\r
{\r
/// </summary>\r
public class Installation\r
{\r
/// </summary>\r
public class Installation\r
{\r
+ private Package installedPackage;\r
+ \r
/// <summary>\r
/// インストールするパッケージ\r
/// </summary>\r
/// <summary>\r
/// インストールするパッケージ\r
/// </summary>\r
- public Package InstalledPackage;\r
+ public Package InstalledPackage {\r
+ get { return installedPackage; }\r
+ set {\r
+ installedPackage = value;\r
+ \r
+ installerFile = getArchiveFilePath();\r
+ installerIndex = GetPreferInstallerIndex(value);\r
+ }\r
+ }\r
\r
/// <summary>\r
/// (保存される)インストーラのファイルのパス\r
/// </summary>\r
\r
/// <summary>\r
/// (保存される)インストーラのファイルのパス\r
/// </summary>\r
- public string InstallerFile;\r
+ private string installerFile;\r
\r
/// <summary>\r
/// インストールが完了されたか否かのフラグ\r
\r
/// <summary>\r
/// インストールが完了されたか否かのフラグ\r
/// <summary>\r
/// コンストラクタ\r
/// </summary>\r
/// <summary>\r
/// コンストラクタ\r
/// </summary>\r
- /// <param name="package">インストールするパッケージ</param>\r
- public Installation(Package package)\r
+ public Installation()\r
- InstalledPackage = package;\r
- InstallerFile = getArchiveFilePath();\r
- installerIndex = GetPreferInstallerIndex(package);\r
}\r
\r
/// <summary>\r
/// コンストラクタ\r
/// </summary>\r
/// <param name="package">インストールするパッケージ</param>\r
}\r
\r
/// <summary>\r
/// コンストラクタ\r
/// </summary>\r
/// <param name="package">インストールするパッケージ</param>\r
- /// <param name="installerfile">(保存される)インストーラのファイルのパス</param>\r
- protected Installation(Package package, string installerfile)\r
+ public Installation(Package package)\r
{\r
InstalledPackage = package;\r
{\r
InstalledPackage = package;\r
- InstallerFile = installerfile;\r
- installerIndex = GetPreferInstallerIndex(package);\r
/// </summary>\r
public bool Downloaded {\r
get {\r
/// </summary>\r
public bool Downloaded {\r
get {\r
- return File.Exists(InstallerFile) && ((File.GetAttributes(InstallerFile) & FileAttributes.Hidden) != FileAttributes.Hidden);\r
+ return File.Exists(installerFile) && ((File.GetAttributes(installerFile) & FileAttributes.Hidden) != FileAttributes.Hidden);\r
/// </summary>\r
public bool Silent {\r
get {\r
/// </summary>\r
public bool Silent {\r
get {\r
- return (IsSupportsSilentOnly)? true :\r
+ return (SupportsSilentOnly)? true :\r
(IsSupportsSilent)? silent :\r
false;\r
}\r
(IsSupportsSilent)? silent :\r
false;\r
}\r
/// <summary>\r
/// サイレントインストールだけをサポートしているか否か\r
/// </summary>\r
/// <summary>\r
/// サイレントインストールだけをサポートしているか否か\r
/// </summary>\r
- public bool IsSupportsSilentOnly {\r
+ public bool SupportsSilentOnly {\r
get { return InstalledPackage.Type == InstallerType.ARCHIVE; }\r
}\r
\r
/// <summary>\r
get { return InstalledPackage.Type == InstallerType.ARCHIVE; }\r
}\r
\r
/// <summary>\r
+ /// 選択されたパッケージは、AppliStationではなくPCへのインストールをするのか否かを返す。\r
+ /// </summary>\r
+ /// <remark>RunAsが必要か否かの判断にしようされる</remark>\r
+ public bool TargetPC {\r
+ get { return InstalledPackage.Type != InstallerType.ARCHIVE; }\r
+ }\r
+ \r
+ /// <summary>\r
/// ダウンロードを行う。\r
/// </summary>\r
/// <param name="downloader">ダウンローダオブジェクト</param>\r
/// ダウンロードを行う。\r
/// </summary>\r
/// <param name="downloader">ダウンローダオブジェクト</param>\r
{\r
if (! Installed) {\r
string url = InstalledPackage.Installer[installerIndex].Url.Href;\r
{\r
if (! Installed) {\r
string url = InstalledPackage.Installer[installerIndex].Url.Href;\r
- downloader.Download(url, InstallerFile);\r
+ downloader.Download(url, installerFile);\r
\r
// サーバ指定のファイル名に変更する\r
if (! string.IsNullOrEmpty(downloader.DownloadedFileName)) {\r
\r
// サーバ指定のファイル名に変更する\r
if (! string.IsNullOrEmpty(downloader.DownloadedFileName)) {\r
- string newFile = Path.Combine(Path.GetDirectoryName(InstallerFile), downloader.DownloadedFileName);\r
- File.Move(InstallerFile, newFile);\r
- InstallerFile = newFile;\r
+ string newFile = Path.Combine(Path.GetDirectoryName(installerFile), downloader.DownloadedFileName);\r
+ File.Move(installerFile, newFile);\r
+ installerFile = newFile;\r
HashValue[] hashValues = InstalledPackage.Installer[installerIndex].Hash;\r
if (hashValues != null) {\r
foreach (HashValue hash in hashValues) {\r
HashValue[] hashValues = InstalledPackage.Installer[installerIndex].Hash;\r
if (hashValues != null) {\r
foreach (HashValue hash in hashValues) {\r
- if (! hash.Validate(InstallerFile)) {\r
+ if (! hash.Validate(installerFile)) {\r
/// <returns>インストーラの終了コード</returns>\r
public int Install()\r
{\r
/// <returns>インストーラの終了コード</returns>\r
public int Install()\r
{\r
- string installerFile = this.InstallerFile;\r
+ string installerFile = this.installerFile;\r
string tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());\r
\r
// アーカイブされているなら一旦展開\r
string tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());\r
\r
// アーカイブされているなら一旦展開\r
/// </summary>\r
public virtual void RemoveDownloadedFile()\r
{\r
/// </summary>\r
public virtual void RemoveDownloadedFile()\r
{\r
- if (Downloaded && File.Exists(InstallerFile)) {\r
- File.Delete(InstallerFile);\r
+ if (Downloaded && File.Exists(installerFile)) {\r
+ File.Delete(installerFile);\r