root / HAgent / Horizon(TCP, HTTP) / Horizon / Updater.xaml.cs
이력 | 보기 | 이력해설 | 다운로드 (6.86 KB)
1 | 40 | HKM | using Newtonsoft.Json.Linq; |
---|---|---|---|
2 | using System; |
||
3 | using System.Collections.Generic; |
||
4 | using System.IO; |
||
5 | using System.Linq; |
||
6 | using System.Net; |
||
7 | using System.Text; |
||
8 | using System.Threading; |
||
9 | using System.Threading.Tasks; |
||
10 | using System.Windows; |
||
11 | using System.Windows.Controls; |
||
12 | using System.Windows.Data; |
||
13 | using System.Windows.Documents; |
||
14 | using System.Windows.Input; |
||
15 | using System.Windows.Media; |
||
16 | using System.Windows.Media.Imaging; |
||
17 | using System.Windows.Shapes; |
||
18 | using System.Windows.Threading; |
||
19 | |||
20 | namespace Horizon |
||
21 | { |
||
22 | public partial class Updater : Window |
||
23 | { |
||
24 | private delegate void CSafeSetText(string text); |
||
25 | private delegate void CSafeSetMaximum(Int32 value); |
||
26 | private delegate void CSafeSetValue(Int32 value); |
||
27 | |||
28 | private CSafeSetText csst; |
||
29 | private CSafeSetMaximum cssm; |
||
30 | private CSafeSetValue cssv; |
||
31 | private WebClient wc; |
||
32 | private Boolean setBaseSize; |
||
33 | private Boolean nowDownloading; |
||
34 | |||
35 | Thread thread; |
||
36 | Communicator com = new Communicator(); |
||
37 | |||
38 | int FileNum; |
||
39 | public Updater() |
||
40 | { |
||
41 | // 대리자를 초기화한다. |
||
42 | //csst = new CSafeSetText(CrossSafeSetTextMethod); |
||
43 | //cssm = new CSafeSetMaximum(CrossSafeSetMaximumMethod); |
||
44 | //cssv = new CSafeSetValue(CrossSafeSetValueMethod); |
||
45 | |||
46 | // 웹 클라이언트 개체를 초기화하고, |
||
47 | |||
48 | //com.TCPConnect(); |
||
49 | wc = new WebClient(); |
||
50 | //thread = new Thread(new ThreadStart(com.TCPConnect)); // http 로 바꾸기 |
||
51 | //thread.Start(); |
||
52 | //com.HttpConnect(); |
||
53 | //thread = new Thread(new ThreadStart(com.HttpConnect)); // http 로 바꾸기 |
||
54 | //thread.Start(); |
||
55 | |||
56 | InitializeComponent(); |
||
57 | Communicator.state = "update"; |
||
58 | |||
59 | // MessageBox.Show("업데이트 내역"); |
||
60 | |||
61 | } |
||
62 | |||
63 | public void DownLoad() |
||
64 | { |
||
65 | |||
66 | try |
||
67 | { |
||
68 | string file = com.filelist; |
||
69 | JObject filelist = JObject.Parse(file); |
||
70 | int value = filelist["files"].Count(); |
||
71 | Console.WriteLine(value); |
||
72 | foreach (var fileinfo in filelist["files"]) |
||
73 | { |
||
74 | // 파일이 저장될 위치를 저장한다. |
||
75 | var downloadFileName = fileinfo.Value<string>("path"); |
||
76 | Console.WriteLine(downloadFileName); |
||
77 | |||
78 | |||
79 | string foldername = downloadFileName.Substring(0, downloadFileName.LastIndexOf("/")); |
||
80 | DirectoryInfo folder = new DirectoryInfo(foldername); |
||
81 | if (!folder.Exists) |
||
82 | { |
||
83 | Directory.CreateDirectory("Program/"+folder.ToString()); |
||
84 | } |
||
85 | |||
86 | |||
87 | String fileName = String.Format("Program", System.IO.Path.GetFileName("http://192.168.0.32:3000/Uploads/")); |
||
88 | |||
89 | // 폴더가 존재하지 않는다면 폴더를 생성한다. |
||
90 | if (!System.IO.Directory.Exists("Program")) |
||
91 | System.IO.Directory.CreateDirectory("Program"); |
||
92 | |||
93 | wc.DownloadFile(new Uri("http://192.168.0.32:3000/Uploads/" + downloadFileName), "Program/"+ downloadFileName ); // 프로젝트네임 추가 |
||
94 | |||
95 | Console.WriteLine(FileNum++); |
||
96 | //Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate |
||
97 | //{ |
||
98 | // this.entire.Value = 100 * (FileNum / value); |
||
99 | //})); |
||
100 | |||
101 | } |
||
102 | // C 드라이브 밑의 downloadFiles 폴더에 파일 이름대로 저장한다. |
||
103 | |||
104 | // 다운로드 중이라는걸 알리기 위한 값을 설정하고, |
||
105 | // 프로그레스바의 크기를 0으로 만든다. |
||
106 | //entire.Value = 0; |
||
107 | setBaseSize = false; |
||
108 | nowDownloading = true; |
||
109 | //btnStart.Enabled = false; |
||
110 | //txtAddress.Enabled = false; |
||
111 | |||
112 | } |
||
113 | catch (Exception ex) |
||
114 | { |
||
115 | MessageBox.Show(ex.Message); |
||
116 | } |
||
117 | } |
||
118 | |||
119 | |||
120 | //void CrossSafeSetValueMethod(Int32 value) |
||
121 | //{ |
||
122 | // if (entire.InvokeRequired) |
||
123 | // entire.Invoke(cssm, value); |
||
124 | // else |
||
125 | // entire.Value = value; |
||
126 | //} |
||
127 | //void CrossSafeSetMaximumMethod(Int32 value) |
||
128 | //{ |
||
129 | // if (prgDownload.InvokeRequired) |
||
130 | // prgDownload.Invoke(cssm, value); |
||
131 | // else |
||
132 | // prgDownload.Maximum = value; |
||
133 | //} |
||
134 | //void CrossSafeSetTextMethod(String text) |
||
135 | //{ |
||
136 | // if (this.InvokeRequired) |
||
137 | // this.Invoke(csst, text); |
||
138 | // else |
||
139 | // this.Text = text; |
||
140 | //} |
||
141 | |||
142 | private void ExitButton(object sender, MouseButtonEventArgs e) |
||
143 | { |
||
144 | Close(); |
||
145 | } |
||
146 | |||
147 | private void Minimization(object sender, MouseButtonEventArgs e) |
||
148 | { |
||
149 | this.WindowState = WindowState.Minimized; |
||
150 | } |
||
151 | |||
152 | private void Window_Loaded(object sender, RoutedEventArgs e) |
||
153 | { |
||
154 | // updater.StartUpdate(callbackFunc); |
||
155 | } |
||
156 | private void callbackFunc(int entireProgress, int partProgress) |
||
157 | { |
||
158 | entire.Value = entireProgress; |
||
159 | part.Value = partProgress; |
||
160 | if (entireProgress == 100 && partProgress == 100) //업데이트가 끝나면 |
||
161 | { |
||
162 | Close(); |
||
163 | } |
||
164 | } |
||
165 | |||
166 | private void Button_Click(object sender, RoutedEventArgs e) |
||
167 | { |
||
168 | Thread Down = new Thread(new ThreadStart(DownLoad)); |
||
169 | Down.Start(); |
||
170 | //DownLoad(); |
||
171 | } |
||
172 | |||
173 | // UpdateClient updater; |
||
174 | |||
175 | //public Updater() |
||
176 | //{ |
||
177 | // InitializeComponent(); |
||
178 | // MessageBox.Show("업데이트 내역"); |
||
179 | // //updater = new UpdateClient(); |
||
180 | // //updater.GetUpdateList("http://" + url, project); |
||
181 | //} |
||
182 | |||
183 | //private void ExitButton(object sender, MouseButtonEventArgs e) |
||
184 | //{ |
||
185 | // Close(); |
||
186 | //} |
||
187 | |||
188 | //private void Minimization(object sender, MouseButtonEventArgs e) |
||
189 | //{ |
||
190 | // this.WindowState = WindowState.Minimized; |
||
191 | //} |
||
192 | |||
193 | //private void Window_Loaded(object sender, RoutedEventArgs e) |
||
194 | //{ |
||
195 | // // updater.StartUpdate(callbackFunc); |
||
196 | //} |
||
197 | //private void callbackFunc(int entireProgress, int partProgress) |
||
198 | //{ |
||
199 | // entire.Value = entireProgress; |
||
200 | // part.Value = partProgress; |
||
201 | // if (entireProgress == 100 && partProgress == 100) //업데이트가 끝나면 |
||
202 | // { |
||
203 | // Close(); |
||
204 | // } |
||
205 | //} |
||
206 | } |
||
207 | } |