ClickOnce - 部署后更新时出错

时间:2014-10-15 14:28:53

标签: c# wpf clickonce

我有一个使用ClickOnce部署的WPF应用程序(该应用程序部署到所有客户端都可以访问的网络驱动器),我在应用程序中有一个计时器,每10分钟触发一次并检查更新,并自动安装如果有的话。我的更新课程如下:

public class AppUpdater
{
    public bool CheckForUpdates()
    {
        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
        return ad.CheckForUpdate();

    }

    public void PerformUpdate()
    {

        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
        UpdateCheckInfo updateInfo = ad.CheckForDetailedUpdate();

        if (updateInfo.UpdateAvailable)
        {
            MessageBox.Show("There is an update available. Press OK to continue");
            ad.Update();
            MessageBox.Show("Application updated! Press OK to restart");
            System.Windows.Forms.Application.Restart();
            Application.Current.Shutdown();
        }

    }
}

在网络上进行测试时,我的开发机器已启动,这很好用 - 我的一些同事已经尝试运行应用程序,他们总是可以获得最新的更新。但是,当部署在我们的客户服务器上时,应用程序在尝试从计时器更新时崩溃。我们获得的重要性如下:

  

at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState,Boolean isShellVisible,Boolean isUpdate,ActivationContext actCtx,TrustManagerContext tmc)      在System.Deployment.Application.DeploymentManager.DetermineTrustCore(布尔阻塞,TrustParams tp)      在System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams)      在System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult)      在System.Deployment.Application.ApplicationDeployment.CheckForUpdate()      在TestApp.AppUpdater.CheckForUpdates()      在TestApp.MainWindow.versionTimer_Tick(Object sender,EventArgs e)      在System.Windows.Threading.DispatcherTimer.FireTick(未使用的对象)      在System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象args,Int32 numArgs)      在MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source,Delegate方法,Object args,Int32 numArgs,Delegate catchHandler)

但有趣的是,如果您重新打开应用程序(它会提示您下载最新版本,然后下载并按预期运行),则可以正常工作。

有什么想法吗?谢谢!

0 个答案:

没有答案