【问题标题】:Manual check for updates with WPF ClickOnce使用 WPF ClickOnce 手动检查更新
【发布时间】:2016-04-12 13:35:10
【问题描述】:

我不想使用 ClickOnce 的默认行为,它显示一个对话框窗口,检查更新,我想手动检查更新

在网上搜索后发现:

        try
        {
            var deploy = ApplicationDeployment.CurrentDeployment;

            if (deploy.CheckForUpdate())
                MessageBox.Show("There is a new update");
            else
                MessageBox.Show("You using the latest version");

        }
        catch (Exception e2)
        {
            MessageBox.Show(e2.ToString());
        }

当我安装应用程序并想要检查更新时出现错误:

system.deployment.application.trustnotgrantedexception:用户拒绝授予应用程序所需的权限

请你帮忙。

提前致谢。

【问题讨论】:

    标签: c# wpf clickonce


    【解决方案1】:

    右键单击您的项目。选择属性。然后去发布标签。单击更新。然后取消选中“应用程序应检查更新”。

    我不确定您为什么会收到该错误,但我也在使用相同的方法。手动检查更新。但是我的应用程序部署在服务器上。我有这个计时器,每 15 分钟检查一次新更新。

    我是这样做的。

    private void InstallUpdateSyncWithInfo()
        {
            if (!isNewUpdateMessageShown)
            {
                try
                {
                    if (ApplicationDeployment.IsNetworkDeployed)
                    {
                        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                        ad.UpdateCompleted += new AsyncCompletedEventHandler(ad_UpdateCompleted);
                        //ad_UpdateCompleted is a private method which handles what happens after the update is done
                        UpdateCheckInfo info = ad.CheckForDetailedUpdate();
                        if (info.UpdateAvailable)
                        {
                            //You can create a dialog or message that prompts the user that there's an update. Make sure the user knows that your are updating the application.
                            ad.UpdateAsync();//Updates the application asynchronously
                        }
                    }
    
                }
                catch (Exception ex)
                {
                    ex.Log();
                }
            }
    
        }
    
        void ad_UpdateCompleted(object sender, AsyncCompletedEventArgs e)
        {
            //Do something after the update. Maybe restart the application in order for the update to take effect.
    
        }
    

    编辑

    我已经更新了我的答案。您可以复制并粘贴此内容,并根据您的应用需求进行调整。

    在我之前的回答中,我打开了一个新窗口,告诉用户有更新,然后让用户选择是否要更新应用程序。

    【讨论】:

    • .Log()、ad_UpdateCompleted、NewUpdateWindow()、EnableDWMDropShadow、ShowNotifyBaloon、appUpdateTimer 未声明。我应该使用什么参考?可以给我一个小测试应用吗?
    • 我们为 Outlook 的 ClickOnce VSTO 加载项使用了一些与上述几乎相同的代码。不幸的是,我们收到了一个TrustNotGrantedException,表明用户拒绝授予权限——但实际上从来没有任何类型的提示。 @ljpv14 或 @abdulsalam-elsharif 有什么建议吗?
    • @TroyAlford 我不确定您是否已解决问题。如果没有,请尝试查看stackoverflow.com/questions/14688282/…
    • @ljpv14 - 非常感谢!该链接帮助我们找出正确的搜索词,我们完全解决了问题。你摇滚。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多