Установщик MSI VS 2008: Context.Parameters ["TARGETSITE"] пусто при восстановлении - PullRequest
1 голос
/ 16 декабря 2009

В 2008 году я создал проект веб-установки и добавил несколько пользовательских действий. При установке я получаю формы по умолчанию (apppool, appname, website), некоторые предопределенные пользовательские формы и некоторые самодельные пользовательские формы. Теперь при установке я добавляю некоторые данные в реестр.

У меня только одна проблема: свойство TARGETSITE. Это свойство заполняется формой по умолчанию (Context.Parameters ["TargetSite"] является чем-то вроде "/ LM / W3SVC / 1" для defaultWebSite) и его значение правильно добавляется в реестр. Все хорошо, пока я не использую функцию восстановления ...

При восстановлении первые несколько форм по умолчанию будут пропущены при установке, поэтому свойство TARGETSITE будет пустым (Context.Parameters ["Targetsite"] is ""). К сожалению, я не могу вмешиваться в это, чтобы получить необходимое значение из реестра, где я добавил его именно по этой причине. Поскольку значения реестра будут обновлены до того, как пользовательский код будет запущен в методе «Переопределить установку». Даже onBeforeInstall срабатывает после обновления реестра.

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

Кто-то может подсказать, как получить это важное значение?

P.S .: я попытался установить условие в ключе реестра, чтобы оно обновлялось только тогда, когда значение TARGETSITE не пустое, но я боюсь, что это будет игнорироваться в течение длительного времени ... TARGETSITE! = "" В поле условия ключей реестра не имеет абсолютно никакого эффекта ...

1 Ответ

1 голос
/ 17 декабря 2009

Я решил проблему, работая с разделом реестра установщиков. Я вручную создаю subKey под установщиком registryEntry, где храню свое значение Context.Parameters ["TARGETSITE"]. Таким образом, функция восстановления не будет перезаписывать keyValue, потому что это пользовательский ключ. Теперь у меня есть значение в контексте или в реестре.

FunFacts: Когда я создаю customKey в собственном ключе Установщиков, я использую стандартный механизм, который удаляет раздел реестра установщиков, и мой customKey также исчезает.

Может быть, это может помочь, если кто-то когда-нибудь столкнется с этой проблемой ...

...