ghlight">+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb 68
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.exe
69
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
70
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.dll
71
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
72
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
73
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
74
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
75
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
76
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
77
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
78
+E:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
79
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
80
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Sample.sdf
81
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
82
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1034.pdf
83
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
84
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\535.pdf
85
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\817B.pdf
86
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
87
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
88
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.exe
89
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
90
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.dll
91
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
92
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
93
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
94
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
95
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
96
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
97
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
98
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
99
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
100
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1466.pdf
101
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1306.pdf
102
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
103
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1146.pdf
104
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\011A.pdf
105
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
106
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
107
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\Sample.sdf
108
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\011A.pdf
109
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
110
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1034.pdf
111
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
112
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
113
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1466.pdf
114
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1306.pdf
115
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\535.pdf
116
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
117
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\817B.pdf
118
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1146.pdf
119
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
120
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
121
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
122
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.exe
123
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
124
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.dll
125
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
126
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
127
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
128
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
129
+K:\WpfApplication19\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
130
+K:\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
131
+K:\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
132
+K:\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
133
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
134
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\Sample.sdf
135
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\011A.pdf
136
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
137
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1034.pdf
138
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
139
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
140
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1466.pdf
141
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1306.pdf
142
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\535.pdf
143
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
144
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\817B.pdf
145
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\agreements\1146.pdf
146
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
147
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
148
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
149
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.exe
150
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
151
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.dll
152
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
153
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
154
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
155
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
156
+F:\WpfApplication19\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
157
+F:\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
158
+F:\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
159
+F:\WpfApplication19\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
160
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
161
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Sample.sdf
162
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\011A.pdf
163
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
164
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1034.pdf
165
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
166
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
167
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1466.pdf
168
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1306.pdf
169
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\535.pdf
170
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
171
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\817B.pdf
172
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1146.pdf
173
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
174
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
175
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
176
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfApplication19.exe
177
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
178
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfLocalization.dll
179
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
180
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
181
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
182
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
183
+F:\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
184
+F:\WpfApplication19 - Copy\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
185
+F:\WpfApplication19 - Copy\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
186
+F:\WpfApplication19 - Copy\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
187
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
188
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Sample.sdf
189
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\011A.pdf
190
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
191
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1034.pdf
192
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
193
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
194
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1466.pdf
195
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1306.pdf
196
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\535.pdf
197
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
198
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\817B.pdf
199
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\agreements\1146.pdf
200
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
201
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
202
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
203
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfApplication19.exe
204
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
205
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfLocalization.dll
206
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
207
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
208
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
209
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
210
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
211
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
212
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
213
+C:\Users\tum\Documents\WpfApplication19 - Copy\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
214
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
215
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
216
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
217
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
218
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
219
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
220
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
221
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
222
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
223
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
224
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
225
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
226
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
227
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
228
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
229
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
230
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
231
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
232
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
233
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
234
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
235
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
236
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
237
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
238
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
239
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
240
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
241
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
242
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
243
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
244
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
245
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
246
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
247
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
248
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
249
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
250
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
251
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
252
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
253
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
254
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
255
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
256
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
257
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
258
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
259
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
260
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
261
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
262
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
263
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
264
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
265
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
266
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
267
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
268
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
269
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
270
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
271
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
272
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
273
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
274
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
275
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
276
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
277
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
278
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
279
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
280
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
281
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
282
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
283
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
284
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
285
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
286
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
287
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
288
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
289
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
290
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
291
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojResolveAssemblyReference.cache
292
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
293
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
294
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
295
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
296
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
297
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
298
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
299
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
300
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
301
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
302
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
303
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
304
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
305
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
306
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
307
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
308
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
309
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
310
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
311
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
312
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
313
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
314
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
315
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
316
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
317
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojResolveAssemblyReference.cache
318
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
319
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
320
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
321
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
322
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
323
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
324
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
325
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
326
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
327
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
328
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
329
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
330
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
331
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
332
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
333
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
334
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
335
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
336
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
337
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
338
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
339
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
340
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe.config
341
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
342
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
343
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
344
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojAssemblyReference.cache
345
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CoreCompileInputs.cache
346
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CopyComplete
347
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
348
+D:\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
349
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
350
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
351
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
352
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
353
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
354
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
355
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
356
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
357
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
358
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
359
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
360
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
361
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
362
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe.config
363
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
364
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
365
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
366
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
367
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
368
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
369
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe.config
370
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
371
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.AssemblyReference.cache
372
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.SuggestedBindingRedirects.cache
373
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CoreCompileInputs.cache
374
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CopyComplete
375
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
376
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb

+ 0 - 0
ConsoleApplication1/obj/x86/Debug/ConsoleApplication1.csproj.SuggestedBindingRedirects.cache


BIN
ConsoleApplication1/obj/x86/Debug/ConsoleApplication1.csprojResolveAssemblyReference.cache


BIN
ConsoleApplication1/obj/x86/Debug/ConsoleApplication1.exe


BIN
ConsoleApplication1/obj/x86/Debug/ConsoleApplication1.pdb


BIN
ConsoleApplication1/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
ConsoleApplication1/obj/x86/Debug/ResolveAssemblyReference.cache


+ 10 - 0
ConsoleApplication1/obj/x86/Release/ConsoleApplication1.csproj.FileListAbsolute.txt

@@ -0,0 +1,10 @@
1
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\ConsoleApplication1.exe
2
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\ConsoleApplication1.pdb
3
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfApplication19.exe
4
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfLocalization.dll
5
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfApplication19.pdb
6
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfLocalization.pdb
7
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\th-TH\WpfApplication19.resources.dll
8
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Release\ResolveAssemblyReference.cache
9
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.exe
10
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.pdb

BIN
ConsoleApplication1/obj/x86/Release/ConsoleApplication1.exe


BIN
ConsoleApplication1/obj/x86/Release/ConsoleApplication1.pdb


BIN
ConsoleApplication1/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache


BIN
ConsoleApplication1/obj/x86/Release/ResolveAssemblyReference.cache


+ 657 - 0
Installer/Installer.vdproj

