2016-08-29 3 views
0

J'utilise ce code (défini à l'intérieur noeud de produit) pour lancer une action simple personnaliséeWiX ne parvient pas à lancer une action personnalisée avec Framwork .NET 4

<!-- Run as admin --> 
<Property Id="Privileged" Value="1" /> 
<!-- .NET Framework must be 4.6--> 
<PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" /> 
<Condition Message="You must install Microsoft .NET Framework 4.6 or higher."> 
    <![CDATA[Installed OR WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED]]> 
</Condition> 

<Binary Id="Ctav8.CustomAction.CA.dll" 
     SourceFile="$(var.Ctav8.CustomAction.TargetDir)Ctav8.CustomAction.CA.dll" /> 

<CustomAction Id="CustomAction1" 
       Return="check" 
       Execute="immediate" 
       BinaryKey="Ctav8.CustomAction.CA.dll" 
       DllEntry="CustomAction1" /> 

<InstallExecuteSequence> 
    <Custom Action="CustomAction1" After="InstallFiles" /> 
</InstallExecuteSequence> 

C'est la simple action personnalisé avec sa configuration

public class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult CustomAction1(Session session) 
    { 
     session.Message(InstallMessage.Warning, new Record 
     { 
      FormatString = "test" 
     }); 

     return ActionResult.Success; 
    } 
} 

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true">  
     <supportedRuntime version="v2.0.50727"/> 
     <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

Remarque: le fichier de configuration s'appelle 'CustomAction.config' et son action de construction est définie sur 'Contenu'. J'ai essayé de définir 'useLegacyV2RuntimeActivationPolicy' sur true et false, mais le résultat est toujours le même.

Si je change le .NET FRAMEWORK du projet d'action personnalisé en 3.5, ce code fonctionne correctement.

Qu'est-ce qui ne va pas?

Merci

Répondre

0

Ma config CustomAction ressemble ce

<startup useLegacyV2RuntimeActivationPolicy="true">  
    <supportedRuntime version="v4.0" /> 
    <supportedRuntime version="v2.0.50727"/> 
</startup> 

Et il fonctionne avec la cible .Net 4.5. Peut-être que vous avez juste à retourner les tags supportedRuntime.

0

Je résolus en utilisant

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

Cela fonctionne avec .NET Framework 4.6.1