Созданное приложение InstallShield обновляется во время новой установки, в то время как предыдущая версия отсутствует на компьютере.
Я являюсь разработчиком InstallShield и недавно столкнулся со странным сценарием на компьютере моего клиента, когда приложение InstallShield нашего клиента подвергается серьезному обновлению, а я пытаюсь выполнить новую установку. Подробности следующие:
Я попытался установить мое приложение, которое было разработано с помощью InstallShield. Он обнаружил предыдущую версию на целевом компьютере и пошел по основному сценарию обновления, но обновление не удалось, так как на моем компьютере нет предыдущей версии.
Я проверил подробные журналы, и значение "IS_MAJOR_UPGRADE" установлено в "Да"
Я проверил добавить / удалить программы, но запись не найдена. Я также проверил куст удаления редактора реестра, но он также не содержал записи моего продукта (любой из его предыдущей версии)
Я проверил все двоичные файлы, которые были установлены через мой продукт, и вручную удалил их с компьютера (реестр и файлы), но все равно он продолжает обновляться.
Я проверил расположение "C:\Windows\Installer" на наличие MSI, связанной с моим продуктом, но там ничего не найдено.
Я проверил кешированный файл msi в "C:\Windows\Downloaded Installations" и тоже удалил его оттуда, но затем мой продукт обнаруживает предыдущую версию на компьютере.
Кто-нибудь может помочь в том, что может быть возможной причиной для установки свойства MSI "IS_MAJOR_UPGRADE"="Да", поскольку я искал все возможные местоположения на моей машине, где можно было найти что-либо, связанное с моим продуктом, но все же он выбирает детали предыдущей версии откуда-то?
2 ответа
Vyom,
Ваш файл журнала должен идентифицировать код удаления, который он идентифицирует для обновления. Короче говоря, существует некоторый тип остатков реестра для этого продукта. Если файл журнала содержит guid для удаления, попробуйте найти этот guid во всем реестре, особенно если ваше приложение поддерживает установки для отдельных пользователей.
Вы проверили все места, кроме того, которое имеет значение. MSI может удалить кэшированный MSI, это не имеет значения. MSI может использовать свойство ARPSYSTEMCOMPONENT, чтобы не помещать запись в ARP. Это не важно Вы можете удалить каталог установки. Это.... (найду, я остановлюсь).
MSI отслеживает данные своего состояния в папке HKCR\Installer\Products, используя то, что называется дескрипторами Дарвина.
http://druss.co/2013/10/darwin-descriptor-guid-converter/
Начните установку и отмените ее в диалоговом окне приветствия. Теперь взгляните на свой подробный журнал и покажите, что сообщает FindRelatedProducts. Он скажет вам название кода продукта, который он находит. Затем вы можете написать программу для запроса MSI, чтобы получить информацию об этом продукте или вычислить дескриптор Дарвина и посмотреть его в реестре.