C# 在Windows启动时强制ClickOnce应用程序更新?

C# 在Windows启动时强制ClickOnce应用程序更新?,c#,clickonce,C#,Clickonce,我有一个ClickOnce应用程序,它应该在应用程序启动之前自动检查更新。如果我手动启动应用程序,这也可以很好地工作 但是,我还添加了一个注册表项,用于在windows启动时启动应用程序,在这种情况下,不会执行更新检查,并且应用程序启动时就好像没有更新一样-我猜是因为当应用程序开始连接到ClickOnce应用程序安装所在的网络驱动器时尚未确定是否已发布 作为一种解决方法,我尝试在我的主窗口已加载后通过调用此命令在代码中手动强制应用程序: private void checkforupdate()

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

但是,我还添加了一个注册表项,用于在windows启动时启动应用程序,在这种情况下,不会执行更新检查,并且应用程序启动时就好像没有更新一样-我猜是因为当应用程序开始连接到ClickOnce应用程序安装所在的网络驱动器时尚未确定是否已发布

作为一种解决方法,我尝试在我的主窗口已加载后通过调用此命令在代码中手动强制应用程序:

private void checkforupdate() 
{
    try
    {

        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;

        if (ad.CheckForUpdate())
        {
            MessageBox.Show("Update available!");
            ad.Update();               
        }
    }
    catch { }
}
但是由于某些原因,此代码仍然仅在我手动启动应用程序时触发更新,而在Windows start上自动启动时,则不会发生任何事情。 我调用checkforupdate的代码部分是在已经从发布ClickOnce安装文件的同一驱动器加载了一些内容之后,因此必须在那时建立连接


有人知道该怎么做吗?

好的,我发现我对ClickOnce应用程序的更新工作方式有严重误解:在Windows启动时启动程序的注册表项中,我引用了神秘的Users\AppData\Local\Apps\2.0…中的.exe文件。。。。文件夹-虽然这当然可以启动应用程序本身,但与更新功能本身无关。
更新仅在引用桌面上的ClickOnce应用程序引用(.appref ms)快捷方式时发生

代码当然可以工作/运行,现在如果更新发生或不发生,那是另一回事,看看你是如何管理它的,如果它是通过网络的,那么如果没有发生更新的连接,应用程序不应该运行?或者进行调整,直到有可用的连接。