2010-10-06 4 views
4

Я работаю с чистой установкой InstallScript в InstallShield Pro 2010.Удаление старых версий файлов во время обновления установите

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

Как я могу установить InstallShield для обновления содержимого папки и удалить любые другие файлы в этом месте, которые не включены в текущую версию?

Я просмотрел параметры Component -> Overwrite, но это только кажется применимым «когда установщик встречает существующий файл с тем же именем, что и тот, который установлен».

Кроме того, я понимаю, что я мог бы добавить что-то в скрипты, чтобы удалить нарушительный файл, но мне нужно масштабируемое решение. С течением времени будут заменены другие файлы, и я бы не стал вручную добавлять исправления к установщику каждый раз, когда это происходит.

ответ

1

Можете ли вы просто не изменить имя JAR-файла из сборки для сборки?

Я не знаю, что InstallScript имеет копию типа robocopy/mirror. Вы должны были бы сценаризировать это поведение, и я мог видеть, что это не заканчивается хорошо.

+0

Хотя я ожидаю, что это сработает, это не очень идеально. Было бы очень неприятно помнить, что мы запускаем activemq 5.4.1, но банку все еще называют activemq-all-5.3.1.jar. Это также не сработало бы, если бы что-то было просто удалено (вместо замены на другую версию. – sjohnston

+1

Почему бы просто не назвать его activemq.jar? В мире Win32 у меня обычно нет foo1.exe, за которым следует foo2.exe. Я просто назову его foo.exe. Чтобы решить вашу вторую проблему, мы используем Windows Installer, а не чистые проекты InstallScript. Возможность декларативно обесценить компонент и позволить установщику автоматически обрабатывать его удаление делает вещи намного проще. императивный/процедурный сценарий слишком хрупкий и требует много времени. –

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