Установщик MSI VS 2008: Context.Parameters[TARGETSITE] пуст при восстановлении

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

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

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

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

У кого-нибудь есть предложения о том, как получить это важное значение?

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


person Dennis    schedule 16.12.2009    source источник


Ответы (1)


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

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

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

person Dennis    schedule 17.12.2009