我有一个大约有120个客户正在使用的ClickOnce应用程序。本周,我发现有两位客户拒绝了1月份的更新,而且还停留在旧版本上。我通过删除我们服务器上使用的旧版本的ASP脚本来发现这一点。未更新的客户获得404并致电询问原因。
一位客户再次点击我们的安装按钮并获得最新版本没问题。另一个单击我们的安装按钮并获得“应用程序验证未成功”错误。错误的详细信息是SomeImage.gif“具有与清单中指定的不同的计算哈希值。”
我不想部署新版本,因为这通常导致电话询问,“你添加了我要求的内容吗?”
我认为我应该可以完全卸载应用程序并重新安装一个问题用户。不。错误仍然存在。如何删除Windows卸载过程留下的任何会导致此错误持续存在的问题?
更新:
我在客户的Windows Vista计算机上找到了文件夹C:\Users\User\AppData\Local\Apps\2.0
,并将其删除。我们再次运行安装程序,重新下载应用程序后错误仍然存在。我不是百分之百地确信这个文件夹包含整个程序,但它是我能找到的唯一一个包含我们应用程序相似性的磁盘位置。
答案 0 :(得分:6)
在Visual Studio工具文件夹(mage.exe
)中追踪C:\Program Files\Microsoft SDKS\Windows\v7.0A\bin
。将其复制到用户的计算机。试试这个:
mage.exe -cc
这会清除ClickOnce应用程序。我还会在您执行此操作后删除\apps\2.0
文件夹 - 这是ClickOnce应用程序创建和使用的缓存。
然后重新启动计算机。
答案 1 :(得分:2)
这可能有所帮助,也可能没有帮助。我的错误消息与您描述的不完全相同,但我最终能够通过以下方式删除计算机上的最终跟踪:
HKEY_CLASSES_ROOT\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0
我删除了所有与我的应用程序类似的名字的孙钥匙。之后,我能够安装并运行最新版本。
这是在Windows 7 64位上。
答案 2 :(得分:1)
如果您已经运行了卸载并且尚未对其进行排序,请尝试删除
中的文件C:\Documents and Settings\<userName>\Application Data\
你需要做一些寻找你的应用程序,但它不应该太难。
过去我使用下面的代码来避免用户不得不点击更新按钮,这将安装它,甚至不知道。
Private Shared Function UpdatedApp(ByVal AppLog As Logger) As Boolean
Try
' Check to see that this program has been delpoyed
If Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
Dim CurrApp As System.Deployment.Application.ApplicationDeployment = System.Deployment.Application.ApplicationDeployment.CurrentDeployment
AppLog.WriteLine("Application Version : {0}", CurrApp.CurrentVersion)
AppLog.WriteLine("Checking for updates")
' If theres a update then Install it
If CurrApp.CheckForUpdate() Then
AppLog.WriteLine("An updated version is available. This update will now be applied.")
' Update the app to the current version
CurrApp.Update()
' Upgrade the settings (that is, the connection string).
My.Settings.Upgrade()
AppLog.WriteLine("Version {0} is now installed, the application will now restart", CurrApp.UpdatedVersion)
Return True
End If
Else
AppLog.WriteLine("Application version: *Dev Version*")
End If
Catch ex As Exception
AppLog.WriteLine("The application is unable to check for updates. The program will execute on a possibly outdated version. Error {0}", ex.ToString)
End Try
' Always return false unless the update has been applied (even if the update throws an error)
Return False
End Function
答案 3 :(得分:1)
尝试执行“清洁解决方案”,然后执行另一个Build。如果您在不增加版本号的情况下发布,我认为现有安装不会收到更新消息。
答案 4 :(得分:0)
您是否尝试使用ClickOnce应用程序回滚版本?您可以在进入“程序和功能”后执行此操作,然后在应用程序上卸载。
然后,应该让您的应用程序处于可以再次请求最新更新的状态。