У меня есть проект установки в Visual Studio. В рамках обычной установки он создает / обновляет некоторые ключи и значения в реестре Windows. Как я могу сделать обновления обратимыми?
Вы можете сказать "они обратимы", но я так не думаю. Вот как я думаю, что это работает: используйте конструктор VS, чтобы указать, какие ключи реестра и значения вы хотите. Эти ключи и значения записываются во время установки и удаляются при удалении. Просто. Что не обратимо?
Проблема возникает, когда в одном из ключей, записанном во время установки, существует существующее значение. Предположим, он имеет значение 1. Затем при новой установке он получает значение 100. После удаления он вообще не имеет значения - значение исчезает.
Я пытался обойти это с помощью «пользовательских действий».
Во время установки, если пользователь подтверждает, msiexec записывает значения в реестр. Что бы ни было в ключе реестра раньше, ушел. (Давайте назовем это «Обновление А»)
Чтобы сохранить это значение, при установке существует специальное действие, которое считывает и сохраняет параметр «до». Он запускается до «Обновление A». Все идет нормально.
При удалении обычное действие - удалить обычные ключи реестра и значения, которые были добавлены во время установки. Это работает просто отлично. Назовите это «Обновление B».
Чтобы восстановить исходные значения реестра, у меня есть другое «настраиваемое действие». Этот работает при удалении. Он успешно восстанавливает исходные значения в реестре. Реестр выглядит так же, как и до первоначальной установки. Я проверил, что это работает, используя ProcMon (среди прочего, инструмент, позволяющий отслеживать обновления реестра). Назовите это «Обновление C».
Есть только одна проблема. При удалении обновление B происходит после обновления C. Это означает, что после того, как пользовательское действие восстанавливает исходный параметр реестра, msi стирает восстановленное значение, как и все остальные обновления реестра.
В результате реестр имеет пустые значения вместо восстановленных.
Любая помощь? Как я могу переупорядочить обновления? Нужно ли для этого Orca ? Я действительно не хочу устанавливать и изучать другой инструмент, чтобы это произошло. Я также хочу, чтобы это было автоматически. Определенно, не нужно визуально щелкать по редактору MSI, чтобы это произошло.
Могу ли я сделать это с событием пост-сборки Javascript, которое использует класс WindowsInstaller.Installer ? Аарон Стебнер опубликовал скрипт , который добавляет «Запускать приложение после установки?» диалог с MSI, созданным Visual Studio. Установщик Windows поддерживает функцию «запуска приложения», но она не предоставляется разработчикам для VS2008 / 2005. Скрипт быстрой биопластины, запускаемый как шаг после сборки в VS, добавлен в диалог Launch.
Возможно ли нечто подобное с упорядочением пользовательских действий?