如何在wpf应用程序中检查安装新版本的更新

时间:2021-08-12 10:47:21

I have developed wpf application and created the setup file. and it's working fine, but how to check and how to install latest version over the old version programatically when click on button

我开发了wpf应用程序并创建了安装文件。并且它工作正常,但如何点击按钮时以编程方式检查以及如何在旧版本上安装最新版本

2 个解决方案

#1


0  

Look into deployment using ClickOnce (https://msdn.microsoft.com/en-us/library/t71a733d(v=vs.140).aspx). This will check for updates every time the programme is started.

使用ClickOnce(https://msdn.microsoft.com/en-us/library/t71a733d(v=vs.140).aspx)查看部署。这将在每次启动程序时检查更新。

In Visual Studio 2015, just hit Build -> Publish and follow the wizard. I found it very simple.

在Visual Studio 2015中,只需点击Build - > Publish并按照向导进行操作。我觉得很简单。

#2


0  

First, ensure that your application is enabled to check for updates. Right-click on your project -> Properties -> Publish tab-> updates. Tick the checkbox "the application should check for updates"

首先,确保您的应用程序已启用以检查更新。右键单击项目 - >属性 - >发布选项卡 - >更新。勾选“应用程序应检查更新”复选框

Enable check for updates

启用检查更新

Use the below code, in the button click event to check for updates

使用以下代码,在按钮单击事件中检查更新

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)
        {
            DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel);
            if (!(DialogResult.OK == dr))
            {
                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", MessageBoxButtons.OK, 
                MessageBoxIcon.Information);
        }

        if (doUpdate)
        {
            try
            {
                ad.Update();
                MessageBox.Show("The application has been upgraded, and will now restart.");
                Application.Restart();
            }
            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;
            }
        }
    }
}

#1


0  

Look into deployment using ClickOnce (https://msdn.microsoft.com/en-us/library/t71a733d(v=vs.140).aspx). This will check for updates every time the programme is started.

使用ClickOnce(https://msdn.microsoft.com/en-us/library/t71a733d(v=vs.140).aspx)查看部署。这将在每次启动程序时检查更新。

In Visual Studio 2015, just hit Build -> Publish and follow the wizard. I found it very simple.

在Visual Studio 2015中,只需点击Build - > Publish并按照向导进行操作。我觉得很简单。

#2


0  

First, ensure that your application is enabled to check for updates. Right-click on your project -> Properties -> Publish tab-> updates. Tick the checkbox "the application should check for updates"

首先,确保您的应用程序已启用以检查更新。右键单击项目 - >属性 - >发布选项卡 - >更新。勾选“应用程序应检查更新”复选框

Enable check for updates

启用检查更新

Use the below code, in the button click event to check for updates

使用以下代码,在按钮单击事件中检查更新

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)
        {
            DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel);
            if (!(DialogResult.OK == dr))
            {
                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", MessageBoxButtons.OK, 
                MessageBoxIcon.Information);
        }

        if (doUpdate)
        {
            try
            {
                ad.Update();
                MessageBox.Show("The application has been upgraded, and will now restart.");
                Application.Restart();
            }
            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;
            }
        }
    }
}