@@ -0,0 +1,657 @@
1
+"DeployProject"
2
+{
3
+"VSVersion" = "3:800"
4
+"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
5
+"IsWebType" = "8:FALSE"
6
+"ProjectName" = "8:Installer"
7
+"LanguageId" = "3:1033"
8
+"CodePage" = "3:1252"
9
+"UILanguageId" = "3:1033"
10
+"SccProjectName" = "8:"
11
+"SccLocalPath" = "8:"
12
+"SccAuxPath" = "8:"
13
+"SccProvider" = "8:"
14
+    "Hierarchy"
15
+    {
16
+    }
17
+    "Configurations"
18
+    {
19
+        "Debug"
20
+        {
21
+        "DisplayName" = "8:Debug"
22
+        "IsDebugOnly" = "11:TRUE"
23
+        "IsReleaseOnly" = "11:FALSE"
24
+        "OutputFilename" = "8:Debug\\Installer.msi"
25
+        "PackageFilesAs" = "3:2"
26
+        "PackageFileSize" = "3:-2147483648"
27
+        "CabType" = "3:1"
28
+        "Compression" = "3:2"
29
+        "SignOutput" = "11:FALSE"
30
+        "CertificateFile" = "8:"
31
+        "PrivateKeyFile" = "8:"
32
+        "TimeStampServer" = "8:"
33
+        "InstallerBootstrapper" = "3:2"
34
+        }
35
+        "Release"
36
+        {
37
+        "DisplayName" = "8:Release"
38
+        "IsDebugOnly" = "11:FALSE"
39
+        "IsReleaseOnly" = "11:TRUE"
40
+        "OutputFilename" = "8:Release\\Installer.msi"
41
+        "PackageFilesAs" = "3:2"
42
+        "PackageFileSize" = "3:-2147483648"
43
+        "CabType" = "3:1"
44
+        "Compression" = "3:2"
45
+        "SignOutput" = "11:FALSE"
46
+        "CertificateFile" = "8:"
47
+        "PrivateKeyFile" = "8:"
48
+        "TimeStampServer" = "8:"
49
+        "InstallerBootstrapper" = "3:2"
50
+        }
51
+    }
52
+    "Deployable"
53
+    {
54
+        "CustomAction"
55
+        {
56
+        }
57
+        "DefaultFeature"
58
+        {
59
+        "Name" = "8:DefaultFeature"
60
+        "Title" = "8:"
61
+        "Description" = "8:"
62
+        }
63
+        "ExternalPersistence"
64
+        {
65
+            "LaunchCondition"
66
+            {
67
+                "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_ADC5996ED9114B30A04870F2C0A33E11"
68
+                {
69
+                "Name" = "8:.NET Framework"
70
+                "Message" = "8:[VSDNETMSG]"
71
+                "FrameworkVersion" = "8:.NETFramework,Version=v4.0,Profile=Client"
72
+                "AllowLaterVersions" = "11:FALSE"
73
+                "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=131000"
74
+                }
75
+            }
76
+        }
77
+        "File"
78
+        {
79
+        }
80
+        "FileType"
81
+        {
82
+        }
83
+        "Folder"
84
+        {
85
+            "{1525181F-901A-416C-8A58-119130FE478E}:_518C3E908B604769819DC4C3063C76AA"
86
+            {
87
+            "Name" = "8:#1916"
88
+            "AlwaysCreate" = "11:FALSE"
89
+            "Condition" = "8:"
90
+            "Transitive" = "11:FALSE"
91
+            "Property" = "8:DesktopFolder"
92
+                "Folders"
93
+                {
94
+                }
95
+            }
96
+            "{3C67513D-01DD-4637-8A68-80971EB9504F}:_A309BED3485C4559AD97A44689513CE1"
97
+            {
98
+            "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
99
+            "Name" = "8:#1925"
100
+            "AlwaysCreate" = "11:FALSE"
101
+            "Condition" = "8:"
102
+            "Transitive" = "11:FALSE"
103
+            "Property" = "8:TARGETDIR"
104
+                "Folders"
105
+                {
106
+                }
107
+            }
108
+            "{1525181F-901A-416C-8A58-119130FE478E}:_D19228114934400BAC000FD15C52AC59"
109
+            {
110
+            "Name" = "8:#1919"
111
+            "AlwaysCreate" = "11:FALSE"
112
+            "Condition" = "8:"
113
+            "Transitive" = "11:FALSE"
114
+            "Property" = "8:ProgramMenuFolder"
115
+                "Folders"
116
+                {
117
+                }
118
+            }
119
+        }
120
+        "LaunchCondition"
121
+        {
122
+        }
123
+        "Locator"
124
+        {
125
+        }
126
+        "MsiBootstrapper"
127
+        {
128
+        "LangId" = "3:1033"
129
+        "RequiresElevation" = "11:FALSE"
130
+        }
131
+        "Product"
132
+        {
133
+        "Name" = "8:Microsoft Visual Studio"
134
+        "ProductName" = "8:Installer"
135
+        "ProductCode" = "8:{A2FE76BF-75BD-4CAA-9B7B-F55402CA4E28}"
136
+        "PackageCode" = "8:{1D44CD3B-EE67-436D-B20F-B31D35634171}"
137
+        "UpgradeCode" = "8:{A593D260-C52D-4974-8735-94A50F134765}"
138
+        "AspNetVersion" = "8:4.0.30319.0"
139
+        "RestartWWWService" = "11:FALSE"
140
+        "RemovePreviousVersions" = "11:FALSE"
141
+        "DetectNewerInstalledVersion" = "11:TRUE"
142
+        "InstallAllUsers" = "11:FALSE"
143
+        "ProductVersion" = "8:1.0.0"
144
+        "Manufacturer" = "8:Microsoft"
145
+        "ARPHELPTELEPHONE" = "8:"
146
+        "ARPHELPLINK" = "8:"
147
+        "Title" = "8:Installer"
148
+        "Subject" = "8:"
149
+        "ARPCONTACT" = "8:Microsoft"
150
+        "Keywords" = "8:"
151
+        "ARPCOMMENTS" = "8:"
152
+        "ARPURLINFOABOUT" = "8:"
153
+        "ARPPRODUCTICON" = "8:"
154
+        "ARPIconIndex" = "3:0"
155
+        "SearchPath" = "8:"
156
+        "UseSystemSearchPath" = "11:TRUE"
157
+        "TargetPlatform" = "3:0"
158
+        "PreBuildEvent" = "8:"
159
+        "PostBuildEvent" = "8:"
160
+        "RunPostBuildEvent" = "3:0"
161
+        }
162
+        "Registry"
163
+        {
164
+            "HKLM"
165
+            {
166
+                "Keys"
167
+                {
168
+                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9CA54B101AD241B7B3B80F76C3C2CA69"
169
+                    {
170
+                    "Name" = "8:Software"
171
+                    "Condition" = "8:"
172
+                    "AlwaysCreate" = "11:FALSE"
173
+                    "DeleteAtUninstall" = "11:FALSE"
174
+                    "Transitive" = "11:FALSE"
175
+                        "Keys"
176
+                        {
177
+                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_327377DBDC164368A0AC841EB043ADC8"
178
+                            {
179
+                            "Name" = "8:[Manufacturer]"
180
+                            "Condition" = "8:"
181
+                            "AlwaysCreate" = "11:FALSE"
182
+                            "DeleteAtUninstall" = "11:FALSE"
183
+                            "Transitive" = "11:FALSE"
184
+                                "Keys"
185
+                                {
186
+                                }
187
+                                "Values"
188
+                                {
189
+                                }
190
+                            }
191
+                        }
192
+                        "Values"
193
+                        {
194
+                        }
195
+                    }
196
+                }
197
+            }
198
+            "HKCU"
199
+            {
200
+                "Keys"
201
+                {
202
+                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EE189DF3053D4BFD8098F01818ED8DEA"
203
+                    {
204
+                    "Name" = "8:Software"
205
+                    "Condition" = "8:"
206
+                    "AlwaysCreate" = "11:FALSE"
207
+                    "DeleteAtUninstall" = "11:FALSE"
208
+                    "Transitive" = "11:FALSE"
209
+                        "Keys"
210
+                        {
211
+                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D226EB39301B4AA0ACD6EF88C867F62B"
212
+                            {
213
+                            "Name" = "8:[Manufacturer]"
214
+                            "Condition" = "8:"
215
+                            "AlwaysCreate" = "11:FALSE"
216
+                            "DeleteAtUninstall" = "11:FALSE"
217
+                            "Transitive" = "11:FALSE"
218
+                                "Keys"
219
+                                {
220
+                                }
221
+                                "Values"
222
+                                {
223
+                                }
224
+                            }
225
+                        }
226
+                        "Values"
227
+                        {
228
+                        }
229
+                    }
230
+                }
231
+            }
232
+            "HKCR"
233
+            {
234
+                "Keys"
235
+                {
236
+                }
237
+            }
238
+            "HKU"
239
+            {
240
+                "Keys"
241
+                {
242
+                }
243
+            }
244
+            "HKPU"
245
+            {
246
+                "Keys"
247
+                {
248
+                }
249
+            }
250
+        }
251
+        "Sequences"
252
+        {
253
+        }
254
+        "Shortcut"
255
+        {
256
+        }
257
+        "UserInterface"
258
+        {
259
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1B43C07C57D64B268117544C14201C01"
260
+            {
261
+            "Name" = "8:#1900"
262
+            "Sequence" = "3:2"
263
+            "Attributes" = "3:1"
264
+                "Dialogs"
265
+                {
266
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_DB68643BA49D478DAE15B0FC5BFA7828"
267
+                    {
268
+                    "Sequence" = "3:300"
269
+                    "DisplayName" = "8:Confirm Installation"
270
+                    "UseDynamicProperties" = "11:TRUE"
271
+                    "IsDependency" = "11:FALSE"
272
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
273
+                        "Properties"
274
+                        {
275
+                            "BannerBitmap"
276
+                            {
277
+                            "Name" = "8:BannerBitmap"
278
+                            "DisplayName" = "8:#1001"
279
+                            "Description" = "8:#1101"
280
+                            "Type" = "3:8"
281
+                            "ContextData" = "8:Bitmap"
282
+                            "Attributes" = "3:4"
283
+                            "Setting" = "3:1"
284
+                            "UsePlugInResources" = "11:TRUE"
285
+                            }
286
+                        }
287
+                    }
288
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E1CAB0376DB34653B97A0E49E0D9DA4E"
289
+                    {
290
+                    "Sequence" = "3:100"
291
+                    "DisplayName" = "8:Welcome"
292
+                    "UseDynamicProperties" = "11:TRUE"
293
+                    "IsDependency" = "11:FALSE"
294
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
295
+                        "Properties"
296
+                        {
297
+                            "BannerBitmap"
298
+                            {
299
+                            "Name" = "8:BannerBitmap"
300
+                            "DisplayName" = "8:#1001"
301
+                            "Description" = "8:#1101"
302
+                            "Type" = "3:8"
303
+                            "ContextData" = "8:Bitmap"
304
+                            "Attributes" = "3:4"
305
+                            "Setting" = "3:1"
306
+                            "UsePlugInResources" = "11:TRUE"
307
+                            }
308
+                            "CopyrightWarning"
309
+                            {
310
+                            "Name" = "8:CopyrightWarning"
311
+                            "DisplayName" = "8:#1002"
312
+                            "Description" = "8:#1102"
313
+                            "Type" = "3:3"
314
+                            "ContextData" = "8:"
315
+                            "Attributes" = "3:0"
316
+                            "Setting" = "3:1"
317
+                            "Value" = "8:#1202"
318
+                            "DefaultValue" = "8:#1202"
319
+                            "UsePlugInResources" = "11:TRUE"
320
+                            }
321
+                            "Welcome"
322
+                            {
323
+                            "Name" = "8:Welcome"
324
+                            "DisplayName" = "8:#1003"
325
+                            "Description" = "8:#1103"
326
+                            "Type" = "3:3"
327
+                            "ContextData" = "8:"
328
+                            "Attributes" = "3:0"
329
+                            "Setting" = "3:1"
330
+                            "Value" = "8:#1203"
331
+                            "DefaultValue" = "8:#1203"
332
+                            "UsePlugInResources" = "11:TRUE"
333
+                            }
334
+                        }
335
+                    }
336
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EE027430484D42CC8A495D1099623A72"
337
+                    {
338
+                    "Sequence" = "3:200"
339
+                    "DisplayName" = "8:Installation Folder"
340
+                    "UseDynamicProperties" = "11:TRUE"
341
+                    "IsDependency" = "11:FALSE"
342
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
343
+                        "Properties"
344
+                        {
345
+                            "BannerBitmap"
346
+                            {
347
+                            "Name" = "8:BannerBitmap"
348
+                            "DisplayName" = "8:#1001"
349
+                            "Description" = "8:#1101"
350
+                            "Type" = "3:8"
351
+                            "ContextData" = "8:Bitmap"
352
+                            "Attributes" = "3:4"
353
+                            "Setting" = "3:1"
354
+                            "UsePlugInResources" = "11:TRUE"
355
+                            }
356
+                        }
357
+                    }
358
+                }
359
+            }
360
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5097B2F5FEF547B3BF8C58FCE551A347"
361
+            {
362
+            "Name" = "8:#1902"
363
+            "Sequence" = "3:2"
364
+            "Attributes" = "3:3"
365
+                "Dialogs"
366
+                {
367
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_23F1C0F3828B4FA99590221693EA4280"
368
+                    {
369
+                    "Sequence" = "3:100"
370
+                    "DisplayName" = "8:Finished"
371
+                    "UseDynamicProperties" = "11:TRUE"
372
+                    "IsDependency" = "11:FALSE"
373
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
374
+                        "Properties"
375
+                        {
376
+                            "BannerBitmap"
377
+                            {
378
+                            "Name" = "8:BannerBitmap"
379
+                            "DisplayName" = "8:#1001"
380
+                            "Description" = "8:#1101"
381
+                            "Type" = "3:8"
382
+                            "ContextData" = "8:Bitmap"
383
+                            "Attributes" = "3:4"
384
+                            "Setting" = "3:1"
385
+                            "UsePlugInResources" = "11:TRUE"
386
+                            }
387
+                        }
388
+                    }
389
+                }
390
+            }
391
+            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_6A24DC08B0E1456FADD35D2122EABF14"
392
+            {
393
+            "UseDynamicProperties" = "11:FALSE"
394
+            "IsDependency" = "11:FALSE"
395
+            "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
396
+            }
397
+            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_78869D62B3E34470AE0DB69F4624D919"
398
+            {
399
+            "UseDynamicProperties" = "11:FALSE"
400
+            "IsDependency" = "11:FALSE"
401
+            "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
402
+            }
403
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_78FFDF7EDE4F41B4941630AADA8F4D2A"
404
+            {
405
+            "Name" = "8:#1900"
406
+            "Sequence" = "3:1"
407
+            "Attributes" = "3:1"
408
+                "Dialogs"
409
+                {
410
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_88BD6388040245DB9B0AB808EDC484CD"
411
+                    {
412
+                    "Sequence" = "3:300"
413
+                    "DisplayName" = "8:Confirm Installation"
414
+                    "UseDynamicProperties" = "11:TRUE"
415
+                    "IsDependency" = "11:FALSE"
416
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
417
+                        "Properties"
418
+                        {
419
+                            "BannerBitmap"
420
+                            {
421
+                            "Name" = "8:BannerBitmap"
422
+                            "DisplayName" = "8:#1001"
423
+                            "Description" = "8:#1101"
424
+                            "Type" = "3:8"
425
+                            "ContextData" = "8:Bitmap"
426
+                            "Attributes" = "3:4"
427
+                            "Setting" = "3:1"
428
+                            "UsePlugInResources" = "11:TRUE"
429
+                            }
430
+                        }
431
+                    }
432
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_991DFFDEA6164E47BBB8A955DC35674E"
433
+                    {
434
+                    "Sequence" = "3:100"
435
+                    "DisplayName" = "8:Welcome"
436
+                    "UseDynamicProperties" = "11:TRUE"
437
+                    "IsDependency" = "11:FALSE"
438
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
439
+                        "Properties"
440
+                        {
441
+                            "BannerBitmap"
442
+                            {
443
+                            "Name" = "8:BannerBitmap"
444
+                            "DisplayName" = "8:#1001"
445
+                            "Description" = "8:#1101"
446
+                            "Type" = "3:8"
447
+                            "ContextData" = "8:Bitmap"
448
+                            "Attributes" = "3:4"
449
+                            "Setting" = "3:1"
450
+                            "UsePlugInResources" = "11:TRUE"
451
+                            }
452
+                            "CopyrightWarning"
453
+                            {
454
+                            "Name" = "8:CopyrightWarning"
455
+                            "DisplayName" = "8:#1002"
456
+                            "Description" = "8:#1102"
457
+                            "Type" = "3:3"
458
+                            "ContextData" = "8:"
459
+                            "Attributes" = "3:0"
460
+                            "Setting" = "3:1"
461
+                            "Value" = "8:#1202"
462
+                            "DefaultValue" = "8:#1202"
463
+                            "UsePlugInResources" = "11:TRUE"
464
+                            }
465
+                            "Welcome"
466
+                            {
467
+                            "Name" = "8:Welcome"
468
+                            "DisplayName" = "8:#1003"
469
+                            "Description" = "8:#1103"
470
+                            "Type" = "3:3"
471
+                            "ContextData" = "8:"
472
+                            "Attributes" = "3:0"
473
+                            "Setting" = "3:1"
474
+                            "Value" = "8:#1203"
475
+                            "DefaultValue" = "8:#1203"
476
+                            "UsePlugInResources" = "11:TRUE"
477
+                            }
478
+                        }
479
+                    }
480
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D6B6A068C55141CFA80755CB6C2B9E02"
481
+                    {
482
+                    "Sequence" = "3:200"
483
+                    "DisplayName" = "8:Installation Folder"
484
+                    "UseDynamicProperties" = "11:TRUE"
485
+                    "IsDependency" = "11:FALSE"
486
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
487
+                        "Properties"
488
+                        {
489
+                            "BannerBitmap"
490
+                            {
491
+                            "Name" = "8:BannerBitmap"
492
+                            "DisplayName" = "8:#1001"
493
+                            "Description" = "8:#1101"
494
+                            "Type" = "3:8"
495
+                            "ContextData" = "8:Bitmap"
496
+                            "Attributes" = "3:4"
497
+                            "Setting" = "3:1"
498
+                            "UsePlugInResources" = "11:TRUE"
499
+                            }
500
+                            "InstallAllUsersVisible"
501
+                            {
502
+                            "Name" = "8:InstallAllUsersVisible"
503
+                            "DisplayName" = "8:#1059"
504
+                            "Description" = "8:#1159"
505
+                            "Type" = "3:5"
506
+                            "ContextData" = "8:1;True=1;False=0"
507
+                            "Attributes" = "3:0"
508
+                            "Setting" = "3:0"
509
+                            "Value" = "3:1"
510
+                            "DefaultValue" = "3:1"
511
+                            "UsePlugInResources" = "11:TRUE"
512
+                            }
513
+                        }
514
+                    }
515
+                }
516
+            }
517
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C3B447D264C045F18D733156219AC184"
518
+            {
519
+            "Name" = "8:#1901"
520
+            "Sequence" = "3:2"
521
+            "Attributes" = "3:2"
522
+                "Dialogs"
523
+                {
524
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_061770F644254753B46044F272DA1095"
525
+                    {
526
+                    "Sequence" = "3:100"
527
+                    "DisplayName" = "8:Progress"
528
+                    "UseDynamicProperties" = "11:TRUE"
529
+                    "IsDependency" = "11:FALSE"
530
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
531
+                        "Properties"
532
+                        {
533
+                            "BannerBitmap"
534
+                            {
535
+                            "Name" = "8:BannerBitmap"
536
+                            "DisplayName" = "8:#1001"
537
+                            "Description" = "8:#1101"
538
+                            "Type" = "3:8"
539
+                            "ContextData" = "8:Bitmap"
540
+                            "Attributes" = "3:4"
541
+                            "Setting" = "3:1"
542
+                            "UsePlugInResources" = "11:TRUE"
543
+                            }
544
+                            "ShowProgress"
545
+                            {
546
+                            "Name" = "8:ShowProgress"
547
+                            "DisplayName" = "8:#1009"
548
+                            "Description" = "8:#1109"
549
+                            "Type" = "3:5"
550
+                            "ContextData" = "8:1;True=1;False=0"
551
+                            "Attributes" = "3:0"
552
+                            "Setting" = "3:0"
553
+                            "Value" = "3:1"
554
+                            "DefaultValue" = "3:1"
555
+                            "UsePlugInResources" = "11:TRUE"
556
+                            }
557
+                        }
558
+                    }
559
+                }
560
+            }
561
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_DB5F4FE5F80748EABA37CF226A32110E"
562
+            {
563
+            "Name" = "8:#1901"
564
+            "Sequence" = "3:1"
565
+            "Attributes" = "3:2"
566
+                "Dialogs"
567
+                {
568
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_94A4513DDC19480B9F5A45C093BB8B9E"
569
+                    {
570
+                    "Sequence" = "3:100"
571
+                    "DisplayName" = "8:Progress"
572
+                    "UseDynamicProperties" = "11:TRUE"
573
+                    "IsDependency" = "11:FALSE"
574
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
575
+                        "Properties"
576
+                        {
577
+                            "BannerBitmap"
578
+                            {
579
+                            "Name" = "8:BannerBitmap"
580
+                            "DisplayName" = "8:#1001"
581
+                            "Description" = "8:#1101"
582
+                            "Type" = "3:8"
583
+                            "ContextData" = "8:Bitmap"
584
+                            "Attributes" = "3:4"
585
+                            "Setting" = "3:1"
586
+                            "UsePlugInResources" = "11:TRUE"
587
+                            }
588
+                            "ShowProgress"
589
+                            {
590
+                            "Name" = "8:ShowProgress"
591
+                            "DisplayName" = "8:#1009"
592
+                            "Description" = "8:#1109"
593
+                            "Type" = "3:5"
594
+                            "ContextData" = "8:1;True=1;False=0"
595
+                            "Attributes" = "3:0"
596
+                            "Setting" = "3:0"
597
+                            "Value" = "3:1"
598
+                            "DefaultValue" = "3:1"
599
+                            "UsePlugInResources" = "11:TRUE"
600
+                            }
601
+                        }
602
+                    }
603
+                }
604
+            }
605
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F2B34CB6F43342A2AD80019DAEC17850"
606
+            {
607
+            "Name" = "8:#1902"
608
+            "Sequence" = "3:1"
609
+            "Attributes" = "3:3"
610
+                "Dialogs"
611
+                {
612
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7D07497734394C5CBA19A7860A7DA397"
613
+                    {
614
+                    "Sequence" = "3:100"
615
+                    "DisplayName" = "8:Finished"
616
+                    "UseDynamicProperties" = "11:TRUE"
617
+                    "IsDependency" = "11:FALSE"
618
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
619
+                        "Properties"
620
+                        {
621
+                            "BannerBitmap"
622
+                            {
623
+                            "Name" = "8:BannerBitmap"
624
+                            "DisplayName" = "8:#1001"
625
+                            "Description" = "8:#1101"
626
+                            "Type" = "3:8"
627
+                            "ContextData" = "8:Bitmap"
628
+                            "Attributes" = "3:4"
629
+                            "Setting" = "3:1"
630
+                            "UsePlugInResources" = "11:TRUE"
631
+                            }
632
+                            "UpdateText"
633
+                            {
634
+                            "Name" = "8:UpdateText"
635
+                            "DisplayName" = "8:#1058"
636
+                            "Description" = "8:#1158"
637
+                            "Type" = "3:15"
638
+                            "ContextData" = "8:"
639
+                            "Attributes" = "3:0"
640
+                            "Setting" = "3:1"
641
+                            "Value" = "8:#1258"
642
+                            "DefaultValue" = "8:#1258"
643
+                            "UsePlugInResources" = "11:TRUE"
644
+                            }
645
+                        }
646
+                    }
647
+                }
648
+            }
649
+        }
650
+        "MergeModule"
651
+        {
652
+        }
653
+        "ProjectOutput"
654
+        {
655
+        }
656
+    }
657
+}

