Подтвердить что ты не робот

Есть ли альтернативный способ доступа к деталям сеанса в отложенных пользовательских действиях?

У меня есть настраиваемое действие и нужно получить ниже значений для копирования некоторых частей из папки установки в папку VS2010

  • путь к каталогу VS2010 (VS2010DEVENV)
  • Путь установки (свойство INSTALLLOCATION)

Чтобы предоставить достаточно привилегий, я установил настраиваемое действие как Execute='deferred' Impersonate='no'. Но при запуске установщика он зарегистрировал сообщение:

Невозможно получить доступ к данным сеанса из немедленного пользовательского действия

Кажется, мы не можем получить доступ к свойству в "отложенном" пользовательском действии (т.е. session["VS2010DEVENV"])

Есть ли другой способ, чтобы я мог получить эти значения по мере необходимости?

4b9b3361

Ответ 1

Это должно быть полезно. Обратите особое внимание на нижнюю часть страницы, руководство по 2 шагам, как передать значения через CustomActionData.

Вот выдержка:

Чтобы записать значение свойства в установку script для использования во время выполнения отложенного выполнения:

  • Вставьте небольшое пользовательское действие в последовательность установки, которая задает интересующее свойство для свойства с тем же именем, что и отложенное выполнение пользовательского действия. Например, если первичный ключ для отложенного выполнения пользовательское действие - это "MyAction", задающее свойство с именем "MyAction" на свойство X, которое нужно восстановить. Вы должен установить свойство "MyAction" в последовательности установки перед пользовательское действие "MyAction". Хотя любой тип пользовательских действий может установить контекстные данные, самый простой способ - использовать свойство (например, Custom Action Type 51).
  • В момент обработки последовательности установки установщик напишет значение свойства X в исполнение scriptкак значение свойства CustomActionData.

Ответ 2

Дополнительная информация: несколько значений свойств могут быть переданы с использованием следующего синтаксиса в "Custom Action Type 51" (который представляет собой просто настраиваемое действие, которое устанавливает значение свойства):

PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=...

Значения могут быть получены из пользовательского действия следующим образом:

string prop1 = session.CustomActionData["PROPERTY1"];
string prop2 = session.CustomActionData["PROPERTY2"];

Вот пример, который устанавливает значения свойств для пользовательского действия с идентификатором "MyCustomAction":

<CustomAction
  Id="SetCustomActionPropertyValues"
  Property="MyCustomAction"
  Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" />

(прочитайте эту статью MSDN для получения более подробной информации о форматированном синтаксисе, который в этом примере используется для получения места установки файла с идентификатором "MyExecutableFile" )