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