Отключить режим восстановления и обновления в установщике wix

У нас есть уникальное требование для создания MSI с помощью WIX, суть в том, что MSI должна поддерживать установку нескольких экземпляров. Пользователь должен иметь возможность использовать msi для установки продукта более одного раза в конкретной системе, поэтому для достижения этого мы должны отключить режим восстановления и обновления в msi, поэтому буквально каждый вызов msi следует рассматривать как новую установку.

Является ли вышеуказанное требование технически осуществимым с Wix? Я знаю, что наличие уникального кода продукта и кода пакета для каждого вызова msi будет рассматривать установку как новую установку. Может ли это быть достигнуто с помощью оболочки вокруг MSI?

2 ответа

Прежде чем отправить вас в MSI SDK, я должен добавить, что мне самому не нравится эта концепция преобразования экземпляров, и я не использовал ее на практике. Возможно, я стал сварливым стариком!:-).

MSINEWINSTANCE: изучите свойство MSINEWINSTANCE и прочитайте тему MSI SDK: " Установка нескольких экземпляров продуктов и исправлений". И вот, пожалуй, лучший пример - более ориентированный на практическое применение.

Также некоторый контекст о том, почему я не слишком заинтересован в этой функции. Кэролин Нейпир была в оригинальной команде MSI - это, как говорится, прямо изо рта лошади.

Я знаю, что некоторые люди заявляют об успехе с этими преобразованиями экземпляров (Крис Пейнтер мог бы осветить мои утверждения здесь), но я бы предпочел виртуализировать в таких сценариях, как эти. Пожалуйста, посмотрите этот старый пост от ser verfault.com: я хочу установить MSI дважды (пожалуйста, просмотрите все остальные ответы в этой "ветке").


APP-V: У меня почти нет опыта работы с App-V, но я думаю, что именно это и нужно убедить вашего менеджера потратить некоторое время на расследование. Может быть, позвонить в одолжение и поговорить с парнями, которые действуют в текущем развертывании. У них всегда есть преобладающее предубеждение - сообщать о хитростях, которые заставляют вещи работать в реальном мире.

Здорово, если вы сообщите нам, как вы решаете проблему.


Отключить восстановление и изменение: и для записи: отключить восстановление и изменение (только кнопки) можно, установив свойства ARPNOMODIFY и ARPNOREPAIR. Но это не то, что вы ищете, чтобы разрешить установку нескольких экземпляров. MSI нелегко одурачить и знает, что вы установили и когда - нет причин тратить время на тестирование этих "опций". Все эти два свойства делают, чтобы скрыть или отключить кнопки "изменить" и "исправить" - ничего кроме того, что вам нужно.

Вы можете сделать это с помощью оболочки вокруг MSI. Обычно ваша программа-обертка запускается с базовым MSI, изменяет ProductCode и PackageCode с помощью API установщика Windows, копирует этот MSI в какое-либо место в системе и затем устанавливает его оттуда.

Я говорю "скопировать и установить", потому что тщетно пытаться отключить восстановление - это слишком вписывается в архитектуру установщика Windows. Если у вас каждый отдельный продукт MSI кэширован где-то, восстановление будет работать с использованием этого уникального MSI, а это также означает, что вы также можете внести изменения. Ремонт слишком непредсказуем, чтобы полностью предотвратить. Любые общие файлы могут вызвать восстановление из других установленных продуктов, которые разделяют их. Что делают клиенты, если они случайно удаляют файлы или записи реестра? И это касается сохранения исходного кода MSI, хотя список причин не сопровождается подробным объяснением, правило 31:

https://blogs.msdn.microsoft.com/windows_installer_team/2006/05/24/tao-of-the-windows-installer-part-3/

Есть много других проблем, которые не упомянуты, поэтому неясно, если вы заботитесь о исправлениях и обслуживании в целом, о нескольких записях в программах / функциях (которые вы могли бы подавить, но как удалить?) И т. Д., Также не ясно, что каждая из этих отдельных установок никак не конфликтует друг с другом, например, общие файлы / записи реестра, имена служб, файлы, устанавливаемые в одном месте с одинаковым именем.

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