在Windows Startup上强制ClickOnce应用程序更新?

时间:2018-05-03 15:17:34

标签: c# clickonce

我有一个ClickOnce应用程序,它应该在应用程序启动之前自动检查更新。如果我手动启动应用程序,这也很有效。

但是我还添加了一个注册表项以在Windows启动时启动应用程序,在这种情况下,不执行更新检查,应用程序启动就像没有更新一样 - 我猜是因为当时应用程序启动与尚未建立ClickOnce应用程序安装的网络驱动器的连接。

作为一种解决方法,我试图通过在我的MainWindow已经加载后调用此代码来手动强制应用程序:

private void checkforupdate() 
{
    try
    {

        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;

        if (ad.CheckForUpdate())
        {
            MessageBox.Show("Update available!");
            ad.Update();               
        }
    }
    catch { }
}

但是由于某些原因,当我手动启动应用程序时,此代码仍然只触发更新,当它在Windows上自动启动时,没有任何反应。 我调用checkforupdate的代码部分是在已经发布ClickOnce安装文件的同一驱动器上加载了一些内容之后,那么必须在那时建立连接。

有谁知道该怎么做?

1 个答案:

答案 0 :(得分:0)

好的,我发现我对ClickOnce应用程序的更新工作方式存在严重的误解:在Windows启动时启动程序的注册表项中,我引用了神秘用户中的.exe文件\ AppData \ Local \ Apps \ 2.0 ....文件夹 - 虽然这确实有助于启动应用程序本身,但它与更新功能本身没有任何关系。 只有在桌面上引用ClickOnce应用程序引用(.appref-ms)快捷方式时才会发生更新。