2010-08-04 2 views
3

У меня есть программа, которая устанавливается через msi. MSI был создан с использованием проекта развертывания VS2008 и имеет специальное действие для запуска программы после завершения установки.msi Установщик для запуска дважды

После запуска msi я могу просто обновить номер версии, сгенерировать новый код продукта, а msi можно снова запустить на том же ПК. Тем не менее, я хочу, чтобы иметь возможность запускать msi второй раз на том же ПК (без использования ремонта msi) и повторно установить программное обеспечение (даже если ничего не изменилось). Это возможно?

ответ

3

Вы можете выполнить это, удалив действие RegisterRive Action, действие RegisterUser, действие PublishProduct и PublishFeatures из таблицы InstallExecuteSequence. Удалив эти стандартные действия, приложение не будет зарегистрировано в базе данных MSI системы, и вы можете запускать и повторно запускать установку снова и снова, как если бы это была первая установка.

MSDN:
Adding and Removing an Application and Leaving No Trace in the Registry

+0

Спасибо, что работал отлично! Также есть некоторые записи в таблице AdvtExecuteSequence, которые также необходимо удалить. –

0

Нет, это невозможно. Даже если вы измените ProductCode и ProductVersion, второй раз, когда он будет запущен, он всегда будет работать в режиме восстановления. Даже метод исправления реализует режим восстановления и в основном использует файл исправления в качестве преобразования.

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

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

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