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

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

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

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

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

Обновление:

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

Ответы [ 5 ]

6 голосов
/ 13 июня 2011

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

mage.exe -cc

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

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

2 голосов
/ 11 июня 2011

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

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

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

Это в Windows 7 64 бит.

1 голос
/ 07 апреля 2011

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

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 голос
/ 07 апреля 2011

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

0 голосов
/ 07 апреля 2011

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

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

...