我有一个由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
答案 0 :(得分:0)
很抱歉,如果您安装了新版本的VSTO加载项并希望使用它,则必须重新启动Excel。原因是当您启动Excel时,它会检查并找到VSTO加载项,并将程序集复制到阴影位置。它不会从ClickOnce缓存中运行它。如果您进行更新,则不会影响Office - 它将继续在阴影位置运行程序集,您可以更新版本。但是,在退出Excel并再次运行它之前,新版本将不会加载,此时它会将新版本的程序集复制到阴影位置并加载它。