Example #1
0
        public void CheckForUpdates()
        {
            try
            {
                CleanUp();
                if (File.Exists(LocalUpdateFile))
                {
                    UpdateSaveFile CheckVersion = DecodeSaveFile(LocalUpdateFile);


                    Check = Version.Parse(CheckVersion.VersionString);
                }
                else
                {
                    Version.TryParse("0.0.0.0", out Check);
                }
                WebClient downloadClient = new WebClient();
                downloadClient.DownloadFile(UpdateUrl, LocalUpdateFile);
                downloadClient.Dispose();

                if (!File.Exists(LocalUpdateFile))
                {
                    throw new FileNotFoundException("The local update file is missing!", LocalUpdateFile);
                }

                UpdateSaveFile localFile = DecodeSaveFile(LocalUpdateFile);

                //Version localVersion = Assembly.GetEntryAssembly().GetName().Version;
                Version onlineVersion = Version.Parse(localFile.VersionString);

                if (onlineVersion > Check)
                {
                    if (MessageBox.Show(String.Format("Version {0} available,\nInstall it now?", onlineVersion.ToString()), "NXT Updater", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        frmUpdater updateForm = new frmUpdater(localFile, GetPath(UpdateUrl));
                        updateForm.ShowDialog();
                    }
                }
                else
                {
                    MessageBox.Show("You already have the latest version!", "NXT  Updater", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Error checking for updates\ntry again later!\n\nError Message:" + e.Message, "NXT Updater", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    public void ReadWriteStream(Stream readStream, Stream writeStream, frmUpdater _MyParent, int CurrentVersion, long BytesCompleted)
    {
        int Length = 2048;

        Byte[] buffer    = new Byte[Length];
        int    bytesRead = readStream.Read(buffer, 0, Length);

        // write the required bytes
        while (bytesRead > 0)
        {
            writeStream.Write(buffer, 0, bytesRead);
            bytesRead = readStream.Read(buffer, 0, Length);
            _MyParent.RefreshDownloadLabels(CurrentVersion, BytesCompleted + writeStream.Position);
            Application.DoEvents();
        }
        readStream.Close();
        writeStream.Close();
    }
Example #3
0
        static void Main(string[] args)
        {
            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                Environment.CurrentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);//Application.StartupPath;

                try
                {
                    var str = File.Create(Environment.CurrentDirectory + @"\test.log");
                    str.Close();

                    Directory.CreateDirectory(Environment.CurrentDirectory + @"\test");

                    Directory.Delete(Environment.CurrentDirectory + @"\test");
                    File.Delete(Environment.CurrentDirectory + @"\test.log");
                }
                catch (UnauthorizedAccessException)
                {
                    if (!Program.ModifyRights())
                    {
                        return;
                    }
                }

                File.Delete("__iw4mp");

                var files = Directory.GetFiles(Environment.CurrentDirectory, "*.exe", SearchOption.TopDirectoryOnly);
                foreach (var file in files)
                {
                    if (Regex.Match(file.Split('.')[0], "([0-9A-F]{7,10})").Success)
                    {
                        File.Delete(file);
                    }
                }

                CheckCaches(@"bootstrap\caches.xml");

                if (aIW.UpdateUtility.Bootstrap())
                {
                    return;
                }

                if (!File.Exists("mss32.dll") || !File.Exists("binkw32.dll") || !File.Exists(@"main\iw_00.iwd"))
                {
                    MessageBox.Show("Some game library files could not be found. It could be you didn't put the updater files in your existing Modern Warfare 2 game folder. Also, you still need the game if you want to run alterIWnet.", "alterIWnet", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                ConnectionManager.Install();

                var processes = Process.GetProcessesByName("iw4mp");
                if (processes.Length > 1)
                {
                    ConnectionManager.Handle(args, true);
                    return;
                }

                processes = Process.GetProcessesByName("iw4mp.dat");
                if (processes.Length > 0)
                {
                    ConnectionManager.Handle(args, true);
                    return;
                }

                // pre-run task: remove improper mp_playlists.ff files (english)
                // added 2010-07-23

                if (File.Exists(@"zone\english\mp_playlists.ff"))
                {
                    // delete it in all cases so it updates
                    File.Delete(@"zone\english\mp_playlists.ff");

                    // old code

                    /*
                     * var info = new FileInfo(@"zone\english\mp_playlists.ff");
                     * if (info.Length < 16384)
                     * { // 16 kB should be a proper minimum size
                     *  File.Delete(@"zone\english\mp_playlists.ff");
                     * }
                     */
                }

                var enableUpdates = Config.Get("enable_updates", "1");

                if (enableUpdates == "0")
                {
                    goto skipUpdate;
                }

                CheckCaches(@"caches.xml");

                var icon = new NotifyIcon();
                icon.Icon    = System.Drawing.Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);
                icon.Text    = "alterIWnet - starting";
                icon.Visible = true;

                var _core = new Core();
                _core.CacheLocation    = Environment.CurrentDirectory;
                _core.WebCacheServer   = Config.Get("cache_server", "http://localhost/ctest_aiw2/");
                _core.LocalCacheServer = Config.Get("local_cache", "");
                _core.WantedCaches     = Config.Get("caches", "citizen").Split(';');
                _core.EnableUploading  = (Config.Get("enable_upload", "1") != "0");

                //_core.Completed += new EventHandler<EventArgs>(_core_Completed);
                //_core.Failed += new EventHandler<FailedEventArgs>(_core_Failed);
                //_core.StatusChanged += new EventHandler<StatusChangedEventArgs>(_core_StatusChanged);

                _core.StatusChanged += new EventHandler <StatusChangedEventArgs>(_core_StatusChanged);
                _core.Failed        += new EventHandler <FailedEventArgs>(_core_Failed);
                _core.Completed     += new EventHandler <EventArgs>(_core_Completed);

                _core.Start();

                var time  = DateTime.UtcNow;
                var shown = false;

                while (!Completed)
                {
                    System.Threading.Thread.Sleep(1);

                    var newTime = DateTime.UtcNow;
                    var diff    = newTime - time;

                    if (diff.TotalMilliseconds > 2000)
                    {
                        if (!shown)
                        {
                            icon.ShowBalloonTip(2500, "alterIWnet", "alterIWnet is currently verifying data files. Don't worry, it'll start soon. ;)", ToolTipIcon.Info);

                            shown = true;
                        }
                    }
                }

                if (openUpdater)
                {
                    var updater = new frmUpdater(_core);
                    Application.Run(updater);
                }

                if (!frmUpdater.Finished)
                {
                    return;
                }

                icon.Visible = false;
                icon.Dispose();

skipUpdate:
                var assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
                var progFile = assemblyName + ".dat";

                if (!File.Exists(Environment.CurrentDirectory + @"\" + progFile))
                {
                    MessageBox.Show(progFile + " does not exist.");
                    return;
                }

                /*var random = new Random();
                 * var name = random.Next(0x1000000, 0xFFFFFFF).ToString("X7") + ".exe";
                 *
                 * File.Copy(progFile, name);
                 * File.SetCreationTime(name, DateTime.Now - new TimeSpan(random.Next(3, 5), random.Next(1, 24), random.Next(1, 60), random.Next(1, 60)));
                 * File.SetLastWriteTime(name, DateTime.Now - new TimeSpan(random.Next(1, 3), random.Next(1, 24), random.Next(1, 60), random.Next(1, 60)));*/

                STARTUPINFO         si = new STARTUPINFO();
                PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
                CreateProcess(progFile, null, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);

                var proc = Process.GetProcessById((int)pi.dwProcessId);

                ConnectionManager.Handle(args, false);

                proc.WaitForExit();

                //File.Delete(name);
                //var proc = new Process();
                //proc.
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "alterIWnet", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }