WiX: передача данных в управляемое настраиваемое действие не работает - PullRequest
1 голос
/ 30 ноября 2009

У меня проблема с wix и управляемыми настраиваемыми действиями: мне уже удалось создать управляемое настраиваемое действие, и его вызвали из установщика (это было проверено в файлах журнала установки). Моя проблема сейчас в том, что мне не удалось передать данные в пользовательское действие. Afaik, если я решу запустить пользовательское действие на такой поздней стадии, я должен пометить действие как «отложенное». С этим ограничением возможно получить доступ только к свойству CustomActionData Property? Почему это не работает в моем случае? (Насколько я вижу, я все правильно перенял из образцов?)

Вот что я уже пробовал:

Пользовательское действие:

   public class CustomActions
   { 
        [CustomAction]
        public static ActionResult RegisterDflHelp(Session session)
       {
        session.Log("Begin CustomAction1");

        session.Log("Before Access to customactiondata");
       //string helpdir = session["HELP_DIR"];
        string cad = session["CustomActionData"];
        Debugger.Break();
        session.Log("Help dir is: " + helpdir);
        session.Log("Custom Action Data is: " + cad);
        return ActionResult.Success;
       }

}

Модуль слияния, который вызывает настраиваемое действие:

<CustomAction Id='RegisterDflHelp' BinaryKey='RegisterDflHelpDll' DllEntry='RegisterDflHelp' Execute='deferred' />

<CustomAction Id="HELP_DIR.SetProperty" Return="check" Property="HELP_DIR" Value="Teeest" />

<Property Id='HELP_DIR' Secure='yes'/>

<InstallExecuteSequence>
  <Custom Action='HELP_DIR.SetProperty' After='InstallFiles' />
  <Custom Action='RegisterDflHelp' After='HELP_DIR.SetProperty' />
</InstallExecuteSequence>

<Directory Id="TARGETDIR" Name="SourceDir">
    </Directory>
<ComponentGroupRef Id="HelpGroup"/>

Продукт, который включает модуль Help-Merge:

<Product....>
<Package....>
...
<Directory>
<!--Directory which gets the help folder--!>
<Merge Id ="DflHelpInstaller" SourceFile="DflHelpInstaller.msm" Language="1033" DiskId="1" />

Есть идеи? Заранее спасибо!!

Daniel

Кстати: что также было бы интересно узнать: на каком этапе процесса установки действие, помеченное как отложенное? И если бы мне удалось это вызвать мои пользовательские действия до этого этапа. В чем преимущество?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009

Вы по-прежнему устанавливаете свойство HELP_DIR вместо данных пользовательских действий. Если вы пытаетесь установить для CustomActionData для действия RegisterDfHelp значение «Teeest», то, я думаю, вам следует сделать следующее:

<CustomAction Id="SetRegisterDflHelpCustomActionData" Return="check" 
   Property="RegisterDflHelp" Value="Teeest" />

<InstallExecuteSequence>
   <Custom Action='SetRegisterDflHelpCustomActionData' After='InstallFiles' />
   <Custom Action='RegisterDflHelp' After='SetRegisterDflHelpCustomActionData' />
</InstallExecuteSequence>
1 голос
/ 30 ноября 2009

иногда помогает твоя голова ;-)

причина, по которой вышеприведенный пример не работает, довольно проста:

Вместо:

CustomAction Id="HELP_DIR.SetProperty" Return="check" Property="HELP_DIR" Value="Teeest" />

Я направляюсь, чтобы установить атрибут свойства для действия, которое должно получить пользовательские данные !! здесь:

<CustomAction Id="HELP_DIR.SetProperty" Return="check" Property="RegisterDflHelp" Value="$(var.HelpSourceDir)" />

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...