如何在自动更新期间将.NET应用程序固定到任务栏?

7

当使用ClickOnce AutoUpdate部署的应用程序在Windows 7上自动更新时,该应用程序会从任务栏中取消固定。有没有办法阻止它被取消固定?

5个回答

1

当未安装 ClickOnce 应用程序时,很可能无法实现此操作。 如果已安装,则不确定。

ClickOnce 应用程序将下载到用户的临时目录中。当应用程序下载最新版本时,该版本将储存在一个新的子目录中,并不会被覆盖,这与“正常”应用程序更新的情况不同。


1

我不知道如何防止取消固定,但是可以使用 vbs 脚本的方式来固定一个本不允许通过代码固定的 exe 文件:

Call AddToTaskbar("C:\temp\", "MyExe.exe")

Function AddToTaskbar (Path, File)
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(Path)
    Set objFolderItem = objFolder.ParseName(File)
    Set colVerbs = objFolderItem.Verbs

    For Each objVerb in colVerbs
        If Replace(objVerb.name, "&", "") = "Pin to Taskbar" Then 
            'WScript.Echo objVerb
            objVerb.DoIt
        End If
    Next        
End Function

这基本上依赖于 exe 的右键菜单具有“固定到任务栏”条目。除非有所有翻译的清单,否则很遗憾它仅适用于英语。


3
问题是你不想将ClickOnce应用程序的[exe]文件固定。如果你通过运行[exe]而不是appref-ms文件来运行它,它将不会作为ClickOnce应用程序运行,并查找更新和检查部署文件等。 - RobinDotNet

0

我完全没有看到这个问题。我假设您第一次运行应用程序时手动将其固定到任务栏。

您是否针对.NET 3.5(SP-1)进行了定位?您是让ClickOnce为您创建桌面快捷方式还是以编程方式执行?桌面快捷方式会消失吗?

每次发布更新时它都会从任务栏消失,还是只是偶尔消失?

RobinDotNet


是的,我手动固定了应用程序。每次发布更新时它都会消失。 - ryantm
我的其他问题有答案吗? - RobinDotNet

0

我不确定Windows 7如何处理它,但我使用类似于this的代码将appref-ms复制到开始菜单上的启动文件夹中。我想我的代码(在我的工作机器上,我周末休息)还检查是否是新安装,因此如果是更新,则不更改快捷方式。


在.NET 3.5 SP-1中,他们添加了自动将快捷方式添加到桌面的功能。当他们这样做时,他们还添加了一个位,每次发行更新时都会删除快捷方式,并且如果您选中它们的复选框,则会将其放回。因此,如果您正在将其快捷方式复制到桌面上(正如我们所做的那样,所以它是实际的C/O快捷方式),则必须每次都要这样做,否则它就会消失。无论你使用什么版本的.NET,只要机器安装了.NET 3.5 SP-1,都会发生这种情况。只是提供信息。 - RobinDotNet

0
在 Visual Studio 2010 中,前往发布选项卡。点击“选项”,选择“清单”,并点击“创建桌面快捷方式”。这样,在更新发布后,用户安装更新后仍能保留开始菜单快捷方式。之前,开始菜单快捷方式会消失并需要重新固定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接