BIN
OBSystem/Debug/OBSystem.msi


BIN
OBSystem/Debug/setup.exe


File diff suppressed because it is too large
+ 1073 - 0
OBSystem/OBSystem.vdproj


BIN
OBSystemInstaller/Debug/OBSystemInstaller.msi


BIN
OBSystemInstaller/Debug/setup.exe


File diff suppressed because it is too large
+ 1008 - 0
OBSystemInstaller/OBSystemInstaller.vdproj


BIN
UpgradeLog.htm


File diff suppressed because it is too large
+ 274 - 0
UpgradeLog2.htm


+ 12 - 0
WpfApplication19/About.xaml

@@ -0,0 +1,12 @@
1
+<Window
2
+	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+	x:Class="WpfApplication19.Window1"
5
+	x:Name="AboutWindow"
6
+	Title="About"
7
+	Width="532" Height="522" WindowStartupLocation="CenterScreen">
8
+
9
+	<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" Width="526">
10
+		<Image Margin="8,0,11,1" Source="simplico_about.png"/>
11
+	</Grid>
12
+</Window>

+ 27 - 0
WpfApplication19/About.xaml.cs

@@ -0,0 +1,27 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Text;
4
+using System.Windows;
5
+using System.Windows.Controls;
6
+using System.Windows.Data;
7
+using System.Windows.Documents;
8
+using System.Windows.Input;
9
+using System.Windows.Media;
10
+using System.Windows.Media.Imaging;
11
+using System.Windows.Shapes;
12
+
13
+namespace WpfApplication19
14
+{
15
+	/// <summary>
16
+	/// Interaction logic for Window1.xaml
17
+	/// </summary>
18
+	public partial class Window1 : Window
19
+	{
20
+		public Window1()
21
+		{
22
+			this.InitializeComponent();
23
+			
24
+			// Insert code required on object creation below this point.
25
+		}
26
+	}
27
+}

+ 14 - 0
WpfApplication19/Alert.xaml

@@ -0,0 +1,14 @@
1
+<Window x:Class="WpfApplication19.Alert"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="Alert" Height="257" Width="510">
5
+    <Grid>
6
+		<TextBlock Height="43" HorizontalAlignment="Left" Margin="12,34,0,0" Name="MainWarningMsg" Text="TextBlock" VerticalAlignment="Top" Width="464" TextAlignment="Center" FontSize="26" Foreground="#FFFF0A0A" />
7
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="69,94,0,0" Name="textBlock2" Text="Please replace new measurement header, because it exceeds the limit" VerticalAlignment="Top" Width="344" />
8
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="123,123,0,0" Name="textBlock3" Text="If header replaced successful, press OK" VerticalAlignment="Top" Width="219" />
9
+		<Button Content="OK" Height="39" HorizontalAlignment="Right" Margin="0,152,120,0" Name="ChangeBtn" VerticalAlignment="Top" Width="120" FontSize="24" Click="ChangeBtn_Click" />
10
+		<Button Content="Stop Alert" Height="39" HorizontalAlignment="Left" Margin="96,152,0,0" Name="stopAlert" VerticalAlignment="Top" Width="132" FontWeight="Normal" FontSize="20" Click="stopAlert_Click" />
11
+		<MediaElement Height="44" HorizontalAlignment="Left" Margin="366,174,0,0" Name="warningSound" VerticalAlignment="Top" Width="122" Source="sounds/Tornado_Siren.mp3" LoadedBehavior="Manual" Volume="1" />
12
+	</Grid>
13
+
14
+</Window>

+ 44 - 0
WpfApplication19/Alert.xaml.cs

@@ -0,0 +1,44 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+	/// <summary>
17
+	/// Interaction logic for Alert.xaml
18
+	/// </summary>
19
+	public partial class Alert : Window
20
+	{
21
+		public Alert()
22
+		{
23
+			InitializeComponent();
24
+			warningSound.Play();
25
+		}
26
+		public void SetAlertMsg(string msg){
27
+			MainWarningMsg.Text = msg;
28
+		}
29
+
30
+		private void ChangeBtn_Click(object sender, RoutedEventArgs e)
31
+		{
32
+			//Application.Current.MainWindow.Show();
33
+			var w = (MainWindow)Application.Current.MainWindow;
34
+			//var s = ((ComboBoxItem)DateTimeCB.SelectedItem).Content.ToString();
35
+			w.ResetHeaderUsage();			
36
+			Close();
37
+		}
38
+
39
+		private void stopAlert_Click(object sender, RoutedEventArgs e)
40
+		{
41
+			warningSound.Stop();
42
+		}
43
+	}
44
+}

+ 37 - 0
WpfApplication19/App.config

@@ -0,0 +1,37 @@
1
+<?xml version="1.0"?>
2
+<configuration>
3
+  <configSections>
4
+  </configSections>
5
+  <appSettings>
6
+    <add key="machinePort" value="COM10"/>
7
+   
8
+    <add key="productionDbCS" value="Data Source=127.0.0.1;User ID=user1;Password=1234; Initial Catalog=OB2011DB"/>
9
+    <add key="operatingDbCs" value="Data Source=|DataDirectory|\OperatingDatabase.sdf"/>
10
+  
11
+    <add key="webServerURL" value="http://127.0.0.1:3000"/>
12
+    <add key="currentMachine" value="1"/>
13
+    <add key="ClientSettingsProvider.ServiceUri" value=""/>
14
+    <add key="fontName" value="Ubuntu Mono"/>
15
+    <add key="fontSize" value="9"/>
16
+  </appSettings>
17
+  <connectionStrings>
18
+    <add name="labEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\sqlexpress;Initial Catalog=lab;User ID=user1;Password=1234;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>
19
+    <add name="WpfApplication19.Properties.Settings.OperatingDatabaseConnectionString" connectionString="Data Source=|DataDirectory|\OperatingDatabase.sdf" providerName="Microsoft.SqlServerCe.Client.3.5"/>
20
+    <add name="WpfApplication19.Properties.Settings.SampleConnectionString" connectionString="Data Source=|DataDirectory|\Sample.sdf" providerName="Microsoft.SqlServerCe.Client.3.5"/>
21
+  </connectionStrings>
22
+  <startup>
23
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
24
+  </startup>
25
+  <system.web>
26
+    <membership defaultProvider="ClientAuthenticationMembershipProvider">
27
+      <providers>
28
+        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
29
+      </providers>
30
+    </membership>
31
+    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
32
+      <providers>
33
+        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
34
+      </providers>
35
+    </roleManager>
36
+  </system.web>
37
+</configuration>

+ 14 - 0
WpfApplication19/App.xaml

@@ -0,0 +1,14 @@
1
+<Application x:Class="WpfApplication19.App"
2
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+             StartupUri="MainWindow.xaml">
5
+    <Application.Resources>
6
+         
7
+    	<ResourceDictionary>
8
+    		<ResourceDictionary.MergedDictionaries>
9
+    			<ResourceDictionary Source="Simple Styles.xaml"/>
10
+    		</ResourceDictionary.MergedDictionaries>
11
+    	</ResourceDictionary>
12
+         
13
+    </Application.Resources>
14
+</Application>

+ 16 - 0
WpfApplication19/App.xaml.cs

@@ -0,0 +1,16 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Configuration;
4
+using System.Data;
5
+using System.Linq;
6
+using System.Windows;
7
+
8
+namespace WpfApplication19
9
+{
10
+    /// <summary>
11
+    /// Interaction logic for App.xaml
12
+    /// </summary>
13
+    public partial class App : Application
14
+    {
15
+    }
16
+}

+ 115 - 0
WpfApplication19/Authentication.cs

@@ -0,0 +1,115 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.IO;
6
+using System.Security.Cryptography;
7
+namespace WpfApplication19
8
+{
9
+  class Authentication
10
+  {
11
+     static byte[] encryptStringToBytes_AES(string plainText, byte[] Key, byte[] IV)
12
+        {
13
+            // Check arguments.
14
+            if (plainText == null || plainText.Length <= 0)
15
+                throw new ArgumentNullException("plainText");
16
+            if (Key == null || Key.Length <= 0)
17
+                throw new ArgumentNullException("Key");
18
+            if (IV == null || IV.Length <= 0)
19
+                throw new ArgumentNullException("IV");
20
+
21
+            // Declare the stream used to encrypt to an in memory
22
+            // array of bytes.
23
+            MemoryStream msEncrypt = null;
24
+
25
+            // Declare the RijndaelManaged object
26
+            // used to encrypt the data.
27
+            RijndaelManaged aesAlg = null;
28
+
29
+            try
30
+            {
31
+                // Create a RijndaelManaged object
32
+                // with the specified key and IV.
33
+                aesAlg = new RijndaelManaged();
34
+                aesAlg.Key = Key;
35
+                aesAlg.IV = IV;
36
+
37
+                // Create an encrypto to perform the stream transform.
38
+                ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
39
+
40
+                // Create the streams used for encryption.
41
+                msEncrypt = new MemoryStream();
42
+                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
43
+                {
44
+                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
45
+                    {
46
+                        //Write all data to the stream.
47
+                        swEncrypt.Write(plainText);
48
+                    }
49
+                }
50
+            }
51
+            finally
52
+            {
53
+                // Clear the RijndaelManaged object.
54
+                if (aesAlg != null)
55
+                    aesAlg.Clear();
56
+            }
57
+
58
+            // Return the encrypted bytes from the memory stream.
59
+            return msEncrypt.ToArray();
60
+        }
61
+
62
+        static string decryptStringFromBytes_AES(byte[] cipherText, byte[] Key, byte[] IV)
63
+        {
64
+            // Check arguments.
65
+            if (cipherText == null || cipherText.Length <= 0)
66
+                throw new ArgumentNullException("cipherText");
67
+            if (Key == null || Key.Length <= 0)
68
+                throw new ArgumentNullException("Key");
69
+            if (IV == null || IV.Length <= 0)
70
+                throw new ArgumentNullException("IV");
71
+
72
+            // Declare the RijndaelManaged object
73
+            // used to decrypt the data.
74
+            RijndaelManaged aesAlg = null;
75
+
76
+            // Declare the string used to hold
77
+            // the decrypted text.
78
+            string plaintext = null;
79
+
80
+            try
81
+            {
82
+                // Create a RijndaelManaged object
83
+                // with the specified key and IV.
84
+                aesAlg = new RijndaelManaged();
85
+                aesAlg.Key = Key;
86
+                aesAlg.IV = IV;
87
+
88
+                // Create a decrytor to perform the stream transform.
89
+                ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
90
+                // Create the streams used for decryption.
91
+                using (MemoryStream msDecrypt = new MemoryStream(cipherText))
92
+                {
93
+                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
94
+                    {
95
+                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
96
+
97
+                            // Read the decrypted bytes from the decrypting stream
98
+                            // and place them in a string.
99
+                            plaintext = srDecrypt.ReadToEnd();
100
+                    }
101
+                }
102
+            }
103
+            finally
104
+            {
105
+                // Clear the RijndaelManaged object.
106
+                if (aesAlg != null)
107
+                    aesAlg.Clear();
108
+            }
109
+
110
+            return plaintext;
111
+        }
112
+
113
+
114
+  }
115
+}

+ 10 - 0
WpfApplication19/ChooseRecord.xaml

@@ -0,0 +1,10 @@
1
+<Window x:Class="WpfApplication19.ChooseRecord"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="ChooseRecord" Height="136" Width="441" Name="ChooseRecordWindow">
5
+    <Grid>
6
+        <Label Content="Record Date Time" Height="28" HorizontalAlignment="Left" Margin="28,37,0,0" Name="label1" VerticalAlignment="Top" />
7
+        <ComboBox Height="23" HorizontalAlignment="Left" Margin="139,37,0,0" Name="DateTimeCB" VerticalAlignment="Top" Width="120" />
8
+        <Button Content="OK" Height="23" HorizontalAlignment="Left" Margin="280,37,0,0" Name="PreviewBtn" VerticalAlignment="Top" Width="75" Click="PreviewBtn_Click" />
9
+    </Grid>
10
+</Window>

+ 61 - 0
WpfApplication19/ChooseRecord.xaml.cs

@@ -0,0 +1,61 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Data.Sql;
14
+using System.Data.SqlClient;
15
+
16
+namespace WpfApplication19
17
+{
18
+    /// <summary>
19
+    /// Interaction logic for ChooseRecord.xaml
20
+    /// </summary>
21
+    public partial class ChooseRecord : Window
22
+    {
23
+        private SqlConnection _proConn;
24
+        public ChooseRecord(string lotNo)
25
+        {
26
+            InitializeComponent();
27
+            this.LotNo = lotNo;
28
+            try
29
+            {
30
+                _proConn = Utils.createSqlConnection("productionDbCS");
31
+            }
32
+            catch (SqlException se)
33
+            {
34
+                MessageBox.Show("productionDbCS : ", se.Message);
35
+            }
36
+            SetupObject();
37
+            //LotNoLabel.Content = LotNo;
38
+        }
39
+        private void SetupObject()
40
+        {
41
+            SqlDataReader reader = Utils.Query(_proConn, "select updated_at from data where lot_no = '"+this.LotNo+"' group by updated_at");
42
+            while (reader.Read())
43
+            {
44
+                
45
+                DateTimeCB.Items.Add(new ComboBoxItem() { Tag = "a", Content = reader["updated_at"].ToString() });
46
+            }
47
+            reader.Close();
48
+            //DateTimeCB.ItemsSource = 
49
+        }
50
+        public string LotNo { get; set; }
51
+
52
+        private void PreviewBtn_Click(object sender, RoutedEventArgs e)
53
+        {
54
+            Application.Current.MainWindow.Show();
55
+            var w = (MainWindow)Application.Current.MainWindow;
56
+            var s = ((ComboBoxItem)DateTimeCB.SelectedItem).Content.ToString();
57
+            w.setFilterLogData(((ComboBoxItem)DateTimeCB.SelectedItem).Content.ToString());
58
+            Close();
59
+        }
60
+    }
61
+}

+ 21 - 0
WpfApplication19/ChooseRecord2.xaml

@@ -0,0 +1,21 @@
1
+<Window x:Class="WpfApplication19.ChooseRecord2"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="ChooseRecord2" Height="291" Width="517" Loaded="Window_Loaded">
5
+    <Grid>
6
+		<Grid.RowDefinitions>
7
+			<RowDefinition Height="207*" />
8
+			<RowDefinition Height="45*" />
9
+		</Grid.RowDefinitions>
10
+		<DataGrid  AutoGenerateColumns="False" Name="chooseGrid" CanUserAddRows="False">
11
+			<DataGrid.Columns>
12
+				<DataGridTextColumn Header="Lot No." Width="*" Binding="{Binding lotNo}" IsReadOnly="True" />
13
+				<DataGridTextColumn Header="Code" Width="*" Binding="{Binding code}" IsReadOnly="True" />
14
+				<DataGridTextColumn Header="Date"  Width="*" Binding="{Binding date}" IsReadOnly="True" />
15
+				<DataGridTextColumn Header="Average" Width="*" Binding="{Binding avg}" IsReadOnly="True" />
16
+			</DataGrid.Columns>
17
+		</DataGrid>
18
+		<Button Content="Select" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="420,10,0,0" Name="selectBtn" VerticalAlignment="Top" Width="75" Click="selectBtn_Click" />
19
+		<Button Content="Cancel" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="329,10,0,0" Name="cancel" VerticalAlignment="Top" Width="75" Click="cancel_Click" />
20
+	</Grid>
21
+</Window>

