프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / MarkusAutoUpdate / src / MarkusUpdateExtract / Program.cs @ d8f5045e

이력 | 보기 | 이력해설 | 다운로드 (3.17 KB)

1
using System;
2
using System.IO;
3
using System.IO.Compression;
4
using System.Diagnostics;
5
using System.Linq;
6
using System.Security.AccessControl;
7
using System.ServiceModel;
8
using System.IO.MemoryMappedFiles;
9
using System.Text;
10

    
11
namespace MarkusUpdateExtract
12
{
13
    class Program
14
    {
15
        [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
16
        static void Main(string[] args)
17
        {
18
            try
19
            {
20

    
21
                //args = new string[]
22
                //{
23
                //@"C:\Program Files\Doftech\MARKUS",
24
                //@"C:\Users\kts\AppData\Local\Temp\MARKUS\fwcp21al.rqk\",
25
                //@"C:\Users\kts\AppData\Local\Temp\MARKUS\fwcp21al.rqk\Markus_3.0.0.zip",
26
                //@"C:\Program Files\Doftech\MARKUS\KCOM.exe",
27
                //"eyJEb2N1bWVudEl0ZW1JRCI6IjMwMDAwMTY1IiwiYlBhcnRuZXIiOmZhbHNlLCJDcmVhdGVGaW5hbFBERlBlcm1pc3Npb24iOnRydWUsIk5ld0NvbW1lbnRQZXJtaXNzaW9uIjp0cnVlLCJQcm9qZWN0Tk8iOiIwMDAwMDAiLCJVc2VySUQiOiJkb2Z0ZWNoIn0="
28
                //};
29

    
30
                Console.ReadKey();
31

    
32
                using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("MarkusUpdateExtract",MemoryMappedFileRights.Read))
33
                {
34
                    using (Stream view = mmf.CreateViewStream())
35
                    {
36
                        view.Position = 0;
37

    
38
                        using (StreamReader reader = new StreamReader(view, Encoding.UTF8))
39
                        {
40
                            args = reader.ReadToEnd().Split(" ");
41
                        }
42
                    }
43
                }
44

    
45
                var InstallPath = args[0];
46
                var tempStoragePath = args[1];
47
                var downloadfile = args[2];
48
                var kcomPath = args[3];
49
                var markusPram = args[4];
50

    
51
                //DirectoryInfo dInfo = new DirectoryInfo(InstallPath);
52
                //DirectorySecurity dSecurity = dInfo.GetAccessControl();
53
                //dSecurity.AddAccessRule(new FileSystemAccessRule(System.Security.Principal.WindowsIdentity.GetCurrent().Name, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
54
                //dInfo.SetAccessControl(dSecurity);
55

    
56
                var extractFolder = Path.Combine(tempStoragePath, "Extract");
57

    
58
                ZipFile.ExtractToDirectory(downloadfile, extractFolder, true);
59

    
60
                foreach (var file in Directory.EnumerateFiles(extractFolder, "*.*", SearchOption.AllDirectories))
61
                {
62
                    var target = System.IO.Path.Combine(InstallPath, file.Replace(extractFolder, "").Substring(1));
63

    
64
                    File.Copy(file, target, File.Exists(target));
65
                }
66

    
67
                Process.Start(kcomPath, markusPram);
68
                Console.ReadKey();
69
                Environment.Exit(1);
70
            }
71
            catch (Exception ex) 
72
            {
73
                Console.WriteLine(ex.ToString());
74

    
75
                if(ex.InnerException != null)
76
                    Console.WriteLine(ex.InnerException.ToString());
77

    
78
                Console.ReadKey();
79
                Environment.Exit(1);
80
            }
81
        }
82
    }
83
}
클립보드 이미지 추가 (최대 크기: 500 MB)