Хорошо, после всех этих комментариев я думаю, что понимаю, почему это такая проблема. К сожалению, я не думаю, что есть очень простой способ сделать то, что вы хотите сделать.
Я думаю, что ваш метод будет единственным реальным способом перехода с этой установки на основе установки isntallscript. В HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall должна быть запись реестра, относящаяся к вашему продукту. Здесь может быть команда удаления, которую вы можете прочитать в переменной из вашего пакета записи и передать это значение в качестве свойства вашему msi.
В вашем MSI вы можете иметь 3 настраиваемых действия, специально связанных с обновлением с установки продукта installshield. Все эти задачи должны быть отложены настраиваемыми действиями, чтобы их можно было запускать с правами администратора. Первая задача должна скопировать все параметры конфигурации в безопасное место (обычно подойдет %temp%\ProductConfig\). Вторая часть после сохранения конфигурации запустит эту команду удаления для удаления продукта, вам может потребоваться добавить /q или что-то еще, чтобы он работал пассивно/тихо. Затем в конце установки вы можете скопировать файлы конфигурации из temp.
Каждое из настраиваемых действий должно выполняться в зависимости от того, установлено ли свойство, которое вы передали, на что-либо. Я бы запланировал копирование конфигурации после InstallInitialize, удаление после копирования и восстановление перед InstallFinalize, чтобы убедиться, что все скопировано после, когда установщик поместит все файлы в систему.
В идеале вы хотели бы получить все для обновления без необходимости взаимодействия пользователя, за исключением минимального способа, нажав «Далее» и «Установить».
Я имел дело с InstallShield только настолько, чтобы понять, что он мне действительно не нравится, поэтому, если кто-то еще знает больше и знает лучший способ сделать это, он, надеюсь, присоединится.
person
Brian Sutherland
schedule
19.05.2016