OSDN Git Service

na-get-lib,r925に伴うシリアル化可能に関する変更及び、InstalledPackageの外部からの参照をpropertyに変更
authorttp <ttp@users.sourceforge.jp>
Sat, 21 Jun 2008 02:50:30 +0000 (02:50 +0000)
committerttp <ttp@users.sourceforge.jp>
Sat, 21 Jun 2008 02:50:30 +0000 (02:50 +0000)
git-svn-id: http://localhost/svn/AppliStation/trunk@926 34ed2c89-c49f-4a4b-abdb-c318350108cf

na-get-lib/NaGet.Packages.Install/Installation.cs

index 8ff6026..9678d70 100644 (file)
@@ -3,6 +3,7 @@ using System.IO;
 using System.Diagnostics;\r
 using NaGet.Net;\r
 using NaGet.SubCommands;\r
+using System.Xml.Serialization;\r
 \r
 namespace NaGet.Packages.Install\r
 {\r
@@ -12,15 +13,25 @@ namespace NaGet.Packages.Install
     /// </summary>\r
     public class Installation\r
        {\r
+               private Package installedPackage;\r
+               \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
-               public string InstallerFile;\r
+               private string installerFile;\r
 \r
                /// <summary>\r
                /// インストールが完了されたか否かのフラグ\r
@@ -50,24 +61,17 @@ namespace NaGet.Packages.Install
                /// <summary>\r
                /// コンストラクタ\r
                /// </summary>\r
-               /// <param name="package">インストールするパッケージ</param>\r
-               public Installation(Package package)\r
+               public Installation()\r
                {\r
-                       InstalledPackage = package;\r
-                       InstallerFile = getArchiveFilePath();\r
-                       installerIndex = GetPreferInstallerIndex(package);\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
-                       InstallerFile = installerfile;\r
-                       installerIndex = GetPreferInstallerIndex(package);\r
                }\r
                \r
                /// <summary>\r
@@ -83,7 +87,7 @@ namespace NaGet.Packages.Install
                /// </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
                        }\r
                }\r
                \r
@@ -116,7 +120,7 @@ namespace NaGet.Packages.Install
                /// </summary>\r
                public bool Silent {\r
                        get {\r
-                               return (IsSupportsSilentOnly)? true :\r
+                               return (SupportsSilentOnly)? true :\r
                                        (IsSupportsSilent)? silent :\r
                                        false;\r
                        }\r
@@ -141,11 +145,19 @@ namespace NaGet.Packages.Install
                /// <summary>\r
                /// サイレントインストールだけをサポートしているか否か\r
                /// </summary>\r
-               public bool IsSupportsSilentOnly {\r
+               public bool SupportsSilentOnly {\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
@@ -153,13 +165,13 @@ namespace NaGet.Packages.Install
                {\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
-                                       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
                                }\r
                        }\r
                }\r
@@ -183,7 +195,7 @@ namespace NaGet.Packages.Install
                        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
                                                return false;\r
                                        }\r
                                }\r
@@ -237,7 +249,7 @@ namespace NaGet.Packages.Install
                /// <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
@@ -421,8 +433,8 @@ namespace NaGet.Packages.Install
                /// </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
                        }\r
                }\r
                \r