Question

Je suis en train de créer une action personnalisée pour mon Wix installer, et il est tout simplement pas travailler, et je ne suis pas sûr pourquoi.

Voici le bit dans le fichier Wix approprié:

<Binary Id="INSTALLERHELPER" SourceFile=".\Lib\InstallerHelper.dll" />
<CustomAction Id="HelperAction" BinaryKey="INSTALLERHELPER" DllEntry="CustomAction1" Execute="immediate" />

Voici le dossier complet de classe pour mon action personnalisée:

using Microsoft.Deployment.WindowsInstaller;

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

      return ActionResult.Success;
    }
  }
}

L'action est dirigée par une pression sur un bouton dans l'interface utilisateur (pour l'instant):

  <Control Id="Next" Type="PushButton" X="248" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" >
      <Publish Event="DoAction" Value="HelperAction">1</Publish>
  </Control>

Quand je lance le MSI, je reçois cette erreur dans le journal:

MSI (c) (08:5C) [10:08:36:978]: Connected to service for CA interface.
MSI (c) (08:4C) [10:08:37:030]: Note: 1: 1723 2: SQLHelperAction 3: CustomAction1 4: C:\Users\NATHAN~1.TYL\AppData\Local\Temp\MSI684F.tmp 
Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  Action SQLHelperAction, entry: CustomAction1, library: C:\Users\NATHAN~1.TYL\AppData\Local\Temp\MSI684F.tmp 
MSI (c) (08:4C) [10:08:38:501]: Product: SessionWorks :: Judge Edition -- Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  Action SQLHelperAction, entry: CustomAction1, library: C:\Users\NATHAN~1.TYL\AppData\Local\Temp\MSI684F.tmp 

Action ended 10:08:38: SQLHelperAction. Return value 3.
DEBUG: Error 2896:  Executing action SQLHelperAction failed.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2896. The arguments are: SQLHelperAction, , 

Aucune des deux codes d'erreur ou les messages qu'il me donne est assez pour me dire ce qui ne va pas. Ou peut-être que je suis tout simplement pas comprendre ce qu'ils disent est faux.

Tout d'abord je pensais que ce serait peut-être parce que j'utilisais Wix 3,5, donc juste pour être sûr que j'ai essayé d'utiliser Wix 3.0, mais je reçois la même erreur.

Toutes les idées sur ce que je fais mal?

Était-ce utile?

La solution

Pour votre ensemble d'action personnalisée vous avez besoin d'un fichier de configuration et définissez l'attribut useLegacyV2RuntimeActivationPolicy à true. Assurez-vous que vous nommez votre fichier de configuration CustomAction.config. Si vous ne le faites pas, cela ne fonctionnera pas. Je suppose que vous exécutez sur le .NET Framework 4.

Voir pour plus d'informations. En outre, comme AntonyW déjà souligné, fuslogvw.exe est très utile dans ce scénario.

Autres conseils

au lieu de référencer les .dll référence au .CA.dll, il a travaillé pour moi.

Actions personnalisées lancées à partir DoAction ne sont pas en mesure d'écrire dans le fichier journal.

Cela me confond aussi bien, quand je commencé à utiliser Wix.

Si vous voulez voir ce qui se passe, vous pouvez utiliser System.Diagnostics.Debugger.Launch() au début de l'action personnalisée. Cela vous invite à joindre Visual Studio au processus afin que vous puissiez déboguer.

Cette erreur vient lorsque vous avez la configuration d'installation projet / plate-forme définie à debug / x64 et configuration projet d'action personnalisée / plate-forme mis à debug / x86 cotininurie.

Corriger le réglage de la plate-forme pour construire les projets de même plate-forme

Dans mon cas, le changement platorm résolu la question.

Merci Yogesh

Un plus possible réponse - vous pouvez avoir spécifié la DLL droite CA, et spécifié la bonne méthode, mais si la méthode est pas décorée avec [CustomAction], vous recevrez cette erreur.

Pour moi, ce fut mon CustomAction DllEntry ne correspondait pas à mon nom de la méthode. i.e..

<CustomAction Id="CheckingPID" BinaryKey="CheckPID.CA" DllEntry="BadValue" />

public static ActionResult CheckPID(Session session)

Avez-vous essayé de modifier les paramètres de la bibliothèque d'exécution sur la DLL d'action personnalisée? Les options de mode de débogage / MDd et / MtD nécessitent des versions de débogage de l'exécution du C en particulier, qui ne sont pas disponibles sur les machines de production (il n'y a pas de licence redistribuable pour eux). Si vous utilisez le commutateur / MD option du compilateur vous devrez peut-être également installer la version d'exécution Visual Studio C de dont vous avez besoin sur les machines des utilisateurs, il existe un module de fusion pour que: package C ++ redistribuable avec Wix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top