File size: 4,504 Bytes
e26fba6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.IO;
using System.Reflection;
using System.Diagnostics;

namespace MovieTube.Downloader
{
    public partial class MainForm : Form
    {
        private Thread thread;
        private static string Folder = @"_MovieTube\MovieTube.Installer.exe";
        private static string SetupPath = @"_MovieTube\MovieTube.Setup.msi";
        private static string VersionUrl = "http://www.filmkhoj.com/api/appversion";
        private static string DownloadUrl = "http://www.filmkhoj.com/Home/Download2";
        private WebClient client = new WebClient();
        private int progress;
        public MainForm()
        {
            InitializeComponent();
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            this.timer.Stop();
            this.thread = new Thread(DownloadAndLaunch);
            thread.Start();
        }

        private string FilePath
        {
            get
            {
                return Path.Combine(Application.StartupPath, Folder);
            }
        }

        private string DirectoryPath
        {
            get
            {
               return  Path.GetDirectoryName(FilePath);
            }
        }
       
        private void DownloadAndLaunch()
        {
            try
            {
                var path = FilePath;
                
                //string v;
                //Version verion = null;
                //Version dVersion = null;
                //if (GetResource(VersionUrl, out v))
                //    verion = new Version(v);

                //if (File.Exists(path))
                //{
                //    try
                //    {
                //        dVersion = AssemblyName.GetAssemblyName(Path.Combine(Application.StartupPath,)).Version;
                //    }
                //    catch { }
                //}

                //if (dVersion == null || dVersion < verion)
                {
                    var dir = DirectoryPath;
                    if (Directory.Exists(dir))
                        Directory.Delete(dir, true);
                    Directory.CreateDirectory(dir);

                    Download(DownloadUrl, path);
                }
                //else
                //{
                //    this.progressBar1.Value = 100;
                //    LaunchInstaller();
                //}
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Downloader");
            }

        }

        private void Download(string url, string filePath)
        {
           client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
           client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
           client.DownloadFileAsync(new Uri(url), filePath);
        }

        void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (File.Exists(FilePath))
            {
                LaunchInstaller();
            }
            else
            {
                MessageBox.Show(e.Error.Message, "Downloader");
            }
        }

        void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            this.progress = e.ProgressPercentage;
        }

        private bool GetResource(string url, out string result)
        {
            result = null;
            try
            {
                using (var client = new WebClient())
                {
                    result = client.DownloadString(url);
                }
            }
            catch { return false; }
            return true;
        }

        private void timerProgress_Tick(object sender, EventArgs e)
        {
            this.progressBar1.Value = this.progress;
        }

        private void LaunchInstaller()
        {
            var pi = new ProcessStartInfo()
            {
                WorkingDirectory = DirectoryPath,
                FileName = FilePath
            };
            Process.Start(pi);
            Application.Exit();
        }

    }
  
}