OSDN Git Service

archive-inst,インストール時に設定ファイルが上書きされてしまうことがある不具合とI/Oエラー時の異常終了を対処
authorttp <ttp@users.sourceforge.jp>
Sat, 5 Dec 2009 08:52:44 +0000 (17:52 +0900)
committerttp <ttp@users.sourceforge.jp>
Sat, 5 Dec 2009 08:52:44 +0000 (17:52 +0900)
archive-inst/Program.cs

index fdf1ba4..de1d698 100644 (file)
@@ -77,6 +77,7 @@ namespace ArchiveInstall
                                string filePath = NaGet.Utils.GetRelativePath(installSrc, file);\r
                                string targetFilePath = Path.Combine(targetDir, filePath);\r
                                if (File.Exists(targetFilePath)) {\r
+                                       File.SetAttributes(targetFilePath, FileAttributes.Normal);\r
                                        File.Delete(targetFilePath);\r
                                }\r
                                File.Move(file, targetFilePath);\r
@@ -320,20 +321,25 @@ namespace ArchiveInstall
                                                extract(arcFile, tempExtractDir);\r
                                        }\r
                                        \r
-                                       // STEP2. インストール\r
+                                       // STEP2. 展開フォルダでインストールファイルリストの作成\r
+                                       storeInstalledFileList(tempExtractDir);\r
+                                       \r
+                                       // STEP3. インストール\r
                                        install(tempExtractDir, targetDir);\r
                                        \r
                                        if (package != null) {\r
-                                               // STEP3. カスタマイズ可能な後処理\r
+                                               // STEP4. カスタマイズ可能な後処理\r
                                                postInstall(targetDir, package);\r
                                                \r
-                                               // STEP4. パッケージ情報をインストール先(targetDir)に置く\r
-                                               storeInstalledFileList(targetDir);\r
+                                               // STEP5. パッケージ情報をインストール先(targetDir)に置く\r
                                                storePackageXml(package, targetDir);\r
                                        }\r
                                } catch (DllNotFoundException) {\r
                                        Console.Error.WriteLine("E: Does not exist archive dll for {0}", arcFile); // TODO\r
                                        Environment.Exit(10);\r
+                               } catch (IOException e) {\r
+                                       Console.Error.WriteLine("E: File I/O Error : {0}", e.Message);\r
+                                       Environment.Exit(1);\r
                                } finally {\r
                                        Directory.Delete(tempExtractDir, true);\r
                                }\r