2016-08-16 2 views
0

j'exécute une action personnalisée et faire passer le message d'erreur suivant:installateur Wix: Erreur lors de Tring pour exécuter une action personnalisée à partir d'un bouton clic - Une DLL nécessaire pour cette installation n'a pas pu être exécuté

Erreur 1723 Il y a un problème avec ce package Windows Installer. Une DLL requise pour cette installation pour terminer n'a pas pu être exécutée. Contactez votre personnel de support ou votre fournisseur de package. Action CheckLicenseFileExistsCA, entrée: CheckLicenseFileExists, bibliothèque: C: \ Utilisateurs \ dafna \ AppData \ Local \ Temp \ MSI3395.tmp MSI (c) (E8: 04) [19: 42: 28: 921]: Produit: ReSecServer - Erreur 1723. Il y a un problème avec ce package Windows Installer. Une DLL requise pour cette installation pour terminer n'a pas pu être exécutée. Contactez votre personnel de support ou votre fournisseur de package. Action CheckLicenseFileExistsCA, entrée: CheckLicenseFileExists, bibliothèque: C: \ Utilisateurs \ dafna \ AppData \ Local \ Temp \ MSI3395.tmp

J'ai essayé de rechercher google pour la solution mais rien n'a fait l'affaire, il me manque probablement quelque chose .. .

public class CutomActions 
    { 
     [CustomAction] 
     public static ActionResult CheckLicenseFileExists(Session session) 
     { 
      try 
      { 
       var filename = Path.Combine(session["LICENSEFILE_DIR_PATH"], "license.dat"); 

       var exists = File.Exists(filename); 
       if (exists) 
       { 
        session["LICENSE_FILE_PATH_VALID"] = "1"; 
       } 
      } 
      catch (Exception ex) 
      { 
       return ActionResult.Failure; 
      } 

      return ActionResult.Success; 
     } 

Here are the relevant lines: 

<CustomAction Id='CheckLicenseFileExistsCA' BinaryKey='ServerInstallerCustomActions.CA' DllEntry='CheckLicenseFileExists' Execute="immediate" Return="check" /> <Binary Id='ServerInstallerCustomActions.CA' SourceFile='$(var.ServerInstallerCustomActions.TargetDir)\ServerInstallerCustomActions.dll' /> 


<Control Type="PushButton" Id="BrowseLicense" Width="75" Height="17" X="251" Y="101" Text="{\VSI_MS_Sans_Serif13.0_0_0}Browse" TabSkip="no"> 
     <Publish Property="_BrowseProperty" Value="LICENSEFILE_DIR_PATH" Order="1">1</Publish> 
     <Publish Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish> 
     <Publish Event="DoAction" Value="CheckLicenseFileExistsCA">1</Publish> 
     <Publish Property="TEMP_VERIFIED" Value="[LICENSE_FILE_PATH_VALID]">1</Publish> 
     <Publish Property="LICENSE_FILE_PATH_VALID" Value="[TEMP_VERIFIED]" /> 
    </Control> 

Il a également un fichier de configuration (dans le projet d'action personnalisé):

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

Même après avoir déplacé l'action à exécuter dans le InstallExecuteSequence , Je reçois la même erreur – Dafna

Répondre

2

Lorsque vous construisez votre projet d'action personnalisé, il devrait y avoir un événement après la construction terme qui court « MakeSfxCA.exe "qui produit <ProjectTargetName>.CA.dll < - c'est ce que vous voulez inclure avec l'étiquette binaire, pas la sortie dll du projet d'action personnalisé

vous devriez utiliser:

<Binary Id='ServerInstallerCustomActions.CA' SourceFile='$(var.ServerInstallerCustomActions.TargetDir)\ServerInstallerCustomActions.CA.dll' /> 
+0

Merci! Ma première erreur a été que j'ai créé un projet de base de dll et pas un projet spécifique d'actions personnalisées de type, donc je n'ai pas créé le * .CA.dll du tout – Dafna