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

#vb.net #clickonce

#vb.net #clickonce

Вопрос:

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

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

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

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

Обновить:

Я нашел папку C:UsersUserAppDataLocalApps2.0 на компьютере клиента с Windows Vista и удалил ее. Мы снова запустили программу установки, и ошибка не исчезла после повторной загрузки приложения. Я не уверен на 100%, что в этой папке содержалась вся программа целиком, но это единственное место на диске, которое я смог найти, содержащее некоторое сходство с нашим приложением.

Ответ №1:

Найдите его mage.exe в папке Visual Studio tools ( C:Program FilesMicrosoft SDKSWindowsv7.0Abin ). Скопируйте его на компьютер пользователя. Попробуйте это:

 mage.exe -cc
  

Это очищает приложения ClickOnce. Я бы также удалил apps2.0 папку после того, как вы это сделаете — это кэш, созданный и используемый приложениями ClickOnce.

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

Комментарии:

1. Если быть более точным, это папки, которые необходимо удалить. В Windows Vista или более поздней версии используйте папку %LocalAppData%Apps2.0. В Windows XP, папка %USERPROFILE%Local SettingsApps2.0.

Ответ №2:

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

 HKEY_CLASSES_ROOTSoftwareMicrosoftWindowsCurrentVersionDeploymentSideBySide2.0
  

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

Это в 64-разрядной версии Windows 7.

Ответ №3:

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

Ответ №4:

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

 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
  

Комментарии:

1. Рене: Я обновил свой вопрос, чтобы сказать, что я нашел каталог и удалил его. После запуска установки ошибка сохраняется для этого пользователя. У вас есть еще какие-нибудь подсказки, например, запись в реестре (или что-нибудь еще) Я могу удалить, связанные с приложением? Спасибо за вашу помощь.

2. Святые угодники, не удаляйте всю папку с данными приложения. Это используется всеми приложениями, а не только ClickOnce.

Ответ №5:

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

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

Комментарии:

1. Да, я пробовал откат. Ошибка сохраняется после отката и последующей установки обновления.