예제 #1
0
        public void LaunchUpdate(ApplicationVersion version)
        {
            var caption = _translation.GetFormattedTitle(_applicationNameProvider.ApplicationName);

            try
            {
                var done = false;

                while (!done)
                {
                    var interaction = new UpdateDownloadInteraction(version.DownloadUrl);
                    _interactionInvoker.Invoke(interaction);

                    var result = interaction.Success;

                    if (result != true)
                    {
                        done = true;
                        continue;
                    }

                    if (_hashUtil.VerifyFileMd5(interaction.DownloadedFile, version.FileHash))
                    {
                        done = true;
                        _threadManager.UpdateAfterShutdownAction =
                            () => Process.Start(interaction.DownloadedFile);
                        continue;
                    }

                    var message = _translation.DownloadHashErrorMessage;
                    var res     = ShowMessage(message, caption, MessageOptions.YesNo, MessageIcon.Warning);

                    if (res != MessageResponse.No)
                    {
                        continue;
                    }

                    _threadManager.UpdateAfterShutdownAction =
                        () => Process.Start(interaction.DownloadedFile);
                    done = true;
                }
            }
            catch (Exception)
            {
                var message = _translation.DownloadErrorMessage;
                var res     = ShowMessage(message, caption, MessageOptions.YesNo, MessageIcon.PDFCreator);

                if (res == MessageResponse.Yes)
                {
                    Process.Start(version.DownloadUrl);
                }
            }
        }
예제 #2
0
        private bool TryLaunchUpdate(IApplicationVersion version, string caption, string filePath)
        {
            try
            {
                var interaction = new UpdateDownloadInteraction(async() => await _updateDownloader.StartDownloadAsync(version));
                _interactionInvoker.Invoke(interaction);

                if (interaction.Success)
                {
                    // Hash test
                    if (!_hashUtil.VerifyFileMd5(filePath, version.FileHash))
                    {
                        //Hash does not fit should we retry download
                        var message = _translation.DownloadHashErrorMessage;
                        var res     = ShowMessage(message, caption, MessageOptions.YesNo, MessageIcon.Warning);

                        if (res == MessageResponse.Yes) // Yes please retry download: Download was not successful
                        {
                            return(false);
                        }
                    }
                }
            }
            catch (Exception)
            {
                var message = _translation.DownloadErrorMessage;
                var res     = ShowMessage(message, caption, MessageOptions.YesNo, MessageIcon.PDFCreator);

                if (res == MessageResponse.Yes)
                {
                    Process.Start(version.DownloadUrl);
                }
            }

            return(true); // Download was successful
        }