C# ClickOnce-部署后更新时出错
我有一个使用ClickOnce部署的WPF应用程序,该应用程序部署到所有客户端都可以访问的网络驱动器上,我在应用程序中有一个计时器,每10分钟启动一次,检查更新,并在有更新时自动安装。我的更新类如下:C# ClickOnce-部署后更新时出错,c#,wpf,clickonce,C#,Wpf,Clickonce,我有一个使用ClickOnce部署的WPF应用程序,该应用程序部署到所有客户端都可以访问的网络驱动器上,我在应用程序中有一个计时器,每10分钟启动一次,检查更新,并在有更新时自动安装。我的更新类如下: public class AppUpdater { public bool CheckForUpdates() { ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
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();
}
}
}
当我的开发机器在网络上进行测试时,它运行得很好——我的一些同事已经试过运行这个应用程序,他们总能获得最新的更新。然而,当部署在我们的客户服务器上时,应用程序在尝试从计时器更新时崩溃。我们得到的优惠如下:
在System.Deployment.Application.ApplicationTrust.RequestTrustSubscriptionState子状态下,布尔值为ShellVisible,布尔值为Update,ActivationContext actCtx,TrustManagerContext tmc
在System.Deployment.Application.DeploymentManager.DetermineTrustCoreBoolean阻塞中,TrustParams tp
位于System.Deployment.Application.DeploymentManager.DetermineTrustTrustParams trustParams
位于System.Deployment.Application.ApplicationDeployment.CheckForDetailDupDateBoolean persistUpdateCheckResult
位于System.Deployment.Application.ApplicationDeployment.CheckForUpdate
在TestApp.AppUpdater.CheckForUpdates上
在TestApp.MainWindow.versionTimer\u对象发送方,EventArgs e
在System.Windows.Threading.Dispatchermer.FireTickObject未使用
在System.Windows.Threading.ExceptionWrapper.InternalRealCallDelegate回调中,对象args,Int32 numArgs
位于MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhenObject源、委托方法、对象参数、Int32 numArgs、委托catchHandler
但有趣的是,如果你重新打开应用程序,它会提示你下载最新版本,然后下载并按预期运行
有什么想法吗?谢谢 那么你可以在不重新启动应用程序的情况下安装更新了吗?如果没有,,如果应用程序必须在没有用户输入的情况下重新启动,这对用户非常不友好,为什么不直接提示用户新版本已经准备好,并允许用户在准备好后重新启动应用程序?这基本上是客户的要求,因为他们希望确保所有用户都使用最新版本。这是一个内部应用程序,仅供公司