2014-04-30 4 views
5

У меня возникли проблемы с пониманием того, как InstallShield обрабатывает обновления.Всегда выполнять удаление/переустановку во время обновления

Я хочу, чтобы иметь возможность увеличивать номер версии в установщике, перекомпилировать и распространять мой установщик. Это должно автоматически удалить любую предыдущую версию приложения и установить последнюю версию (и она должна быть представлена ​​пользователю как «обновление»).

Это очень простой установщик, он просто выводит из нескольких проектов Visual Studio (приложение EXE, некоторые библиотеки DLL и т. Д.) И устанавливает их все в программные файлы. Существует только одна функция, и она всегда установлена.

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

Я пробовал это раньше (увеличивая номер версии, но не меняя код продукта или код обновления), но каждый раз, когда я это делаю, когда я запускаю установщик для «обновления» продукта, он говорит: Возобновление работы мастера для [ProductName] ", а иногда некоторые из файлов не заменяются их новыми коллегами из более новой программы установки.

Я не увеличиваю число «ревизий» номера версии. Я знаю, что это игнорируется. Как правило, я попробую что-то вроде 2.0.3 => 2.0.4.

Как настроить InstallShield так, чтобы он автоматически удалял любые предыдущие версии, устанавливал самую новую версию и представлял ее пользователю как «Обновление» или «Обновление», если у них уже установлена ​​предыдущая версия? Если нет, он должен быть установлен как обычный («Установить», а не «Обновить»).

Я использую InstallShield 2013 Pro (версия 20 SP1), и я придерживаюсь с помощью InstallShield редактора в Visual Studio 2010.

+0

Какой тип проекта вы используете? Installscript MSI, Basic MSI, чистый Installscript? –

+0

Я считаю, что это базовый проект MSI, но я не знаком с InstallShield, поэтому не знаю точно. Он имеет файл '.isproj' и файл' .ism' в папке проекта. – qJake

+0

Я думаю, что вы сможете достичь того, чего хотите, просто обновив таблицу Upgrade в дополнение к тому, что вы уже делаете. Прочтите это, пожалуйста: http://apprepack.blogspot.no/2012/06/msi-upgrade-table.html. По существу обновите поле VersionMax. Это предполагает, что настройка уже настроена для основного сценария обновления. –

ответ

6

Что вам нужно, это крупное обновление. Это, по сути, автоматическое удаление существующей версии и переустановка новой версии, выполненной как одна операция с помощью самого механизма установщика Windows, после того, как вы создадите таблицу Upgrade MSI, установите новую ProductVersion и измените код пакета и продукта. Это механизм обновления с наименьшим уровнем ошибок в установщике Windows. Чтобы выполнить крупное обновление в Installshield, перейдите в представление Upgrades и добавьте элемент обновления. Затем вы следуете мастеру или страницам GUI и задаете параметры обновления. Я посмотрю, смогу ли я найти лучшую ссылку для вас сейчас, но это должно заставить вас идти.

Чтобы действительно понять обновления установщика Windows, вы должны прочитать this book chapter. Или это Microsoft MSDN page.

Только для полноты: незначительное обновление - который обновляет существующую установку без ее удаления, как правило, становится труднее получить в начале. Применяется ряд технических ограничений. Вот очень хороший обзор того, что требуется для небольшого обновления для работы (а также другие детали): http://www.installsite.org/pages/en/msi/updates.htm

+0

Это то, что ... мы выталкиваем частые версии продуктов и создаем элемент обновления/обновления для каждого продукта внутри проекта InstallShield, это громоздко. Приложение должно поддерживать обновление с любой предыдущей версии, так что для этого потребуется элемент для каждой предыдущей версии. – qJake

+0

Обновление: это действительно правильно, мы меняли код обновления, а не код продукта (имена этих свойств запутываются и кажутся обратными!). Наши основные обновления теперь работают с любой предыдущей версии. – qJake

0

В этом случае вы можете использовать автоматизацию COM автоматизировать процесс выпуска с использованием Javascript или VBScript. Это знакомый процесс, если у вас есть автоматические другие продукты, такие как Word или Excel.Вот некоторые ресурсы, чтобы получить движение:

Я сделал процесс сборки один раз, используя этот вид VB скриптов, а также инструмент сборки под названием FinalBuilder, который взял уход за остальной частью процесса сборки. Я предполагаю, что FinalBuilder может иметь действие для Installshield к этому моменту, чтобы вы вообще могли обойти сценарии. Я не знаю точно. Просто захотелось подключиться к графическому интерфейсу, чтобы вы могли видеть, как выглядит этот инструмент. Further screenshots.

+0

Мы уже используем TFS для автоматизации сборки, которая также имеет интеграцию InstallShield. Я не инженер по строительству, поэтому я боюсь понять, что это связано с созданием самообновляющихся инсталляторов? Обычно мы создаем наши инсталляторы с помощью Visual Studio (мы небольшая команда). – qJake

+0

Этот процесс сборки должен выплеснуть MSI, который по требованию выполняет серьезное обновление всех предыдущих версий - или это не полный процесс сборки. Я не использовал TFS и не могу описать, как там делаются. –

+0

Я думаю, это мой вопрос - как я могу это сделать без процесса сборки? Как создать исполняемый файл установки, который будет автоматически обновляться из любой предыдущей версии ... но * только * с помощью редактора InstallShield? – qJake

Смежные вопросы