Question

Lorsque mon application est désinstallée, le serveur doit être averti afin de pouvoir libérer la clé de licence attribuée au client. Cela se fait via un appel de service Web.

J'ai créé une action personnalisée C # pour le faire. Le problème est que le programme de désinstallation est en train de quitter en disant qu'il ne pourrait pas trouver une dll.

Le journal des erreurs du fichier msi contient l'erreur suivante:

  

Erreur 1723. Il y a un problème avec   ce package Windows Installer. Une DLL   requis pour cette installation à compléter   ne pouvait pas être exécuté. Contactez votre support   personnel ou fournisseur de colis. action   ReadLicenseKeyFromFile, entrée:   ReadLicenseKey, bibliothèque:   C: \ Windows \ Installer \ MSI4F42.tmp

La fonction ReadLicenseKey est marquée comme une action personnalisée. L'action personnalisée s'appelle ReadLicenseKeyFromFile.

<Custom Action="ReadLicenseKeyFromFile" After="InstallInitialize">
    REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE
</Custom>

<CustomAction Id="ReadLicenseKeyFromFile" BinaryKey="UnInstallCA.CA.dll" DllEntry="ReadLicenseKey" Execute="immediate" Return="check" />

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

Le projet d'action personnalisé génère le fichier .CA.dll. J'ai essayé d'installer le fichier dans le cadre de l'installation, de copier le fichier collé manuellement, de ne rien faire dans le fichier ... en gros, j'ai essayé toutes les combinaisons possibles.

Il doit y avoir quelque chose qui me manque, alors s'il vous plaît, aidez-nous.

Était-ce utile?

La solution

Je suis désolé d'avoir perdu le temps de tout le monde à ce sujet.

La solution était quelque chose d'assez trop simple. J'avais oublié de placer l'attribut [CustomAction] sur cette méthode particulière. Ainsi, même si c’était la dernière action que j’avais écrite dans mon fichier CustomAction.cs, c’était la première à être appelée dans InstallExecuteSequence. Et à cause de cela, j'ai été induit en erreur en pensant qu'il ne pouvait pas trouver le fichier. Eh bien, cela ainsi que le fait que je devais avoir vraiment sommeil ...

Quoi qu’il en soit, en cherchant la réponse, j’ai réussi à trouver beaucoup de belles ressources, en particulier série Alex Shevchuks sur Wix . Une autre chose que j'ai réalisée est que je n'ai pas à installer le fichier dll d'action personnalisée. Je viens de le référencer de mon projet Wix et de fournir le chemin d'accès. La dll est incorporée dans la configuration et est diffusée à partir de cet emplacement lorsque les actions personnalisées de désinstallation doivent être appelées.

Autres conseils

Votre fichier UnInstallCA.CA.dll est-il copié sur la machine cible lors de l'installation? Il semble que ce n’est pas le cas lors de la désinstallation.

S'il y en a eu - peut-il fonctionner? (essayez de l’exécuter à partir de la machine cible pour voir s’il peut faire ce qu’il est supposé faire - vous devez peut-être expédier une autre DLL que vous utilisez depuis celle-ci - ou peut-être un paquet redistribuable)

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