private void ProcessUpdateChunk(ANWI.Messaging.IMessagePayload p)
        {
            ANWI.Messaging.Updater.Chunk chunk
                = p as ANWI.Messaging.Updater.Chunk;

            updating = true;
            if (receiver.AddChunk(chunk.data))
            {
                NotifyPropertyChanged("progress");
                MessageRouter.Instance.Send(
                    MessageRouter.Service.Update,
                    new ANWI.Messaging.Request()
                {
                    type = ANWI.Messaging.Request.Type.GetUpdateChunk
                },
                    this);
            }
            else
            {
                NotifyPropertyChanged("progress");

                if (!receiver.Write() ||
                    UpdateDownloaded?.Invoke(receiver.outputPath) == false)
                {
                    updating = false;
                    this.Dispatcher.Invoke(() => {
                        Text_Message.Text = "Patching failed";
                    });
                }
                else
                {
                    updating = false;
                    this.Dispatcher.Invoke(() => {
                        Text_Message.Text = "Patching...";
                    });
                }

                Thread.Sleep(1000);
                this.Dispatcher.Invoke(() => { this.Close(); });
            }
        }
        private void ProcessUpdateStatus(ANWI.Messaging.IMessagePayload p)
        {
            ANWI.Messaging.Updater.CheckResult res
                = p as ANWI.Messaging.Updater.CheckResult;

            if (res.updateNeeded)
            {
                this.Dispatcher.Invoke(() => {
                    Text_Message.Text = "Downloading Update.";
                });

                Thread.Sleep(1000);

                receiver = new UpdateReceiver(res.updateSize);

                MessageRouter.Instance.Send(
                    MessageRouter.Service.Update,
                    new ANWI.Messaging.Request()
                {
                    type = ANWI.Messaging.Request.Type.GetUpdateChunk
                },
                    this);
            }
            else
            {
                this.Dispatcher.Invoke(() => {
                    Text_Message.Text = "Version OK.";
                });

                Thread.Sleep(1000);

                this.Dispatcher.Invoke(() => {
                    this.Close();
                });
            }
        }