C# Clickonce疯狂

C# Clickonce疯狂,c#,clickonce,C#,Clickonce,好吧,我快要发疯了 我们通过clickonce向我们的UAT用户部署了一个包,通过HTML页面链接为他们提供了一个URL供下载。直到最近,我们还没有对任何软件包进行版本设置,因此它们都有1.0.0.0版本-最终结果是,当我们向UAT发布新版本时,他们必须先卸载旧版本,然后才能下载新版本,因为他们认为它们是相同的应用程序标识。由于他们没有管理员权限,这有点问题,导致他们不得不删除c:\documents and settings\username中的文件。。。。。。对于clickonce和删除注册

好吧,我快要发疯了

我们通过clickonce向我们的UAT用户部署了一个包,通过HTML页面链接为他们提供了一个URL供下载。直到最近,我们还没有对任何软件包进行版本设置,因此它们都有1.0.0.0版本-最终结果是,当我们向UAT发布新版本时,他们必须先卸载旧版本,然后才能下载新版本,因为他们认为它们是相同的应用程序标识。由于他们没有管理员权限,这有点问题,导致他们不得不删除c:\documents and settings\username中的文件。。。。。。对于clickonce和删除注册表项

他们安装的最后一个版本是UAT 5。我现在已经建立了UAT 6的一个版本,它的身份是6.0.0.0,所以如果他们点击启动链接,它应该可以自动下载,而不需要删除5。它确实下载了一些东西,你可以看到它正在下载一个软件包——不仅仅像没有更新时那样直接打开应用程序——但是当应用程序打开时,它仍然是版本5,通过检查文档和设置中的文件大小来确认

我个人可以点击相同的URL链接,它会为我下载版本6。我使用控制面板->添加删除程序删除以前的版本,因为访问控制,它们无法删除,但这是唯一的区别

在他们的机器上,我可以删除所有文件、所有注册表设置,然后单击为我下载版本6的同一链接,不知何故,他们最终还是下载了版本5


有什么想法吗?我快疯了

听起来好像客户机检测到有一个新的发布包,但EXE本身没有改变。为了节省时间/带宽,ClickOnce将把以前下载的程序集带到本地计算机上的缓存中,用于标识未更改的任何程序集

换句话说,听起来像是在更新发布版本,而不是程序集版本。要使较新程序集的标识不同,请确保同时更新程序集版本(在“项目属性”>“应用程序”>“程序集信息…”下)和发布版本(在“项目属性”>“发布”下)


您也可以添加文件版本(也可以在“项目属性”>“应用程序”>“程序集信息…”下),但该版本永远不会显示在应用程序清单中。

听起来好像客户端计算机检测到存在新的发布包,但EXE本身没有改变。为了节省时间/带宽,ClickOnce将把以前下载的程序集带到本地计算机上的缓存中,用于标识未更改的任何程序集

换句话说,听起来像是在更新发布版本,而不是程序集版本。要使较新程序集的标识不同,请确保同时更新程序集版本(在“项目属性”>“应用程序”>“程序集信息…”下)和发布版本(在“项目属性”>“发布”下)


您也可以添加文件版本(也可以在“项目属性”>“应用程序”>“程序集信息…”下),但该版本从未出现在应用程序清单中。

您确定您部署的不是版本号为6的版本5(您发布的是正确的吗?)您是否尝试查看客户端计算机上的ClickOnce活动日志以获取任何线索?可能发生了一个错误,阻止ClickOnce将新文件从安装缓存移动到新程序目录。请参阅和。检查并确保从中部署的服务器没有缓存文件。在用户计算机上运行Fiddler以查看它从服务器上获得的确切文件,检查清单以获取正确的版本号。您确定您不仅仅部署版本号为6的版本5(您发布了正确的东西吗?),您是否尝试查看客户端计算机上的ClickOnce活动日志以获取任何线索?可能发生了一个错误,阻止ClickOnce将新文件从安装缓存移动到新程序目录。请参阅和。检查并确保从中部署的服务器没有缓存文件。在用户计算机上运行Fiddler以查看它从服务器上获得的确切文件,检查清单以获取正确的版本号。