+ 105 - 0
WpfApplication19/ChooseRecord2.xaml.cs

@@ -0,0 +1,105 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Data.Sql;
14
+using System.Data.SqlClient;
15
+using System.Collections.ObjectModel;
16
+using System.Windows.Interop;
17
+using System.Runtime.InteropServices;
18
+namespace WpfApplication19
19
+{
20
+	/// <summary>
21
+	/// Interaction logic for ChooseRecord2.xaml
22
+	/// </summary>
23
+	public partial class ChooseRecord2 : Window
24
+	{
25
+		private string _lotNo;
26
+		private SqlConnection _proConn;
27
+		private ObservableCollection<RecordSelection> _recordList = new ObservableCollection<RecordSelection>();
28
+		
29
+		private const int GWL_STYLE = -16;
30
+		private const int WS_SYSMENU = 0x80000;
31
+		[DllImport("user32.dll", SetLastError = true)]
32
+		private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
33
+		[DllImport("user32.dll")]
34
+		private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
35
+
36
+
37
+		public ChooseRecord2(string lotNo)
38
+		{
39
+			
40
+			InitializeComponent();
41
+			
42
+			_lotNo = lotNo;
43
+			try
44
+			{
45
+				_proConn = Utils.createSqlConnection("productionDbCS");
46
+			}
47
+			catch (SqlException se)
48
+			{
49
+				MessageBox.Show("productionDbCS : ", se.Message);
50
+			}
51
+			setUpGrid();
52
+		}
53
+		private void setUpGrid(){
54
+			/*
55
+			SqlDataReader reader = Utils.Query(_proConn, "select * from data where lot_no = '" + this.LotNo + "' group by updated_at");
56
+			while (reader.Read())
57
+			{
58
+
59
+				DateTimeCB.Items.Add(new ComboBoxItem() { Tag = "a", Content = reader["updated_at"].ToString() });
60
+			}
61
+			reader.Close();*/
62
+			SqlDataReader reader = Utils.Query(_proConn, "select * from lot_summary where lot_no = '"+_lotNo+"' order by created_at desc");
63
+			while(reader.Read()){
64
+					
65
+					_recordList.Add(new RecordSelection(){ lotNo = reader["lot_no"].ToString(), 
66
+					code = reader["code"].ToString(),
67
+					date = Convert.ToDateTime(reader["created_at"]),
68
+					avg = Convert.ToDouble(reader["avg"])});
69
+			}
70
+			chooseGrid.ItemsSource = _recordList;
71
+			reader.Close();
72
+		}
73
+
74
+		private void selectBtn_Click(object sender, RoutedEventArgs e)
75
+		{
76
+			RecordSelection r =  chooseGrid.SelectedItem as RecordSelection;
77
+			var w = (MainWindow)Application.Current.MainWindow;
78
+			try{
79
+			w.setFilterLogData(r.date.ToString());
80
+			Close();
81
+			}catch{
82
+				MessageBox.Show("Please Select A Record");
83
+			}
84
+		}
85
+
86
+		private void Window_Loaded(object sender, RoutedEventArgs e)
87
+		{
88
+			var hwnd = new WindowInteropHelper(this).Handle;
89
+			SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
90
+
91
+		}
92
+
93
+		private void cancel_Click(object sender, RoutedEventArgs e)
94
+		{
95
+			Close();
96
+		}
97
+		
98
+	}
99
+	class RecordSelection{
100
+		public string lotNo { get; set; }
101
+		public string code { get; set; }
102
+		public DateTime date { get; set; }
103
+		public double avg { get; set; }
104
+	}
105
+}

+ 119 - 0
WpfApplication19/DailyCheck.xaml

@@ -0,0 +1,119 @@
1
+<Window x:Class="WpfApplication19.DailyCheck"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="DailyCheck" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="351" SizeToContent="WidthAndHeight" ResizeMode="CanResize" WindowStartupLocation="CenterScreen" WindowState="Maximized" Closed="Window_Closed">
5
+	<Window.Resources>
6
+		<Style TargetType="{x:Type DataGridCell}">
7
+			<Style.Triggers>
8
+				<Trigger Property="DataGridCell.IsFocused" Value="True">
9
+					<Setter Property="Background" Value="#ff0000" />
10
+					<Setter Property="Foreground" Value="#ffffff" />
11
+				</Trigger>
12
+				
13
+
14
+			</Style.Triggers>
15
+			<Setter Property="FontSize" Value="20" />
16
+		</Style>
17
+		<Style x:Key="DatePickerStyle1" TargetType="{x:Type DatePicker}">
18
+			<Setter Property="Foreground" Value="#FF333333"/>
19
+			<Setter Property="IsTodayHighlighted" Value="True"/>
20
+			<Setter Property="SelectedDateFormat" Value="Short"/>
21
+			<Setter Property="Background" Value="Transparent"/>
22
+			<Setter Property="Padding" Value="2"/>
23
+			<Setter Property="BorderBrush">
24
+				<Setter.Value>
25
+					<LinearGradientBrush EndPoint=".5,0" StartPoint=".5,1">
26
+						<GradientStop Color="#FFA3AEB9" Offset="0"/>
27
+						<GradientStop Color="#FF8399A9" Offset="0.375"/>
28
+						<GradientStop Color="#FF718597" Offset="0.375"/>
29
+						<GradientStop Color="#FF617584" Offset="1"/>
30
+					</LinearGradientBrush>
31
+				</Setter.Value>
32
+			</Setter>
33
+			<Setter Property="BorderThickness" Value="1"/>
34
+			<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
35
+			<Setter Property="Template">
36
+				<Setter.Value>
37
+					<ControlTemplate TargetType="{x:Type DatePicker}">
38
+						<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}">
39
+							<VisualStateManager.VisualStateGroups>
40
+								<VisualStateGroup x:Name="CommonStates">
41
+									<VisualState x:Name="Normal"/>
42
+									<VisualState x:Name="Disabled">
43
+										<Storyboard>
44
+											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_DisabledVisual"/>
45
+										</Storyboard>
46
+									</VisualState>
47
+								</VisualStateGroup>
48
+							</VisualStateManager.VisualStateGroups>
49
+							<Grid x:Name="PART_Root" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
50
+								<Grid.Resources>
51
+									<SolidColorBrush x:Key="DisabledBrush" Color="#A5FFFFFF"/>
52
+									<ControlTemplate x:Key="DropDownButtonTemplate" TargetType="{x:Type Button}">
53
+										<Grid>
54
+											<VisualStateManager.VisualStateGroups>
55
+												<VisualStateGroup x:Name="CommonStates">
56
+													<VisualStateGroup.Transitions>
57
+														<VisualTransition GeneratedDuration="0"/>
58
+														<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/>
59
+														<VisualTransition GeneratedDuration="0:0:0.1" To="Pressed"/>
60
+													</VisualStateGroup.Transitions>
61
+													<VisualState x:Name="Normal"/>
62
+													<VisualState x:Name="MouseOver"/>
63
+													<VisualState x:Name="Pressed"/>
64
+													<VisualState x:Name="Disabled"/>
65
+												</VisualStateGroup>
66
+											</VisualStateManager.VisualStateGroups>
67
+											<Image Grid.ColumnSpan="1" Grid.RowSpan="1" Source="ical2.png" Margin="0,0,1,0.298"/>
68
+										</Grid>
69
+									</ControlTemplate>
70
+								</Grid.Resources>
71
+								<Grid.ColumnDefinitions>
72
+									<ColumnDefinition Width="*"/>
73
+									<ColumnDefinition Width="Auto"/>
74
+								</Grid.ColumnDefinitions>
75
+								<Button x:Name="PART_Button" Grid.Column="1" Foreground="{TemplateBinding Foreground}" Focusable="False" HorizontalAlignment="Left" Margin="3,0,3,0" Grid.Row="0" Template="{StaticResource DropDownButtonTemplate}" VerticalAlignment="Top" Width="30"/>
76
+								<DatePickerTextBox x:Name="PART_TextBox" Grid.Column="0" Foreground="{TemplateBinding Foreground}" Focusable="{TemplateBinding Focusable}" HorizontalContentAlignment="Stretch" Grid.Row="0" VerticalContentAlignment="Stretch" FontSize="16"/>
77
+								<Grid x:Name="PART_DisabledVisual" Grid.ColumnSpan="2" Grid.Column="0" IsHitTestVisible="False" Opacity="0" Grid.Row="0">
78
+									<Grid.ColumnDefinitions>
79
+										<ColumnDefinition Width="*"/>
80
+										<ColumnDefinition Width="Auto"/>
81
+									</Grid.ColumnDefinitions>
82
+									<Rectangle Grid.Column="0" Fill="#A5FFFFFF" RadiusY="1" Grid.Row="0" RadiusX="1"/>
83
+									<Rectangle Grid.Column="1" Fill="#A5FFFFFF" Height="18" Margin="3,0,3,0" RadiusY="1" Grid.Row="0" RadiusX="1" Width="19"/>
84
+									<Popup x:Name="PART_Popup" AllowsTransparency="True" Placement="Bottom" PlacementTarget="{Binding ElementName=PART_TextBox}" StaysOpen="False"/>
85
+								</Grid>
86
+							</Grid>
87
+						</Border>
88
+					</ControlTemplate>
89
+				</Setter.Value>
90
+			</Setter>
91
+		</Style>
92
+	</Window.Resources>
93
+	<Viewbox>
94
+	<Grid Width="800" Height="311">
95
+		<Button Content="Save" Height="32" HorizontalAlignment="Left" Margin="673,175,0,0" Name="saveBtn" VerticalAlignment="Top" Width="81" Click="saveBtn_Click" />
96
+		<TextBlock Height="94" HorizontalAlignment="Left" Margin="646,67,0,0" Name="measureBlock" Text="00.00" VerticalAlignment="Top" Width="142" Background="#FF1A0202" Foreground="#FFF21919" TextAlignment="Center" FontSize="56" Padding="0,8" />
97
+		<DataGrid AutoGenerateColumns="False" Height="187" HorizontalAlignment="Left" Margin="41,67,0,0" Name="dailyCheckGrid" VerticalAlignment="Top" Width="561" CanUserAddRows="False"  CanUserReorderColumns="False" CanUserSortColumns="False" Focusable="True"  SelectedValuePath="P1" SelectionUnit="FullRow" GotFocus="dailyCheckGrid_GotFocus"  Loaded="dailyCheckGrid_Loaded">
98
+			<DataGrid.Columns>
99
+				<DataGridTextColumn Header="Header" Width="*" Binding="{Binding header}" IsReadOnly="True"/>
100
+				<DataGridTextColumn Header="P1" Width="*" Binding="{Binding p1, StringFormat=0.00}" IsReadOnly="True" />
101
+				<DataGridTextColumn Header="P2" Width="*" Binding="{Binding p2, StringFormat=0.00}" IsReadOnly="True"/>
102
+				<DataGridTextColumn Header="P3"  Width="*" Binding="{Binding p3, StringFormat=0.00}" IsReadOnly="True"/>
103
+				<DataGridTextColumn Header="Avg"  Width="*" Binding="{Binding avg, StringFormat=0.00}" IsReadOnly="True"/>
104
+				<DataGridTextColumn Header="Result"  Width="*" Binding="{Binding result}" IsReadOnly="True"/>
105
+			</DataGrid.Columns>
106
+		</DataGrid>
107
+		<Button Content="Commit" Height="23" HorizontalAlignment="Left" Margin="527,268,0,0" Name="commitBtn" VerticalAlignment="Top" Width="75" Click="commitBtn_Click" />
108
+		<DatePicker Height="29" HorizontalAlignment="Left" Margin="233.725,24.683,0,0" Name="datePicker" VerticalAlignment="Top" Width="142" Text="hello" SelectedDateChanged="datePicker_SelectedDateChanged" Style="{DynamicResource DatePickerStyle1}" RenderTransformOrigin="0.509,-0.966" />
109
+		<ComboBox Height="29.858" HorizontalAlignment="Left" Margin="41,24.254,0,0" Name="shiftCB" VerticalAlignment="Top" Width="172.853" SelectedIndex="0" FontSize="16">
110
+			<ComboBoxItem Content="Day ( 08.00 - 20.00 )" Tag="day" />
111
+			<ComboBoxItem Content="Night ( 20.00 - 08.00 )" Tag="night" />
112
+		</ComboBox>
113
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="41,269,0,0" Name="textBlock1" Text="Standard values,  OB :" VerticalAlignment="Top" Foreground="#CA000000" />
114
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="164,268,0,0" Name="textBlock2" Text="0.59 - 0.70" VerticalAlignment="Top" Foreground="#FF3063F0" FontWeight="Bold" FontSize="14" />
115
+		<TextBlock Foreground="#CA000000" Height="23" HorizontalAlignment="Left" Margin="265,270,0,0" Name="textBlock4" Text="OC :" VerticalAlignment="Top" />
116
+		<TextBlock FontSize="14" FontWeight="Bold" Foreground="#FF3063F0" Height="23" HorizontalAlignment="Left" Margin="297,268,0,0" Name="textBlock3" Text="0.28 - 0.37" VerticalAlignment="Top" />
117
+	</Grid>
118
+	</Viewbox>
119
+</Window>

+ 293 - 0
WpfApplication19/DailyCheck.xaml.cs

