2

我有一个由 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
4

1 回答 1

0

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

于 2013-10-18T17:40:55.917 回答