OSDN Git Service

na-get-lib, 7-Zipがインストールされているならば 7z.exe で展開するコードを追加 (cab他対策)。
[applistation/AppliStation.git] / archive-inst / Program.cs
index 934a584..5b1cc24 100644 (file)
@@ -13,15 +13,6 @@ namespace ArchiveInstall
                \r
                public const string InstalledPackageFileName = ".applistation.package.xml";\r
                \r
                \r
                public const string InstalledPackageFileName = ".applistation.package.xml";\r
                \r
-               private static void extract(string arcFile, string extractDestDir)\r
-               {\r
-                       StringBuilder output = new StringBuilder(1024);\r
-                       int res = NaGet.InteropServices.CommonArchiverExtracter.ExtractArchive(arcFile, extractDestDir, output, IntPtr.Zero);\r
-                       if (res != 0) {\r
-                               Environment.Exit(res);\r
-                       }\r
-               }\r
-               \r
                private static void install(string fakeTargetDir, string targetDir)\r
                {\r
                        // ハッシュ比較\r
                private static void install(string fakeTargetDir, string targetDir)\r
                {\r
                        // ハッシュ比較\r
@@ -316,6 +307,8 @@ namespace ArchiveInstall
                                Console.WriteLine("\t{0} -i archive.zip PackageName\tInstall", executeFileName);\r
                                Console.WriteLine("\t{0} -x PackageName\t\tUninstall", executeFileName);\r
                                Console.WriteLine();\r
                                Console.WriteLine("\t{0} -i archive.zip PackageName\tInstall", executeFileName);\r
                                Console.WriteLine("\t{0} -x PackageName\t\tUninstall", executeFileName);\r
                                Console.WriteLine();\r
+                               \r
+                               Environment.ExitCode = 1;\r
                        }\r
 \r
                        // インストールおよび展開処理\r
                        }\r
 \r
                        // インストールおよび展開処理\r
@@ -330,7 +323,7 @@ namespace ArchiveInstall
                                                string destFile = Path.Combine(tempExtractDir, Path.GetFileName(arcFile));\r
                                                File.Copy(arcFile, destFile);\r
                                        } else {\r
                                                string destFile = Path.Combine(tempExtractDir, Path.GetFileName(arcFile));\r
                                                File.Copy(arcFile, destFile);\r
                                        } else {\r
-                                               extract(arcFile, tempExtractDir);\r
+                                               NaGet.ArchiveExtractionHelpers.ArchiveExtract.Extract(arcFile, tempExtractDir);\r
                                        }\r
                                        \r
                                        // インストールの元となるフォルダを決定する\r
                                        }\r
                                        \r
                                        // インストールの元となるフォルダを決定する\r
@@ -354,12 +347,18 @@ namespace ArchiveInstall
                                                // STEP5. パッケージ情報をインストール先(targetDir)に置く\r
                                                storePackageXml(package, targetDir);\r
                                        }\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 (NaGet.InteropServices.CommonArchiverDllExtractionException e) {\r
+                                       Console.Error.WriteLine("E: Error: {0}", e.Message);\r
+                                       Environment.ExitCode = e.ReturnValue;\r
+                               } catch (NaGet.ArchiveExtractionHelpers.SevenZipExtractException e) {\r
+                                       Console.Error.WriteLine("E: Error: {0}", e.Message);\r
+                                       Environment.ExitCode = e.ReturnValue;\r
+                               } catch (ApplicationException e) {\r
+                                       Console.Error.WriteLine("E: Error: {0}", e.Message);\r
+                                       Environment.ExitCode = 1;\r
                                } catch (IOException e) {\r
                                        Console.Error.WriteLine("E: File I/O Error : {0}", e.Message);\r
                                } catch (IOException e) {\r
                                        Console.Error.WriteLine("E: File I/O Error : {0}", e.Message);\r
-                                       Environment.Exit(1);\r
+                                       Environment.ExitCode = 1;\r
                                } finally {\r
                                        Directory.Delete(tempExtractDir, true);\r
                                }\r
                                } finally {\r
                                        Directory.Delete(tempExtractDir, true);\r
                                }\r