【问题标题】:Update WPF Application Programmatically以编程方式更新 WPF 应用程序
【发布时间】:2016-04-14 12:12:15
【问题描述】:

我正在尝试手动更新我的 WPF 应用程序,我发现了以下过程:

    private void InstallUpdateSyncWithInfo()
    {
        UpdateCheckInfo info = null;

        if (ApplicationDeployment.IsNetworkDeployed)
        {
            ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;

            try
            {
                info = ad.CheckForDetailedUpdate();

            }
            catch (DeploymentDownloadException dde)
            {
                MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message);
                return;
            }
            catch (InvalidDeploymentException ide)
            {
                MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message);
                return;
            }
            catch (InvalidOperationException ioe)
            {
                MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message);
                return;
            }

            if (info.UpdateAvailable)
            {
                Boolean doUpdate = true;

                if (!info.IsUpdateRequired)
                {
                    MessageBoxResult result = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButton.YesNo, MessageBoxImage.Question);
                    if (result == MessageBoxResult.Yes)
                    {
                        doUpdate = false;
                    }
                }
                else
                {
                    // Display a message that the app MUST reboot. Display the minimum required version.
                    MessageBox.Show("This application has detected a mandatory update from your current " +
                        "version to version " + info.MinimumRequiredVersion.ToString() +
                        ". The application will now install the update and restart.",
                        "Update Available", MessageBoxButton.OK,
                        MessageBoxImage.Information);
                }

                if (doUpdate)
                {
                    try
                    {
                        ad.Update();
                        MessageBox.Show("The application has been upgraded, and will now restart.");
                        Application.Current.Shutdown();
                    }
                    catch (DeploymentDownloadException dde)
                    {
                        MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde);
                        return;
                    }
                }
            }
        }
    }

从按钮事件调用过程:

        private void btnUpdate_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            InstallUpdateSyncWithInfo();
        }
        catch (Exception er)
        {
            MessageBox.Show(er.Message);
            return;
        }
    }

我无法调试应用程序,因为它需要处于网络部署模式。

我在我的服务器上在线上传了我的应用程序的最新版本,并在应用程序属性中指定了更新的位置。

运行应用程序并点击更新按钮后,我收到以下错误:

请你帮我解决这个问题。

SOURSE

提前致谢

阿卜杜勒萨拉姆。

【问题讨论】:

    标签: c# wpf clickonce


    【解决方案1】:

    在 CodeProject 上查看本教程:

    http://www.codeproject.com/Articles/731954/Simple-Auto-Update-Let-your-application-update-i

    我发现它是目前最好的解决方案(特别是如果您希望避免使用 ClickOnce),它提供了您可能需要的所有功能,并且非常容易定制。

    这些是基本且令人惊叹的功能:

    • 通过 HTTP 检查远程站点是否有更新版本。
    • 如果有更新的版本可用,请将其下载为 ZIP。
    • 在覆盖任何内容之前确保成功下载。
    • 轻松将其作为组件添加到任何应用程序中。
    • 允许更新应用程序本身。
    • 不需要引导程序或多步骤过程。
    • 防止篡改。
    • 容纳一些简单的日志记录。
    • 单个 XML 文件配置。

    我还设法编写了我自己的更新对话框,该对话框显示文件下载的进度。很遗憾,这篇文章中没有包含这一点。

    【讨论】:

      【解决方案2】:

      是否有可能您的应用程序的新版本需要比旧版本更高的信任,并且您正在使用可信应用程序部署运行?在这种情况下,不会出现信任级别提示。有关更多见解,请参阅 https://msdn.microsoft.com/en-us/library/s22azw1e.aspxhttps://msdn.microsoft.com/en-us/library/01daf08f.aspx

      后一页在受信任的应用程序部署和权限提升下注释:“如果当前发布者不是受信任的发布者,则信任管理器将使用权限提升来询问用户他或她是否要授予您的应用程序提升的权限。如果管理员禁用了权限提升,但是应用程序无法获得运行权限。应用程序将不会运行,也不会向用户显示任何通知。"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-18
        • 2016-01-30
        • 2019-09-03
        • 1970-01-01
        相关资源
        最近更新 更多