Перезаписывать файлы на основе правила "Новая версия, а затем новая дата"

В InstallShield это позволяет нам перезаписывать файлы с помощью правила "Новая версия, а затем новая дата". Может кто-нибудь сказать мне, что можно реализовать такую ​​функцию в Advanced Installer? Спасибо!

3 ответа

Решение

Новый ответ от меня, особенно на проблему "равной версии".

Возможны два подхода:

Первый подход: тестирование! Сравните результаты установки с источником, по крайней мере, перед отправкой установки. Всегда хорошая рекомендация. Затем опередив разработчиков, которые забыли увеличить номера своих версий, и сказал: "MSI требует, чтобы у вас была чистая обработка версии. Если нет, ваш файл не будет перезаписан поверх существующей более старой версии". Сделали это Работал. (Не обязательно в первой версии, но в обновлениях.)

Второй подход: всегда используйте свойство REINSTALLMODE с "e". Это означает, что всегда перезаписывайте существующий файл версией файла (только правило уровня файла). Например, вы указали в MSI жестко закодированное свойство "REINSTALLMODE" со значением "emus". Это по-прежнему позволяет переопределить его, например, для ремонта, где он должен быть "vemus". Более чистым является установка этого свойства только в командной строке, но тогда вам нужен файл setup.exe или другой загрузчик.

Этот второй подход более удобен, но теперь вы потеряли очень чистую обработку версий файлов. Если у вас есть общий файл в двух различных установках (продуктах) вашей компании, с версией 1.0, которая действительно старше, он будет перезаписан "более новым", который также имеет V1.0.

Если у вас нет общих файлов, это работает. Но теперь вы действительно полагаетесь на управление версиями процесса обновления установки, поэтому еще важнее убедиться, что продукт 1.1 (а не файл) не может быть установлен, например, поверх более новой версии продукта 1.2 или 2.0.

Третий подход (добавлен позже):

Если вы производите только крупные обновления в MSI, например, без исправлений, и вы полагаетесь на стратегию "удалить старую версию перед установкой новой версии" (например, по умолчанию в InstallShield), то "обычно" у вас никогда не будет ситуации переустановки файлов, учитывая некоторые условия (например, не имея общих файлов, снова). Не используйте модули слияния MS, если вы делаете это, за исключением того, что вы являетесь экспертом.

На самом деле нет лучших альтернатив.

Эта опция недоступна в Advanced Installer, но у вас есть возможность всегда перезаписывать файл, существующий на машине, см. Вкладку "Операции".

Я начинаю с потенциально лучшего ответа здесь: не волнует. Здесь MSI следует очень достаточным правилам по умолчанию, и если они не подходят к вашему случаю, вполне вероятно, что вам придется изменить свою стратегию; Ваше требование не является лучшей практикой, опасно, имеет противоречия и т.д...

Чтобы перейти более подробно:

1) Если файл имеет версию, просто не заботьтесь о настройке. Забота о процессе разработки (сборки /CM). Лучше всего убедиться, что версия файла устанавливается выше при каждой компиляции файла. Достаточно странно (слишком) немногие компании достигают этой простой цели...

2) Дата последнего изменения файлов, включенных в установочные файлы Windows, не имеет значения в MSI, и это очень хорошее решение! Даты, как правило, очень плохие дискриминаторы. Самый интересный пример - когда ваше исправление для V1.0 новее, чем V2.0 - да, иногда необходимо поддерживать старые версии версий.:-) Итак, забудьте о дате. Правило большого пальца: неверсионные файлы обычно перезаписываются (за редкими исключениями, о которых вам не нужно знать в первую очередь).

3) Вы должны рассказать нам более подробно, в чем заключается ваша проблема (если она есть) или что вы хотите достичь, кроме поведения по умолчанию??! Например, у вас есть проблемы с перезаписью "той же версией" или файлами, отредактированными пользователем после установки?

-

4) Полная подробная информация, только если интересно: В MSI правило перезаписи файлов является глобальным для всех файлов, это немного пугающе для "старых" разработчиков установок / скриптов, но это работает, вам нужно немного изменить свое жилье.

Расширенный установщик - это всего лишь оболочка графического интерфейса MSI (установщик Windows), поэтому сначала вам нужно немного понять MSI.

Вот вся история перезаписи MSI-файла в MSDN, называемая "Правилами управления версиями файлов" http://msdn.microsoft.com/en-us/library/windows/desktop/aa368599(v=vs.85).aspx

Как всегда, MS делает очень точную работу в документации MSI. Это одна из лучших вещей в MSI.. (инсайдерская шутка).

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

Другие вопросы по тегам