@@ -0,0 +1,293 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Collections.ObjectModel;
14
+using System.Data.SqlClient;
15
+using System.Data;
16
+namespace WpfApplication19
17
+{
18
+	/// <summary>
19
+	/// Interaction logic for DailyCheck.xaml
20
+	/// </summary>
21
+	public partial class DailyCheck : Window
22
+	{
23
+		ObservableCollection<DailyChecker> _dailyChecks = new ObservableCollection<DailyChecker>();
24
+		DataGridCellInfo _cell;
25
+		DataGridColumn _col;
26
+		DailyChecker _item;
27
+		SqlConnection _proConn;
28
+		DateTime _now, _tomorrow;
29
+		string _shift;
30
+		public DailyCheck()
31
+		{
32
+			InitializeComponent();
33
+
34
+			//nowLabel.Content = String.Format("{0:dd/MM/yyyy}", DateTime.Now);
35
+			//var test = DateTime.Now + 1;
36
+			_now  = DateTime.Now.Date;
37
+			_tomorrow = _now.AddDays(1);
38
+			var c = DateTime.Now.AddDays(1);
39
+
40
+			var hr = DateTime.Now.TimeOfDay.Hours;
41
+			//shiftCB.SelectionChanged -= shiftCB_SelectionChanged;
42
+			if(hr >= 8 && hr <= 19){
43
+				_shift = "day";
44
+				shiftCB.SelectedIndex = 0;
45
+			}else{
46
+				_shift = "night";
47
+				shiftCB.SelectedIndex = 1;
48
+			}
49
+			
50
+
51
+			datePicker.SelectedDateChanged -= datePicker_SelectedDateChanged;
52
+			datePicker.SelectedDate  =_now;
53
+			datePicker.SelectedDateChanged += datePicker_SelectedDateChanged;
54
+
55
+			shiftCB.SelectionChanged += shiftCB_SelectionChanged;
56
+			try
57
+			{
58
+				_proConn = Utils.createSqlConnection("productionDbCS");
59
+			
60
+			}
61
+			catch (SqlException se)
62
+			{
63
+				MessageBox.Show("productionDbCS : ", se.Message);
64
+			}
65
+			//var w = (MainWindow)Application.Current.MainWindow;
66
+			//_proConn = w.proConn;
67
+			initDataGrid();
68
+			//dailyCheckGrid.Focus();
69
+
70
+
71
+		}
72
+		void initDataGrid(){
73
+			setGrid(_now, _tomorrow, _shift);
74
+			
75
+		
76
+		}
77
+
78
+		private void setGrid(DateTime from, DateTime to, string shift)
79
+		{
80
+			var id = Utils.getSetting("currentMachine");
81
+			var sql = string.Format("select * from daily_checks where created_at >= '{0:yyyy-MM-dd}' and created_at < '{1:yyyy-MM-dd}' and machine_id = {2} and shift = '{3}'"
82
+			, from,to, id, shift);
83
+			var reader = Utils.Query(_proConn, sql);
84
+
85
+			dailyCheckGrid.ItemsSource = null;
86
+			_dailyChecks.Clear();
87
+			if (reader.HasRows)
88
+			{
89
+				while (reader.Read())
90
+				{
91
+
92
+					_dailyChecks.Add(new DailyChecker()
93
+					{
94
+						header = reader["header"].ToString().ToUpper(),
95
+						p1 = Math.Round(Convert.ToDouble(reader["p1"]), 2),
96
+						p2 = Math.Round(Convert.ToDouble(reader["p2"]), 2),
97
+						p3 = Math.Round(Convert.ToDouble(reader["p3"]), 2),
98
+						avg = Math.Round(Convert.ToDouble(reader["avg"]), 2),
99
+						result = reader["result"].ToString()
100
+					});
101
+				}
102
+
103
+			}
104
+			else
105
+			{
106
+				_dailyChecks.Add(new DailyChecker() { header = "OB", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
107
+				_dailyChecks.Add(new DailyChecker() { header = "OC", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
108
+				_dailyChecks.Add(new DailyChecker() { header = "RH", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
109
+			}
110
+			reader.Close();
111
+			dailyCheckGrid.Items.Clear();
112
+			dailyCheckGrid.ItemsSource = _dailyChecks;
113
+		}
114
+
115
+	
116
+		private void saveBtn_Click(object sender, RoutedEventArgs e)
117
+		{
118
+			int row, col;
119
+			string header;
120
+			//dailyCheckGrid.Focus();
121
+			try{
122
+				header = _cell.Column.Header.ToString();
123
+				row  = _dailyChecks.IndexOf((_cell.Item as DailyChecker));
124
+				col = _col.DisplayIndex;
125
+			}catch{
126
+				dailyCheckGrid.Focus();
127
+				dailyCheckGrid.CurrentCell = new DataGridCellInfo(
128
+							dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
129
+				dailyCheckGrid.BeginEdit();
130
+				header = "P1";
131
+				row = 0;
132
+				col = 1;
133
+				_item = _dailyChecks[0];
134
+			}
135
+			switch(header){
136
+				case "P1":
137
+					//var c = dailyCheckGrid.CurrentItem as DailyChecker;
138
+					_item.p1 = Convert.ToDouble(measureBlock.Text);
139
+				break;
140
+				case "P2":
141
+					_item.p2 = Convert.ToDouble(measureBlock.Text);
142
+				break;
143
+				case "P3":
144
+					_item.p3 = Convert.ToDouble(measureBlock.Text);
145
+				break;
146
+				
147
+			}
148
+			_item.avg = Math.Round((_item.p1 + _item.p2 + _item.p3)/3, 2);
149
+			if(_item.header == "OB"){
150
+				if(_item.avg >= 0.59 && _item.avg <= 0.70){
151
+					_item.result = "OK";
152
+				}else {
153
+					_item.result = "NG";
154
+				}
155
+			}
156
+			if(_item.header == "OC"){
157
+				if (_item.avg >= 0.28 && _item.avg <= 0.37)
158
+				{
159
+					_item.result = "OK";
160
+				}
161
+				else
162
+				{
163
+					_item.result = "NG";
164
+				}
165
+			}
166
+			dailyCheckGrid.Items.Refresh();
167
+			dailyCheckGrid.Focus();
168
+			if(header != "Header" && header != "Avg" && header != "P3"){
169
+				dailyCheckGrid.CurrentCell = new DataGridCellInfo(
170
+						dailyCheckGrid.Items[row], dailyCheckGrid.Columns[col + 1]);
171
+				dailyCheckGrid.BeginEdit();
172
+			}
173
+			if(header == "P3"){
174
+				try{
175
+				dailyCheckGrid.CurrentCell = new DataGridCellInfo(
176
+						dailyCheckGrid.Items[row+1], dailyCheckGrid.Columns[1]);
177
+				dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[row + 1];
178
+				dailyCheckGrid.BeginEdit();
179
+				}catch{
180
+					dailyCheckGrid.CurrentCell = new DataGridCellInfo(
181
+							dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
182
+					dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[0];
183
+					dailyCheckGrid.BeginEdit();
184
+				}
185
+			}
186
+			
187
+		}
188
+
189
+	
190
+	
191
+		
192
+		
193
+		private void dailyCheckGrid_GotFocus(object sender, RoutedEventArgs e)
194
+		{
195
+			_cell = dailyCheckGrid.CurrentCell;
196
+			_col = dailyCheckGrid.CurrentColumn;
197
+			_item = dailyCheckGrid.CurrentItem as DailyChecker;
198
+			
199
+		}
200
+
201
+		
202
+
203
+		private void dailyCheckGrid_Loaded(object sender, RoutedEventArgs e)
204
+		{
205
+			dailyCheckGrid.Focus();
206
+			dailyCheckGrid.CurrentCell = new DataGridCellInfo(
207
+										dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
208
+			dailyCheckGrid.BeginEdit();
209
+		}
210
+
211
+		private void commitBtn_Click(object sender, RoutedEventArgs e)
212
+		{
213
+			commitData();
214
+			MessageBox.Show("Commit Daily Check Complete");
215
+			Close();
216
+		}
217
+
218
+		private void commitData()
219
+		{
220
+			var id = Utils.getSetting("currentMachine");
221
+			var sql = string.Format("delete daily_checks where machine_id = {0} and created_at >= '{1:yyyy-MM-dd}' and created_at < '{2:yyyy-MM-dd}' and shift = '{3}'", id, _now, _tomorrow, _shift);
222
+			var reader = Utils.Query(_proConn, sql);
223
+			reader.Close();
224
+			string empid = GlobalVars.user.empid;
225
+			foreach (var item in _dailyChecks)
226
+			{
227
+
228
+				sql = string.Format("insert into daily_checks(header, p1, p2, p3, avg, created_at, updated_at,machine_id, empid, shift, result) values('{0}', {1}, {2}, {3}, {4}, '{5}', '{6}', {7}, '{8}', '{9}', '{10}')"
229
+					, item.header.ToUpper(), item.p1, item.p2, item.p3, item.avg, _now, DateTime.Now, id, empid, _shift, item.result);
230
+				reader = Utils.Query(_proConn, sql);
231
+				reader.Close();
232
+			}
233
+		}
234
+
235
+		private void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
236
+		{
237
+			//MessageBox.Show("change date");
238
+			if (commitBtn.IsEnabled == true)
239
+				commitData();
240
+			var d =  (DateTime)datePicker.SelectedDate;
241
+			var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString();
242
+			if (d.Date == DateTime.Now.Date && shift == _shift)
243
+			{
244
+				saveBtn.IsEnabled = true;
245
+				commitBtn.IsEnabled = true;
246
+			}
247
+			else
248
+			{
249
+				saveBtn.IsEnabled = false;
250
+				commitBtn.IsEnabled = false;
251
+			}
252
+			var from  = (DateTime)datePicker.SelectedDate;
253
+			
254
+			setGrid(from.Date, from.Date.AddDays(1), shift);
255
+		}
256
+
257
+		private void shiftCB_SelectionChanged(object sender, SelectionChangedEventArgs e)
258
+		{
259
+			//var d = (DateTime)datePicker.SelectedDate;
260
+			if( commitBtn.IsEnabled == true)
261
+				commitData();
262
+			var d = (DateTime)datePicker.SelectedDate;
263
+			var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString();
264
+			if (d.Date == DateTime.Now.Date && shift == _shift)
265
+			{
266
+				saveBtn.IsEnabled = true;
267
+				commitBtn.IsEnabled = true;
268
+			}
269
+			else
270
+			{
271
+				saveBtn.IsEnabled = false;
272
+				commitBtn.IsEnabled = false;
273
+			}
274
+			var from = (DateTime)datePicker.SelectedDate;
275
+
276
+			setGrid(from.Date, from.Date.AddDays(1), shift);
277
+		}
278
+
279
+		private void Window_Closed(object sender, EventArgs e)
280
+		{
281
+			if (commitBtn.IsEnabled == true)
282
+				commitData();
283
+		}
284
+
285
+		
286
+
287
+		
288
+
289
+		
290
+		
291
+		
292
+	}
293
+}

+ 17 - 0
WpfApplication19/DailyChecker.cs

@@ -0,0 +1,17 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace WpfApplication19
7
+{
8
+	class DailyChecker
9
+	{
10
+		public string header { get; set; }
11
+		public double p1 {get; set; }
12
+		public double p2 { get; set; }
13
+		public double p3 { get; set; }
14
+		public double avg { get; set; }
15
+		public string result {get; set; }
16
+	}
17
+}

+ 8 - 0
WpfApplication19/Debug.xaml

@@ -0,0 +1,8 @@
1
+<Window x:Class="WpfApplication19.Debug"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="Debug" Height="300" Width="300" Name="debugWindow">
5
+    <Grid>
6
+        <TextBox Margin="12,12,0,0" Name="debugTextBox" TextWrapping="WrapWithOverflow" VerticalScrollBarVisibility="Auto" AcceptsReturn="True" />
7
+    </Grid>
8
+</Window>

+ 26 - 0
WpfApplication19/Debug.xaml.cs

@@ -0,0 +1,26 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+    /// <summary>
17
+    /// Interaction logic for Debug.xaml
18
+    /// </summary>
19
+    public partial class Debug : Window
20
+    {
21
+        public Debug()
22
+        {
23
+            InitializeComponent();
24
+        }
25
+    }
26
+}

+ 11 - 0
WpfApplication19/EditINWindow.xaml

@@ -0,0 +1,11 @@
1
+<Window x:Class="WpfApplication19.EditINWindow"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="IN* Editor" Height="140" Width="447" ResizeMode="NoResize" WindowStyle="None" BorderThickness="2" BorderBrush="Red" WindowStartupLocation="CenterScreen">
5
+		<Grid Name="grid1">
6
+			<Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="177,56,0,0" Name="saveBtn" VerticalAlignment="Top" Width="75" Click="saveBtn_Click" DataContext="{Binding}" />
7
+		<Label Content="Grain Size" Height="28" HorizontalAlignment="Left" Margin="25,10,0,0" Name="label1" VerticalAlignment="Top" FontWeight="Bold" FontSize="16" />
8
+		<TextBox Height="26" HorizontalAlignment="Left" Margin="116,12,0,0" Name="grainSizeInput" VerticalAlignment="Top" Width="249" FontSize="16" PreviewKeyDown="grainSizeInput_PreviewKeyDown" />
9
+	</Grid>
10
+	
11
+</Window>

+ 42 - 0
WpfApplication19/EditINWindow.xaml.cs

@@ -0,0 +1,42 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+	/// <summary>
17
+	/// Interaction logic for EditINWindow.xaml
18
+	/// </summary>
19
+	public partial class EditINWindow : Window
20
+	{
21
+		public EditINWindow()
22
+		{
23
+			InitializeComponent();
24
+			var w = (MainWindow)Application.Current.MainWindow;
25
+			grainSizeInput.Text = w.inStarGS;
26
+		}
27
+
28
+		private void saveBtn_Click(object sender, RoutedEventArgs e)
29
+		{
30
+			var w = (MainWindow)Application.Current.MainWindow;
31
+			w.inStarGS = grainSizeInput.Text;
32
+			this.Close();
33
+		}
34
+
35
+		private void grainSizeInput_PreviewKeyDown(object sender, KeyEventArgs e)
36
+		{
37
+			if ((e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.Next || e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Left || e.Key == Key.Right)
38
+				e.Handled = false;
39
+			else e.Handled = true;
40
+		}
41
+	}
42
+}

+ 0 - 0
WpfApplication19/EditMIDWindow.xaml


Some files were not shown because too many files changed in this diff

coi · bada0a1500 - Gogs: Simplico Git Service
tum преди 1 година
родител
ревизия
bada0a1500
променени са 7 файла, в които са добавени 766 реда и са изтрити 23 реда
  1. 1 0
      .node-version
  2. 1 0
      .python-version
  3. 28 10
      app/coi/settings.py
  4. 16 10
      app/core/models.py
  5. 1 1
      app/templates/base.html
  6. 717 0
      install.ps1
  7. 2 2
      requirements.txt

+ 1 - 0
.node-version

1
+v16.20.2

+ 1 - 0
.python-version

1
+3.8.10

+ 28 - 10
app/coi/settings.py

95
     DB_PASSWORD = os.environ.get('DB_PASSWORD', '')
95
     DB_PASSWORD = os.environ.get('DB_PASSWORD', '')
96
     DB_HOST =  os.environ.get('DB_HOST', 'db')
96
     DB_HOST =  os.environ.get('DB_HOST', 'db')
97
     DB_PORT = os.environ.get('DB_PORT', '1433')
97
     DB_PORT = os.environ.get('DB_PORT', '1433')
98
+    DB_DRIVER = 'ODBC Driver 18 for SQL Server'
99
+    DB_ENGINE = 'mssql'
100
+
101
+    DB2_USER =  os.environ.get('DB_USER', 'sa')
102
+    DB2_PASSWORD = os.environ.get('DB_PASSWORD', '')
103
+    DB2_HOST =  os.environ.get('DB_HOST', 'db')
104
+    DB2_PORT = os.environ.get('DB_PORT', '1433')
105
+    DB2_DRIVER = 'ODBC Driver 18 for SQL Server'
106
+    DB2_ENGINE = 'mssql'
98
 else:
107
 else:
99
     DB_NAME = "coi_db"
108
     DB_NAME = "coi_db"
100
     DB_USER =  "user1"
109
     DB_USER =  "user1"
101
     DB_PASSWORD = "1234"
110
     DB_PASSWORD = "1234"
102
-    DB_HOST =  "192.168.0.253"
111
+    DB_HOST =  "localhost\SQLEXPRESS"
103
     DB_PORT = '1433'
112
     DB_PORT = '1433'
113
+    DB_DRIVER = 'ODBC Driver 17 for SQL Server'
114
+    DB_ENGINE = 'mssql'
115
+
116
+    DB2_USER =  "user1"
117
+    DB2_PASSWORD = "1234"
118
+    DB2_HOST =  "192.168.0.253"
119
+    DB2_PORT = '1433'
120
+    DB2_DRIVER = 'ODBC Driver 17 for SQL Server'
121
+    DB2_ENGINE = 'mssql'
104
 
122
 
105
 DATABASES = {
123
 DATABASES = {
106
     'default': {
124
     'default': {
107
-        'ENGINE': 'mssql',
125
+        'ENGINE': DB_ENGINE,
108
         'NAME': DB_NAME,
126
         'NAME': DB_NAME,
109
         'USER': DB_USER,
127
         'USER': DB_USER,
110
         'PASSWORD': DB_PASSWORD,
128
         'PASSWORD': DB_PASSWORD,
111
         'HOST': DB_HOST,
129
         'HOST': DB_HOST,
112
-        'PORT': DB_PORT,
130
+        #'PORT': DB_PORT,
113
         'OPTIONS': {
131
         'OPTIONS': {
114
-            'driver': 'ODBC Driver 18 for SQL Server',
132
+            'driver': DB_DRIVER,
115
             'extra_params':  'Encrypt=no',
133
             'extra_params':  'Encrypt=no',
116
         },
134
         },
117
     },
135
     },
118
     'OB2011DB': {
136
     'OB2011DB': {
119
-        'ENGINE': 'mssql',
137
+        'ENGINE': DB2_ENGINE,
120
         'NAME': 'OB2011DB',
138
         'NAME': 'OB2011DB',
121
-        'USER': DB_USER,
122
-        'PASSWORD': DB_PASSWORD,
123
-        'HOST': DB_HOST,
124
-        'PORT': DB_PORT,
139
+        'USER': DB2_USER,
140
+        'PASSWORD': DB2_PASSWORD,
141
+        'HOST': DB2_HOST,
142
+        #'PORT': DB2_PORT,
125
         'OPTIONS': {
143
         'OPTIONS': {
126
-            'driver': 'ODBC Driver 18 for SQL Server',
144
+            'driver': DB2_DRIVER,
127
             'extra_params':  'Encrypt=no',
145
             'extra_params':  'Encrypt=no',
128
         },
146
         },
129
     },
147
     },

+ 16 - 10
app/core/models.py

20
 
20
 
21
 class MgMasterView(models.Model):
21
 class MgMasterView(models.Model):
22
     # ProcessControl.dbo.[Q-PRO-DATA]
22
     # ProcessControl.dbo.[Q-PRO-DATA]
23
-    PRO0 = models.CharField(max_length=255, null=True)
23
+    PRO0 = models.CharField(primary_key=True,max_length=255, null=False)
24
     PRO1 = models.CharField(max_length=255, null=True)
24
     PRO1 = models.CharField(max_length=255, null=True)
25
     PRO1C = models.CharField(max_length=255, null=True)
25
     PRO1C = models.CharField(max_length=255, null=True)
26
     PRO2 = models.CharField(max_length=255, null=True)
26
     PRO2 = models.CharField(max_length=255, null=True)
41
     PRO27 = models.CharField(max_length=255, null=True)
41
     PRO27 = models.CharField(max_length=255, null=True)
42
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
42
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
43
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
43
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
44
-    PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
44
+    #PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
45
     PRO4 = models.CharField(max_length=255, null=True)
45
     PRO4 = models.CharField(max_length=255, null=True)
46
     
46
     
47
     # dbo.[MG-MAS-1]
47
     # dbo.[MG-MAS-1]
96
 
96
 
97
     class Meta:
97
     class Meta:
98
         managed = False
98
         managed = False
99
-        db_table = 'MgMasterView_Full_Mockup_Data'
99
+        db_table = 'mg_master_view'
100
+        app_label = "legacy"
101
+        #db_table = 'MgMasterView_Full_Mockup_Data'
100
 
102
 
101
 class VMasterView(models.Model):
103
 class VMasterView(models.Model):
102
     # Fields from ProcessControl.dbo.[Q-PRO-DATA]
104
     # Fields from ProcessControl.dbo.[Q-PRO-DATA]
103
-    PRO0 = models.CharField(max_length=255, null=True)
105
+    PRO0 = models.CharField(primary_key=True, max_length=255, null=False)
104
     PRO1 = models.CharField(max_length=255, null=True)
106
     PRO1 = models.CharField(max_length=255, null=True)
105
     PRO1C = models.CharField(max_length=255, null=True)
107
     PRO1C = models.CharField(max_length=255, null=True)
106
     PRO2 = models.CharField(max_length=255, null=True)
108
     PRO2 = models.CharField(max_length=255, null=True)
122
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
124
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
123
     PRO6 = models.CharField(max_length=255, null=True)
125
     PRO6 = models.CharField(max_length=255, null=True)
124
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
126
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
125
-    PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
127
+    #PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
126
     PRO4 = models.CharField(max_length=255, null=True)
128
     PRO4 = models.CharField(max_length=255, null=True)
127
     
129
     
128
     # Fields from dbo.[V-MAS-1]
130
     # Fields from dbo.[V-MAS-1]
178
 
180
 
179
     class Meta:
181
     class Meta:
180
         managed = False
182
         managed = False
181
-        db_table = 'VMasterView_Full_Mockup_Data'
183
+        #db_table = 'VMasterView_Full_Mockup_Data'
184
+        db_table = 'v_master_view'
185
+        app_label = "legacy"
182
 
186
 
183
 
187
 
184
 class VwRotateLog(models.Model):
188
 class VwRotateLog(models.Model):
218
 
222
 
219
 class BelMasterView(models.Model):
223
 class BelMasterView(models.Model):
220
     # Fields from ProcessControl.dbo.[Q-PRO-DATA]
224
     # Fields from ProcessControl.dbo.[Q-PRO-DATA]
221
-    PRO0 = models.CharField(max_length=255, null=True)
225
+    PRO0 = models.CharField(primary_key=True, max_length=255, null=False)
222
     PRO1 = models.CharField(max_length=255, null=True)
226
     PRO1 = models.CharField(max_length=255, null=True)
223
     PRO1C = models.CharField(max_length=255, null=True)
227
     PRO1C = models.CharField(max_length=255, null=True)
224
     PRO2 = models.CharField(max_length=255, null=True)
228
     PRO2 = models.CharField(max_length=255, null=True)
240
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
244
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
241
     PRO6 = models.CharField(max_length=255, null=True)
245
     PRO6 = models.CharField(max_length=255, null=True)
242
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
246
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
243
-    PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
247
+    #PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
244
     PRO4 = models.CharField(max_length=255, null=True)
248
     PRO4 = models.CharField(max_length=255, null=True)
245
     
249
     
246
     # Fields from dbo.[BEL-MAS-1]
250
     # Fields from dbo.[BEL-MAS-1]
295
 
299
 
296
     class Meta:
300
     class Meta:
297
         managed = False  # This model corresponds to a database view
301
         managed = False  # This model corresponds to a database view
302
+        app_label = "legacy"
298
         db_table = 'bel_master_view'  # Name of the database view
303
         db_table = 'bel_master_view'  # Name of the database view
299
 
304
 
300
 class EMasterView(models.Model):
305
 class EMasterView(models.Model):
301
     # Fields from ProcessControl.dbo.[Q-PRO-DATA]
306
     # Fields from ProcessControl.dbo.[Q-PRO-DATA]
302
-    PRO0 = models.CharField(max_length=255, null=True)
307
+    PRO0 = models.CharField(primary_key=True, max_length=255, null=False)
303
     PRO1 = models.CharField(max_length=255, null=True)
308
     PRO1 = models.CharField(max_length=255, null=True)
304
     PRO1C = models.CharField(max_length=255, null=True)
309
     PRO1C = models.CharField(max_length=255, null=True)
305
     PRO2 = models.CharField(max_length=255, null=True)
310
     PRO2 = models.CharField(max_length=255, null=True)
321
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
326
     P2 = models.CharField(max_length=255, null=True)  # PRO-P2
322
     PRO6 = models.CharField(max_length=255, null=True)
327
     PRO6 = models.CharField(max_length=255, null=True)
323
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
328
     SPEED = models.CharField(max_length=255, null=True)  # PRO-SPEED
324
-    PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
329
+    #PRO_TOOL = models.CharField(max_length=255, null=True)  # PRO-TOOL
325
     PRO4 = models.CharField(max_length=255, null=True)
330
     PRO4 = models.CharField(max_length=255, null=True)
326
     
331
     
327
     # Fields from dbo.[E-MAS-1]
332
     # Fields from dbo.[E-MAS-1]
376
 
381
 
377
     class Meta:
382
     class Meta:
378
         managed = False  # This model corresponds to a database view
383
         managed = False  # This model corresponds to a database view
384
+        app_label = "legacy"
379
         db_table = 'e_master_view'  # Name of the database view
385
         db_table = 'e_master_view'  # Name of the database view
380
 
386
 
381
 class AllProductAverageObMinMaxView(models.Model):
387
 class AllProductAverageObMinMaxView(models.Model):

+ 1 - 1
app/templates/base.html

32
                     </button>
32
                     </button>
33
                     <a href="/" class="flex items-center ml-2">
33
                     <a href="/" class="flex items-center ml-2">
34
                         <img src="https://flowbite.com/docs/images/logo.svg" class="h-8 mr-3" alt="Logo" />
34
                         <img src="https://flowbite.com/docs/images/logo.svg" class="h-8 mr-3" alt="Logo" />
35
-                        <span class="self-center text-xl font-semibold dark:text-white">My App</span>
35
+                        <span class="self-center text-xl font-semibold dark:text-white">MGT COI</span>
36
                     </a>
36
                     </a>
37
                 </div>
37
                 </div>
38
                 <div class="flex items-center space-x-4">
38
                 <div class="flex items-center space-x-4">

+ 717 - 0
install.ps1

1
+# Issue Tracker: https://github.com/ScoopInstaller/Install/issues
2
+# Unlicense License:
3
+#
4
+# This is free and unencumbered software released into the public domain.
5
+#
6
+# Anyone is free to copy, modify, publish, use, compile, sell, or
7
+# distribute this software, either in source code form or as a compiled
8
+# binary, for any purpose, commercial or non-commercial, and by any
9
+# means.
10
+#
11
+# In jurisdictions that recognize copyright laws, the author or authors
12
+# of this software dedicate any and all copyright interest in the
13
+# software to the public domain. We make this dedication for the benefit
14
+# of the public at large and to the detriment of our heirs and
15
+# successors. We intend this dedication to be an overt act of
16
+# relinquishment in perpetuity of all present and future rights to this
17
+# software under copyright law.
18
+#
19
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22
+# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25
+# OTHER DEALINGS IN THE SOFTWARE.
26
+#
27
+# For more information, please refer to <http://unlicense.org/>
28
+
29
+<#
30
+.SYNOPSIS
31
+    Scoop installer.
32
+.DESCRIPTION
33
+    The installer of Scoop. For details please check the website and wiki.
34
+.PARAMETER ScoopDir
35
+    Specifies Scoop root path.
36
+    If not specified, Scoop will be installed to '$env:USERPROFILE\scoop'.
37
+.PARAMETER ScoopGlobalDir
38
+    Specifies directory to store global apps.
39
+    If not specified, global apps will be installed to '$env:ProgramData\scoop'.
40
+.PARAMETER ScoopCacheDir
41
+    Specifies cache directory.
42
+    If not specified, caches will be downloaded to '$ScoopDir\cache'.
43
+.PARAMETER NoProxy
44
+    Bypass system proxy during the installation.
45
+.PARAMETER Proxy
46
+    Specifies proxy to use during the installation.
47
+.PARAMETER ProxyCredential
48
+    Specifies credential for the given proxy.
49
+.PARAMETER ProxyUseDefaultCredentials
50
+    Use the credentials of the current user for the proxy server that is specified by the -Proxy parameter.
51
+.PARAMETER RunAsAdmin
52
+    Force to run the installer as administrator.
53
+.LINK
54
+    https://scoop.sh
55
+.LINK
56
+    https://github.com/ScoopInstaller/Scoop/wiki
57
+#>
58
+param(
59
+    [String] $ScoopDir,
60
+    [String] $ScoopGlobalDir,
61
+    [String] $ScoopCacheDir,
62
+    [Switch] $NoProxy,
63
+    [Uri] $Proxy,
64
+    [System.Management.Automation.PSCredential] $ProxyCredential,
65
+    [Switch] $ProxyUseDefaultCredentials,
66
+    [Switch] $RunAsAdmin
67
+)
68
+
69
+# Disable StrictMode in this script
70
+Set-StrictMode -Off
71
+
72
+function Write-InstallInfo {
73
+    param(
74
+        [Parameter(Mandatory = $True, Position = 0)]
75
+        [String] $String,
76
+        [Parameter(Mandatory = $False, Position = 1)]
77
+        [System.ConsoleColor] $ForegroundColor = $host.UI.RawUI.ForegroundColor
78
+    )
79
+
80
+    $backup = $host.UI.RawUI.ForegroundColor
81
+
82
+    if ($ForegroundColor -ne $host.UI.RawUI.ForegroundColor) {
83
+        $host.UI.RawUI.ForegroundColor = $ForegroundColor
84
+    }
85
+
86
+    Write-Output "$String"
87
+
88
+    $host.UI.RawUI.ForegroundColor = $backup
89
+}
90
+
91
+function Deny-Install {
92
+    param(
93
+        [String] $message,
94
+        [Int] $errorCode = 1
95
+    )
96
+
97
+    Write-InstallInfo -String $message -ForegroundColor DarkRed
98
+    Write-InstallInfo 'Abort.'
99
+
100
+    # Don't abort if invoked with iex that would close the PS session
101
+    if ($IS_EXECUTED_FROM_IEX) {
102
+        break
103
+    } else {
104
+        exit $errorCode
105
+    }
106
+}
107
+
108
+function Test-LanguageMode {
109
+    if ($ExecutionContext.SessionState.LanguageMode -ne 'FullLanguage') {
110
+        Write-Output 'Scoop requires PowerShell FullLanguage mode to run, current PowerShell environment is restricted.'
111
+        Write-Output 'Abort.'
112
+
113
+        if ($IS_EXECUTED_FROM_IEX) {
114
+            break
115
+        } else {
116
+            exit $errorCode
117
+        }
118
+    }
119
+}
120
+
121
+function Test-ValidateParameter {
122
+    if ($null -eq $Proxy -and ($null -ne $ProxyCredential -or $ProxyUseDefaultCredentials)) {
123
+        Deny-Install 'Provide a valid proxy URI for the -Proxy parameter when using the -ProxyCredential or -ProxyUseDefaultCredentials.'
124
+    }
125
+
126
+    if ($ProxyUseDefaultCredentials -and $null -ne $ProxyCredential) {
127
+        Deny-Install "ProxyUseDefaultCredentials is conflict with ProxyCredential. Don't use the -ProxyCredential and -ProxyUseDefaultCredentials together."
128
+    }
129
+}
130
+
131
+function Test-IsAdministrator {
132
+    return ([Security.Principal.WindowsPrincipal]`
133
+            [Security.Principal.WindowsIdentity]::GetCurrent()`
134
+    ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
135
+}
136
+
137
+function Test-Prerequisite {
138
+    # Scoop requires PowerShell 5 at least
139
+    if (($PSVersionTable.PSVersion.Major) -lt 5) {
140
+        Deny-Install 'PowerShell 5 or later is required to run Scoop. Go to https://microsoft.com/powershell to get the latest version of PowerShell.'
141
+    }
142
+
143
+    # Scoop requires TLS 1.2 SecurityProtocol, which exists in .NET Framework 4.5+
144
+    if ([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -notcontains 'Tls12') {
145
+        Deny-Install 'Scoop requires .NET Framework 4.5+ to work. Go to https://microsoft.com/net/download to get the latest version of .NET Framework.'
146
+    }
147
+
148
+    # Ensure Robocopy.exe is accessible
149
+    if (!(Test-CommandAvailable('robocopy'))) {
150
+        Deny-Install "Scoop requires 'C:\Windows\System32\Robocopy.exe' to work. Please make sure 'C:\Windows\System32' is in your PATH."
151
+    }
152
+
153
+    # Detect if RunAsAdministrator, there is no need to run as administrator when installing Scoop
154
+    if (!$RunAsAdmin -and (Test-IsAdministrator)) {
155
+        # Exception: Windows Sandbox, GitHub Actions CI
156
+        $exception = ($env:USERNAME -eq 'WDAGUtilityAccount') -or ($env:GITHUB_ACTIONS -eq 'true' -and $env:CI -eq 'true')
157
+        if (!$exception) {
158
+            Deny-Install 'Running the installer as administrator is disabled by default, see https://github.com/ScoopInstaller/Install#for-admin for details.'
159
+        }
160
+    }
161
+
162
+    # Show notification to change execution policy
163
+    $allowedExecutionPolicy = @('Unrestricted', 'RemoteSigned', 'ByPass')
164
+    if ((Get-ExecutionPolicy).ToString() -notin $allowedExecutionPolicy) {
165
+        Deny-Install "PowerShell requires an execution policy in [$($allowedExecutionPolicy -join ', ')] to run Scoop. For example, to set the execution policy to 'RemoteSigned' please run 'Set-ExecutionPolicy RemoteSigned -Scope CurrentUser'."
166
+    }
167
+
168
+    # Test if scoop is installed, by checking if scoop command exists.
169
+    if (Test-CommandAvailable('scoop')) {
170
+        Deny-Install "Scoop is already installed. Run 'scoop update' to get the latest version."
171
+    }
172
+}
173
+
174
+function Optimize-SecurityProtocol {
175
+    # .NET Framework 4.7+ has a default security protocol called 'SystemDefault',
176
+    # which allows the operating system to choose the best protocol to use.
177
+    # If SecurityProtocolType contains 'SystemDefault' (means .NET4.7+ detected)
178
+    # and the value of SecurityProtocol is 'SystemDefault', just do nothing on SecurityProtocol,
179
+    # 'SystemDefault' will use TLS 1.2 if the webrequest requires.
180
+    $isNewerNetFramework = ([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -contains 'SystemDefault')
181
+    $isSystemDefault = ([System.Net.ServicePointManager]::SecurityProtocol.Equals([System.Net.SecurityProtocolType]::SystemDefault))
182
+
183
+    # If not, change it to support TLS 1.2
184
+    if (!($isNewerNetFramework -and $isSystemDefault)) {
185
+        # Set to TLS 1.2 (3072), then TLS 1.1 (768), and TLS 1.0 (192). Ssl3 has been superseded,
186
+        # https://docs.microsoft.com/en-us/dotnet/api/system.net.securityprotocoltype?view=netframework-4.5
187
+        [System.Net.ServicePointManager]::SecurityProtocol = 3072 -bor 768 -bor 192
188
+        Write-Verbose 'SecurityProtocol has been updated to support TLS 1.2'
189
+    }
190
+}
191
+
192
+function Get-Downloader {
193
+    $downloadSession = New-Object System.Net.WebClient
194
+
195
+    # Set proxy to null if NoProxy is specificed
196
+    if ($NoProxy) {
197
+        $downloadSession.Proxy = $null
198
+    } elseif ($Proxy) {
199
+        # Prepend protocol if not provided
200
+        if (!$Proxy.IsAbsoluteUri) {
201
+            $Proxy = New-Object System.Uri('http://' + $Proxy.OriginalString)
202
+        }
203
+
204
+        $Proxy = New-Object System.Net.WebProxy($Proxy)
205
+
206
+        if ($null -ne $ProxyCredential) {
207
+            $Proxy.Credentials = $ProxyCredential.GetNetworkCredential()
208
+        } elseif ($ProxyUseDefaultCredentials) {
209
+            $Proxy.UseDefaultCredentials = $true
210
+        }
211
+
212
+        $downloadSession.Proxy = $Proxy
213
+    }
214
+
215
+    return $downloadSession
216
+}
217
+
218
+function Test-isFileLocked {
219
+    param(
220
+        [String] $path
221
+    )
222
+
223
+    $file = New-Object System.IO.FileInfo $path
224
+
225
+    if (!(Test-Path $path)) {
226
+        return $false
227
+    }
228
+
229
+    try {
230
+        $stream = $file.Open(
231
+            [System.IO.FileMode]::Open,
232
+            [System.IO.FileAccess]::ReadWrite,
233
+            [System.IO.FileShare]::None
234
+        )
235
+        if ($stream) {
236
+            $stream.Close()
237
+        }
238
+        return $false
239
+    } catch {
240
+        # The file is locked by a process.
241
+        return $true
242
+    }
243
+}
244
+
245
+function Expand-ZipArchive {
246
+    param(
247
+        [String] $path,
248
+        [String] $to
249
+    )
250
+
251
+    if (!(Test-Path $path)) {
252
+        Deny-Install "Unzip failed: can't find $path to unzip."
253
+    }
254
+
255
+    # Check if the zip file is locked, by antivirus software for example
256
+    $retries = 0
257
+    while ($retries -le 10) {
258
+        if ($retries -eq 10) {
259
+            Deny-Install "Unzip failed: can't unzip because a process is locking the file."
260
+        }
261
+        if (Test-isFileLocked $path) {
262
+            Write-InstallInfo "Waiting for $path to be unlocked by another process... ($retries/10)"
263
+            $retries++
264
+            Start-Sleep -Seconds 2
265
+        } else {
266
+            break
267
+        }
268
+    }
269
+
270
+    # Workaround to suspend Expand-Archive verbose output,
271
+    # upstream issue: https://github.com/PowerShell/Microsoft.PowerShell.Archive/issues/98
272
+    $oldVerbosePreference = $VerbosePreference
273
+    $global:VerbosePreference = 'SilentlyContinue'
274
+
275
+    # Disable progress bar to gain performance
276
+    $oldProgressPreference = $ProgressPreference
277
+    $global:ProgressPreference = 'SilentlyContinue'
278
+
279
+    # PowerShell 5+: use Expand-Archive to extract zip files
280
+    Microsoft.PowerShell.Archive\Expand-Archive -Path $path -DestinationPath $to -Force
281
+    $global:VerbosePreference = $oldVerbosePreference
282
+    $global:ProgressPreference = $oldProgressPreference
283
+}
284
+
285
+function Out-UTF8File {
286
+    param(
287
+        [Parameter(Mandatory = $True, Position = 0)]
288
+        [Alias('Path')]
289
+        [String] $FilePath,
290
+        [Switch] $Append,
291
+        [Switch] $NoNewLine,
292
+        [Parameter(ValueFromPipeline = $True)]
293
+        [PSObject] $InputObject
294
+    )
295
+    process {
296
+        if ($Append) {
297
+            [System.IO.File]::AppendAllText($FilePath, $InputObject)
298
+        } else {
299
+            if (!$NoNewLine) {
300
+                # Ref: https://stackoverflow.com/questions/5596982
301
+                # Performance Note: `WriteAllLines` throttles memory usage while
302
+                # `WriteAllText` needs to keep the complete string in memory.
303
+                [System.IO.File]::WriteAllLines($FilePath, $InputObject)
304
+            } else {
305
+                # However `WriteAllText` does not add ending newline.
306
+                [System.IO.File]::WriteAllText($FilePath, $InputObject)
307
+            }
308
+        }
309
+    }
310
+}
311
+
312
+function Import-ScoopShim {
313
+    Write-InstallInfo 'Creating shim...'
314
+    # The scoop executable
315
+    $path = "$SCOOP_APP_DIR\bin\scoop.ps1"
316
+
317
+    if (!(Test-Path $SCOOP_SHIMS_DIR)) {
318
+        New-Item -Type Directory $SCOOP_SHIMS_DIR | Out-Null
319
+    }
320
+
321
+    # The scoop shim
322
+    $shim = "$SCOOP_SHIMS_DIR\scoop"
323
+
324
+    # Convert to relative path
325
+    Push-Location $SCOOP_SHIMS_DIR
326
+    $relativePath = Resolve-Path -Relative $path
327
+    Pop-Location
328
+    $absolutePath = Resolve-Path $path
329
+
330
+    # if $path points to another drive resolve-path prepends .\ which could break shims
331
+    $ps1text = if ($relativePath -match '^(\.\\)?\w:.*$') {
332
+        @(
333
+            "# $absolutePath",
334
+            "`$path = `"$path`"",
335
+            "if (`$MyInvocation.ExpectingInput) { `$input | & `$path $arg @args } else { & `$path $arg @args }",
336
+            "exit `$LASTEXITCODE"
337
+        )
338
+    } else {
339
+        @(
340
+            "# $absolutePath",
341
+            "`$path = Join-Path `$PSScriptRoot `"$relativePath`"",
342
+            "if (`$MyInvocation.ExpectingInput) { `$input | & `$path $arg @args } else { & `$path $arg @args }",
343
+            "exit `$LASTEXITCODE"
344
+        )
345
+    }
346
+    $ps1text -join "`r`n" | Out-UTF8File "$shim.ps1"
347
+
348
+    # make ps1 accessible from cmd.exe
349
+    @(
350
+        "@rem $absolutePath",
351
+        '@echo off',
352
+        'setlocal enabledelayedexpansion',
353
+        'set args=%*',
354
+        ':: replace problem characters in arguments',
355
+        "set args=%args:`"='%",
356
+        "set args=%args:(=``(%",
357
+        "set args=%args:)=``)%",
358
+        "set invalid=`"='",
359
+        'if !args! == !invalid! ( set args= )',
360
+        'where /q pwsh.exe',
361
+        'if %errorlevel% equ 0 (',
362
+        "    pwsh -noprofile -ex unrestricted -file `"$absolutePath`" $arg %args%",
363
+        ') else (',
364
+        "    powershell -noprofile -ex unrestricted -file `"$absolutePath`" $arg %args%",
365
+        ')'
366
+    ) -join "`r`n" | Out-UTF8File "$shim.cmd"
367
+
368
+    @(
369
+        '#!/bin/sh',
370
+        "# $absolutePath",
371
+        'if command -v pwsh.exe > /dev/null 2>&1; then',
372
+        "    pwsh.exe -noprofile -ex unrestricted -file `"$absolutePath`" $arg `"$@`"",
373
+        'else',
374
+        "    powershell.exe -noprofile -ex unrestricted -file `"$absolutePath`" $arg `"$@`"",
375
+        'fi'
376
+    ) -join "`n" | Out-UTF8File $shim -NoNewLine
377
+}
378
+
379
+function Get-Env {
380
+    param(
381
+        [String] $name,
382
+        [Switch] $global
383
+    )
384
+
385
+    $RegisterKey = if ($global) {
386
+        Get-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager'
387
+    } else {
388
+        Get-Item -Path 'HKCU:'
389
+    }
390
+
391
+    $EnvRegisterKey = $RegisterKey.OpenSubKey('Environment')
392
+    $RegistryValueOption = [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames
393
+    $EnvRegisterKey.GetValue($name, $null, $RegistryValueOption)
394
+}
395
+
396
+function Publish-Env {
397
+    if (-not ('Win32.NativeMethods' -as [Type])) {
398
+        Add-Type -Namespace Win32 -Name NativeMethods -MemberDefinition @'
399
+[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
400
+public static extern IntPtr SendMessageTimeout(
401
+    IntPtr hWnd, uint Msg, UIntPtr wParam, string lParam,
402
+    uint fuFlags, uint uTimeout, out UIntPtr lpdwResult);
403
+'@
404
+    }
405
+
406
+    $HWND_BROADCAST = [IntPtr] 0xffff
407
+    $WM_SETTINGCHANGE = 0x1a
408
+    $result = [UIntPtr]::Zero
409
+
410
+    [Win32.Nativemethods]::SendMessageTimeout($HWND_BROADCAST,
411
+        $WM_SETTINGCHANGE,
412
+        [UIntPtr]::Zero,
413
+        'Environment',
414
+        2,
415
+        5000,
416
+        [ref] $result
417
+    ) | Out-Null
418
+}
419
+
420
+function Write-Env {
421
+    param(
422
+        [String] $name,
423
+        [String] $val,
424
+        [Switch] $global
425
+    )
426
+
427
+    $RegisterKey = if ($global) {
428
+        Get-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager'
429
+    } else {
430
+        Get-Item -Path 'HKCU:'
431
+    }
432
+
433
+    $EnvRegisterKey = $RegisterKey.OpenSubKey('Environment', $true)
434
+    if ($val -eq $null) {
435
+        $EnvRegisterKey.DeleteValue($name)
436
+    } else {
437
+        $RegistryValueKind = if ($val.Contains('%')) {
438
+            [Microsoft.Win32.RegistryValueKind]::ExpandString
439
+        } elseif ($EnvRegisterKey.GetValue($name)) {
440
+            $EnvRegisterKey.GetValueKind($name)
441
+        } else {
442
+            [Microsoft.Win32.RegistryValueKind]::String
443
+        }
444
+        $EnvRegisterKey.SetValue($name, $val, $RegistryValueKind)
445
+    }
446
+    Publish-Env
447
+}
448
+
449
+function Add-ShimsDirToPath {
450
+    # Get $env:PATH of current user
451
+    $userEnvPath = Get-Env 'PATH'
452
+
453
+    if ($userEnvPath -notmatch [Regex]::Escape($SCOOP_SHIMS_DIR)) {
454
+        $h = (Get-PSProvider 'FileSystem').Home
455
+        if (!$h.EndsWith('\')) {
456
+            $h += '\'
457
+        }
458
+
459
+        if (!($h -eq '\')) {
460
+            $friendlyPath = "$SCOOP_SHIMS_DIR" -Replace ([Regex]::Escape($h)), '~\'
461
+            Write-InstallInfo "Adding $friendlyPath to your path."
462
+        } else {
463
+            Write-InstallInfo "Adding $SCOOP_SHIMS_DIR to your path."
464
+        }
465
+
466
+        # For future sessions
467
+        Write-Env 'PATH' "$SCOOP_SHIMS_DIR;$userEnvPath"
468
+        # For current session
469
+        $env:PATH = "$SCOOP_SHIMS_DIR;$env:PATH"
470
+    }
471
+}
472
+
473
+function Use-Config {
474
+    if (!(Test-Path $SCOOP_CONFIG_FILE)) {
475
+        return $null
476
+    }
477
+
478
+    try {
479
+        return (Get-Content $SCOOP_CONFIG_FILE -Raw | ConvertFrom-Json -ErrorAction Stop)
480
+    } catch {
481
+        Deny-Install "ERROR loading $SCOOP_CONFIG_FILE`: $($_.Exception.Message)"
482
+    }
483
+}
484
+
485
+function Add-Config {
486
+    param (
487
+        [Parameter(Mandatory = $True, Position = 0)]
488
+        [String] $Name,
489
+        [Parameter(Mandatory = $True, Position = 1)]
490
+        [String] $Value
491
+    )
492
+
493
+    $scoopConfig = Use-Config
494
+
495
+    if ($scoopConfig -is [System.Management.Automation.PSObject]) {
496
+        if ($Value -eq [bool]::TrueString -or $Value -eq [bool]::FalseString) {
497
+            $Value = [System.Convert]::ToBoolean($Value)
498
+        }
499
+        if ($null -eq $scoopConfig.$Name) {
500
+            $scoopConfig | Add-Member -MemberType NoteProperty -Name $Name -Value $Value
501
+        } else {
502
+            $scoopConfig.$Name = $Value
503
+        }
504
+    } else {
505
+        $baseDir = Split-Path -Path $SCOOP_CONFIG_FILE
506
+        if (!(Test-Path $baseDir)) {
507
+            New-Item -Type Directory $baseDir | Out-Null
508
+        }
509
+
510
+        $scoopConfig = New-Object PSObject
511
+        $scoopConfig | Add-Member -MemberType NoteProperty -Name $Name -Value $Value
512
+    }
513
+
514
+    if ($null -eq $Value) {
515
+        $scoopConfig.PSObject.Properties.Remove($Name)
516
+    }
517
+
518
+    ConvertTo-Json $scoopConfig | Set-Content $SCOOP_CONFIG_FILE -Encoding ASCII
519
+    return $scoopConfig
520
+}
521
+
522
+function Add-DefaultConfig {
523
+    # If user-level SCOOP env not defined, save to root_path
524
+    if (!(Get-Env 'SCOOP')) {
525
+        if ($SCOOP_DIR -ne "$env:USERPROFILE\scoop") {
526
+            Write-Verbose "Adding config root_path: $SCOOP_DIR"
527
+            Add-Config -Name 'root_path' -Value $SCOOP_DIR | Out-Null
528
+        }
529
+    }
530
+
531
+    # Use system SCOOP_GLOBAL, or set system SCOOP_GLOBAL
532
+    # with $env:SCOOP_GLOBAL if RunAsAdmin, otherwise save to global_path
533
+    if (!(Get-Env 'SCOOP_GLOBAL' -global)) {
534
+        if ((Test-IsAdministrator) -and $env:SCOOP_GLOBAL) {
535
+            Write-Verbose "Setting System Environment Variable SCOOP_GLOBAL: $env:SCOOP_GLOBAL"
536
+            [Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
537
+        } else {
538
+            if ($SCOOP_GLOBAL_DIR -ne "$env:ProgramData\scoop") {
539
+                Write-Verbose "Adding config global_path: $SCOOP_GLOBAL_DIR"
540
+                Add-Config -Name 'global_path' -Value $SCOOP_GLOBAL_DIR | Out-Null
541
+            }
542
+        }
543
+    }
544
+
545
+    # Use system SCOOP_CACHE, or set system SCOOP_CACHE
546
+    # with $env:SCOOP_CACHE if RunAsAdmin, otherwise save to cache_path
547
+    if (!(Get-Env 'SCOOP_CACHE' -global)) {
548
+        if ((Test-IsAdministrator) -and $env:SCOOP_CACHE) {
549
+            Write-Verbose "Setting System Environment Variable SCOOP_CACHE: $env:SCOOP_CACHE"
550
+            [Environment]::SetEnvironmentVariable('SCOOP_CACHE', $env:SCOOP_CACHE, 'Machine')
551
+        } else {
552
+            if ($SCOOP_CACHE_DIR -ne "$SCOOP_DIR\cache") {
553
+                Write-Verbose "Adding config cache_path: $SCOOP_CACHE_DIR"
554
+                Add-Config -Name 'cache_path' -Value $SCOOP_CACHE_DIR | Out-Null
555
+            }
556
+        }
557
+    }
558
+
559
+    # save current datatime to last_update
560
+    Add-Config -Name 'last_update' -Value ([System.DateTime]::Now.ToString('o')) | Out-Null
561
+}
562
+
563
+function Test-CommandAvailable {
564
+    param (
565
+        [Parameter(Mandatory = $True, Position = 0)]
566
+        [String] $Command
567
+    )
568
+    return [Boolean](Get-Command $Command -ErrorAction SilentlyContinue)
569
+}
570
+
571
+function Install-Scoop {
572
+    Write-InstallInfo 'Initializing...'
573
+    # Validate install parameters
574
+    Test-ValidateParameter
575
+    # Check prerequisites
576
+    Test-Prerequisite
577
+    # Enable TLS 1.2
578
+    Optimize-SecurityProtocol
579
+
580
+    # Download scoop from GitHub
581
+    Write-InstallInfo 'Downloading...'
582
+    $downloader = Get-Downloader
583
+    [bool]$downloadZipsRequired = $True
584
+
585
+    if (Test-CommandAvailable('git')) {
586
+        $old_https = $env:HTTPS_PROXY
587
+        $old_http = $env:HTTP_PROXY
588
+        try {
589
+            if ($downloader.Proxy) {
590
+                #define env vars for git when behind a proxy
591
+                $Env:HTTP_PROXY = $downloader.Proxy.Address
592
+                $Env:HTTPS_PROXY = $downloader.Proxy.Address
593
+            }
594
+            Write-Verbose "Cloning $SCOOP_PACKAGE_GIT_REPO to $SCOOP_APP_DIR"
595
+            git clone -q $SCOOP_PACKAGE_GIT_REPO $SCOOP_APP_DIR
596
+            if (-Not $?) {
597
+                throw 'Cloning failed. Falling back to downloading zip files.'
598
+            }
599
+            Write-Verbose "Cloning $SCOOP_MAIN_BUCKET_GIT_REPO to $SCOOP_MAIN_BUCKET_DIR"
600
+            git clone -q $SCOOP_MAIN_BUCKET_GIT_REPO $SCOOP_MAIN_BUCKET_DIR
601
+            if (-Not $?) {
602
+                throw 'Cloning failed. Falling back to downloading zip files.'
603
+            }
604
+            $downloadZipsRequired = $False
605
+        } catch {
606
+            Write-Warning "$($_.Exception.Message)"
607
+            $Global:LastExitCode = 0
608
+        } finally {
609
+            $env:HTTPS_PROXY = $old_https
610
+            $env:HTTP_PROXY = $old_http
611
+        }
612
+    }
613
+
614
+    if ($downloadZipsRequired) {
615
+        # 1. download scoop
616
+        $scoopZipfile = "$SCOOP_APP_DIR\scoop.zip"
617
+        if (!(Test-Path $SCOOP_APP_DIR)) {
618
+            New-Item -Type Directory $SCOOP_APP_DIR | Out-Null
619
+        }
620
+        Write-Verbose "Downloading $SCOOP_PACKAGE_REPO to $scoopZipfile"
621
+        $downloader.downloadFile($SCOOP_PACKAGE_REPO, $scoopZipfile)
622
+        # 2. download scoop main bucket
623
+        $scoopMainZipfile = "$SCOOP_MAIN_BUCKET_DIR\scoop-main.zip"
624
+        if (!(Test-Path $SCOOP_MAIN_BUCKET_DIR)) {
625
+            New-Item -Type Directory $SCOOP_MAIN_BUCKET_DIR | Out-Null
626
+        }
627
+        Write-Verbose "Downloading $SCOOP_MAIN_BUCKET_REPO to $scoopMainZipfile"
628
+        $downloader.downloadFile($SCOOP_MAIN_BUCKET_REPO, $scoopMainZipfile)
629
+
630
+        # Extract files from downloaded zip
631
+        Write-InstallInfo 'Extracting...'
632
+        # 1. extract scoop
633
+        $scoopUnzipTempDir = "$SCOOP_APP_DIR\_tmp"
634
+        Write-Verbose "Extracting $scoopZipfile to $scoopUnzipTempDir"
635
+        Expand-ZipArchive $scoopZipfile $scoopUnzipTempDir
636
+        Copy-Item "$scoopUnzipTempDir\scoop-*\*" $SCOOP_APP_DIR -Recurse -Force
637
+        # 2. extract scoop main bucket
638
+        $scoopMainUnzipTempDir = "$SCOOP_MAIN_BUCKET_DIR\_tmp"
639
+        Write-Verbose "Extracting $scoopMainZipfile to $scoopMainUnzipTempDir"
640
+        Expand-ZipArchive $scoopMainZipfile $scoopMainUnzipTempDir
641
+        Copy-Item "$scoopMainUnzipTempDir\Main-*\*" $SCOOP_MAIN_BUCKET_DIR -Recurse -Force
642
+
643
+        # Cleanup
644
+        Remove-Item $scoopUnzipTempDir -Recurse -Force
645
+        Remove-Item $scoopZipfile
646
+        Remove-Item $scoopMainUnzipTempDir -Recurse -Force
647
+        Remove-Item $scoopMainZipfile
648
+    }
649
+    # Create the scoop shim
650
+    Import-ScoopShim
651
+    # Finially ensure scoop shims is in the PATH
652
+    Add-ShimsDirToPath
653
+    # Setup initial configuration of Scoop
654
+    Add-DefaultConfig
655
+
656
+    Write-InstallInfo 'Scoop was installed successfully!' -ForegroundColor DarkGreen
657
+    Write-InstallInfo "Type 'scoop help' for instructions."
658
+}
659
+
660
+function Write-DebugInfo {
661
+    param($BoundArgs)
662
+
663
+    Write-Verbose '-------- PSBoundParameters --------'
664
+    $BoundArgs.GetEnumerator() | ForEach-Object { Write-Verbose $_ }
665
+    Write-Verbose '-------- Environment Variables --------'
666
+    Write-Verbose "`$env:USERPROFILE: $env:USERPROFILE"
667
+    Write-Verbose "`$env:ProgramData: $env:ProgramData"
668
+    Write-Verbose "`$env:SCOOP: $env:SCOOP"
669
+    Write-Verbose "`$env:SCOOP_CACHE: $SCOOP_CACHE"
670
+    Write-Verbose "`$env:SCOOP_GLOBAL: $env:SCOOP_GLOBAL"
671
+    Write-Verbose '-------- Selected Variables --------'
672
+    Write-Verbose "SCOOP_DIR: $SCOOP_DIR"
673
+    Write-Verbose "SCOOP_CACHE_DIR: $SCOOP_CACHE_DIR"
674
+    Write-Verbose "SCOOP_GLOBAL_DIR: $SCOOP_GLOBAL_DIR"
675
+    Write-Verbose "SCOOP_CONFIG_HOME: $SCOOP_CONFIG_HOME"
676
+}
677
+
678
+# Prepare variables
679
+$IS_EXECUTED_FROM_IEX = ($null -eq $MyInvocation.MyCommand.Path)
680
+
681
+# Abort when the language mode is restricted
682
+Test-LanguageMode
683
+
684
+# Scoop root directory
685
+$SCOOP_DIR = $ScoopDir, $env:SCOOP, "$env:USERPROFILE\scoop" | Where-Object { -not [String]::IsNullOrEmpty($_) } | Select-Object -First 1
686
+# Scoop global apps directory
687
+$SCOOP_GLOBAL_DIR = $ScoopGlobalDir, $env:SCOOP_GLOBAL, "$env:ProgramData\scoop" | Where-Object { -not [String]::IsNullOrEmpty($_) } | Select-Object -First 1
688
+# Scoop cache directory
689
+$SCOOP_CACHE_DIR = $ScoopCacheDir, $env:SCOOP_CACHE, "$SCOOP_DIR\cache" | Where-Object { -not [String]::IsNullOrEmpty($_) } | Select-Object -First 1
690
+# Scoop shims directory
691
+$SCOOP_SHIMS_DIR = "$SCOOP_DIR\shims"
692
+# Scoop itself directory
693
+$SCOOP_APP_DIR = "$SCOOP_DIR\apps\scoop\current"
694
+# Scoop main bucket directory
695
+$SCOOP_MAIN_BUCKET_DIR = "$SCOOP_DIR\buckets\main"
696
+# Scoop config file location
697
+$SCOOP_CONFIG_HOME = $env:XDG_CONFIG_HOME, "$env:USERPROFILE\.config" | Select-Object -First 1
698
+$SCOOP_CONFIG_FILE = "$SCOOP_CONFIG_HOME\scoop\config.json"
699
+
700
+# TODO: Use a specific version of Scoop and the main bucket
701
+$SCOOP_PACKAGE_REPO = 'https://github.com/ScoopInstaller/Scoop/archive/master.zip'
702
+$SCOOP_MAIN_BUCKET_REPO = 'https://github.com/ScoopInstaller/Main/archive/master.zip'
703
+
704
+$SCOOP_PACKAGE_GIT_REPO = 'https://github.com/ScoopInstaller/Scoop.git'
705
+$SCOOP_MAIN_BUCKET_GIT_REPO = 'https://github.com/ScoopInstaller/Main.git'
706
+
707
+# Quit if anything goes wrong
708
+$oldErrorActionPreference = $ErrorActionPreference
709
+$ErrorActionPreference = 'Stop'
710
+
711
+# Logging debug info
712
+Write-DebugInfo $PSBoundParameters
713
+# Bootstrap function
714
+Install-Scoop
715
+
716
+# Reset $ErrorActionPreference to original value
717
+$ErrorActionPreference = $oldErrorActionPreference

+ 2 - 2
requirements.txt

1
-Django
2
-mssql-django
1
+Django==4.2
2
+mssql-django==1.3
3
 pyodbc==4.0.39
3
 pyodbc==4.0.39
4
 # For filtering and querying
4
 # For filtering and querying
5
 django-filter  # Simplified filtering
5
 django-filter  # Simplified filtering