Я провел некоторые исследования в этой области, и вот решение, которое я нашел:
Когда программа установки завершает установку, она создает узел в реестре по пути
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<Product ID>
для 32-битной установки в 32-битной ОС или 64-битной установки в 64-битной ОС, или
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<Product ID>
для 32-битной установки в 64-битной ОС.
Этот узел содержит значение, называемоеInstallLocation, который дает вам путь к месту установки исполняемых файлов.
К сожалению, предыдущая версия нашего установщика не установила это свойство, поэтому я не могу его использовать.НО наш установщик создает Сервис.Я нашел путь к узлу в реестре для этой службы.Оттуда я могу извлечь значение значения ImagePath и извлечь путь из имени файла .EXE службы.
Поэтому мое решение заключается в следующем:
- Исправьте новый установщик так,он устанавливает значение InstallLocation.
- При обновлении только с предыдущей версии он извлекает узел реестра для службы и использует ключ службы ImagePath службы.
- При обновлении с любой более поздней версии,мы получим узел удаления и используем ключ InstallLocation.
Tony