如何从客户的计算机中删除ClickOnce应用程序的所有痕迹?

时间:2011-04-07 16:00:55

标签: vb.net clickonce

我有一个大约有120个客户正在使用的ClickOnce应用程序。本周,我发现有两位客户拒绝了1月份的更新,而且还停留在旧版本上。我通过删除我们服务器上使用的旧版本的ASP脚本来发现这一点。未更新的客户获得404并致电询问原因。

一位客户再次点击我们的安装按钮并获得最新版本没问题。另一个单击我们的安装按钮并获得“应用程序验证未成功”错误。错误的详细信息是SomeImage.gif“具有与清单中指定的不同的计算哈希值。”

我不想部署新版本,因为这通常导致电话询问,“你添加了我要求的内容吗?”

我认为我应该可以完全卸载应用程序并重新安装一个问题用户。不。错误仍然存​​在。如何删除Windows卸载过程留下的任何会导致此错误持续存在的问题?

更新:

我在客户的Windows Vista计算机上找到了文件夹C:\Users\User\AppData\Local\Apps\2.0,并将其删除。我们再次运行安装程序,重新下载应用程序后错误仍然存​​在。我不是百分之百地确信这个文件夹包含整个程序,但它是我能找到的唯一一个包含我们应用程序相似性的磁盘位置。

5 个答案:

答案 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应用程序回滚版本?您可以在进入“程序和功能”后执行此操作,然后在应用程序上卸载。

然后,应该让您的应用程序处于可以再次请求最新更新的状态。