2009-11-30 3 views
1

J'ai eu un problème concernant les actions personnalisées et gérées wix: Je l'ai déjà géré pour créer une action personnalisée gérée et l'ai appelée depuis mon installeur (vérifié dans les fichiers journaux d'installation). Mon problème est maintenant que je ne l'ai pas réussi à transmettre des données à l'action personnalisée. Afaik si je choisis d'exécuter l'action personnalisée dans un tel stade tardif, je dois marquer l'action comme "différée". Avec cette limitation, il est uniquement possible d'accéder à la propriété CustomActionData droit? Pourquoi cela ne fonctionne-t-il pas dans mon cas? (Pour autant que je peux voir i adoptet tout correctement à partir des échantillons?)WiX: Passer des données à l'action personnalisée gérée ne fonctionne pas

Voici ce que je l'ai déjà essayé:

action personnalisée:

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; 
     } 

}

module de fusion qui appelle action personnalisée:

<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"/> 

produit qui comprend le module d'aide-Merge:

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

Quelqu'un a une idée? Merci d'avance!!

Daniel

BTW: Quelle serait aussi intéressant de savoir: A quel stade de la installationprocess doit une action marquée comme reporté? Et si je l'ai réussi à appeler mon action personnalisée avant cette étape. Quel est l'avantage?

Répondre

1

somethimes en utilisant votre tête aide vraiment ;-)

la raison pour laquelle l'échantillon ne fonctionne pas ci-dessus est assez simple:

Au lieu de:

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

je dirige pour définir la propriété Attribut à l'action qui devrait obtenir les données personnalisées !! ici:

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

espoir qui aide les autres à sauver le temps que je passe pour résoudre ce problème stupide ;-)

2

Vous définissez toujours la propriété HELP_DIR au lieu des données d'action personnalisé. Si vous essayez de définir le CustomActionData pour l'action RegisterDfHelp sur "Teeest", alors je pense que vous devriez faire ceci:

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

<InstallExecuteSequence> 
    <Custom Action='SetRegisterDflHelpCustomActionData' After='InstallFiles' /> 
    <Custom Action='RegisterDflHelp' After='SetRegisterDflHelpCustomActionData' /> 
</InstallExecuteSequence> 
Questions connexes