ClickOnce手动更新完成但不更新

时间:2013-09-25 01:51:01

标签: vb.net clickonce manual

我有一个由ClickOnce安装/更新的VSTO Excel模板项目。如果我运行自动更新,它会更新,但我想为用户提供手动更新选项。

问题是执行ApplicationDeployment.CurrentDeployment.UpdateAsync(或.Update)不会导致任何错误,但部署只是不会更新。添加/删除程序中的版本号保持不变,甚至更不寻常的是ApplicationDeployment.IsNetworkDeployed标志切换为false。

因此,似乎运行.Update的唯一效果是将IsNetworkDeployed设置为false。 完整的代码有点长,但基本上归结为:

Private Sub ThisWorkbook_Startup() Handles Me.Startup
  Dim info As UpdateCheckInfo

    If ApplicationDeployment.IsNetworkDeployed Then
        Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
        info = AD.CheckForDetailedUpdate
        If info.UpdateAvailable Then
            AD.UpdateAsync()
        End If
    End If

End Sub

1 个答案:

答案 0 :(得分:0)

很抱歉,如果您安装了新版本的VSTO加载项并希望使用它,则必须重新启动Excel。原因是当您启动Excel时,它会检查并找到VSTO加载项,并将程序集复制到阴影位置。它不会从ClickOnce缓存中运行它。如果您进行更新,则不会影响Office - 它将继续在阴影位置运行程序集,您可以更新版本。但是,在退出Excel并再次运行它之前,新版本将不会加载,此时它会将新版本的程序集复制到阴影位置并加载它。