Как я могу удалить все следы приложения ClickOnce с компьютера клиента?

У меня есть приложение ClickOnce, которым пользуются около 120 клиентов. На этой неделе я узнал, что два клиента отказались от обновления в январе и застряли на старой версии. Я обнаружил это, удалив ASP-скрипт старых версий, используемых на нашем сервере. Клиенты, которые не обновляются, получают 404 и звонят, чтобы спросить, почему.

Один клиент снова нажал кнопку установки и без проблем получил последнюю версию. Другой нажал нашу кнопку установки и получил ошибку "Проверка приложения не удалась". Подробности ошибки: SomeImage.gif "имеет вычисленный хеш, отличный от указанного в манифесте".

Я не хочу развертывать новую версию, потому что это обычно приводит к телефонным звонкам с вопросом: "Вы добавили то, что я просил?"

Я полагаю, что смогу полностью удалить приложение и повторно связаться с одним проблемным пользователем. Нету. Ошибка сохраняется. Как я могу удалить все, что оставляет процесс удаления Windows, который может привести к сохранению этой ошибки?

Обновить:

Я нашел папку C:\Users\User\AppData\Local\Apps\2.0 на компьютере клиента Windows Vista, и удалил его. Мы снова запустили установщик, и ошибка сохранилась после повторной загрузки приложения. Я не уверен на 100%, что эта папка содержала всю программу, но это единственное место на диске, которое я мог найти, в котором было какое-то сходство с нашим приложением.

5 ответов

Отслеживать mage.exe в папке инструментов Visual Studio (C:\Program Files\Microsoft SDKS\Windows\v7.0A\bin). Скопируйте его на компьютер пользователя. Попробуй это:

mage.exe -cc

Это очищает приложения ClickOnce. Я бы тоже удалил \apps\2.0 папка ПОСЛЕ того, как вы это сделаете - это кеш, созданный и используемый приложениями ClickOnce.

Затем перезагрузите компьютер.

Это может или не может помочь. Мои сообщения об ошибках были не совсем такими, как вы описали, но в итоге я смог удалить последние следы на моей машине, перейдя по ссылке:

HKEY_CLASSES_ROOT\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0

Я удалил все ключи внуков, которые носили имена, похожие на мое приложение. После этого я смог установить и запустить последнюю версию.

Это на Windows 7 64 бит.

Если вы уже запустили деинсталляцию, но она не отсортирована, попробуйте удалить файлы в

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

Попробуйте сделать "Чистое решение", а затем сделать другую сборку. Если вы публикуете без увеличения номера версии, я не думаю, что существующие установки получат сообщение об обновлении.

Вы пытались откатить версию с помощью приложения ClickOnce? Вы можете сделать это, когда попали в раздел "Программы и компоненты", а затем удалить приложение.

Это должно оставить ваше приложение в состоянии, когда оно будет запрашивать последнее обновление снова.

Другие вопросы по тегам