2013-03-14 2 views
1

J'essaie d'intégrer un fichier .dll dans un programme d'installation wix utilisé par d'autres DLL lors de l'installation mais qui ne sera pas installé sur les systèmes du client.Intégration WiX dll

J'ai actuellement eu

<Binary Id="AutomationUtils" SourceFile="AutomationUtils\bin\Release\AutomationUtils.dll" /> 
... 
<CustomAction Id="Install" BinaryKey="InstallUILib" DllEntry="AutomationUtils;RunInstallerDLL" Return="check" Execute="deferred" /> 

mais même si je prends l'autre .dll out - Wix refuse de reconnaître l'existence des AutomationUtils .. même si elle construit ok (mais tombe lorsque vous essayez et exécutez-le).

Répondre

4

Le BinaryKey='InstallUILib' fera référence à un élément Binary avec Id='InstallUILib'. L'attribut CustomAction/@DllEntry est le nom du point d'entrée de la fonction dans l'action personnalisée .dll de l'élément Binary. Ce nom doit pouvoir accéder à ::GetProcAddress(). Je suis assez sûr qu'une fonction nommée AutomationUtils;RunInstallerDLL n'est pas valide.

Si vous cherchez à faire de l'action personnalisée de code managé (où vous avez probablement besoin de plusieurs fichiers .dlls) ce article est correct. Sinon, si vous créez une action personnalisée native, je recommande de créer un fichier .dll unique.

+0

InstallUILib et RunInstallerDLL sonnent bien comme InstallUtilLib et RunInstaller. Hmmmm .... –

+0

@Chris Une telle tentative de hack sale de ma part ne peut que suggérer que je travaille sur quelque chose que je n'ai jamais regardé auparavant :) Rob, Cette limitation est tout à fait un obstacle et je suis sérieusement envisager de copier/coller (aussi horrible que ce soit). Je suppose que ce dont j'ai vraiment besoin est une méthode compatible .net2 pour l'intégration de dll dans une autre DLL qui peut être facilement automatisée par programme (et n'ajoute pas aux exigences de construction) - mais c'est une question différente. Ou cela: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Easy-WiX-way-for-a-custom-action-to-call-multiple-utility-DLLs -td705940.html – Izzy

+1

@Izzy, depuis que vous l'avez étiqueté wix2 Je suppose que vous n'utilisez pas DTF. Correct? DTF est la norme de référence pour la création d'actions personnalisées gérées et dispose déjà d'un mécanisme intégré pour regrouper les dépendances et les références et les rendre disponibles au moment de l'exécution. –