Je tente de créer une action personnalisée WiX qui me permettra d'arrêter et d'effacer un paquet COM + dans le cadre d'une installation de mise à niveau, ou de créer et configurer un nouveau paquet COM + dans le cadre de l'installation initiale. Je l'avais précédemment exécuté en tant que CustomAction dans un MSI Visual Studio standard, mais cela permet uniquement l'exécution de l'action personnalisée après la copie des fichiers - qui échouera car le package sera toujours en cours d'exécution.FileNotFoundException lors de l'exécution de WiX CustomAction avec COMAdmin interop
COMAdmin.dll a été ajouté en tant que référence au projet CustomAction et est défini sur CopyLocal = true. Dans le dossier bin pour le projet d'action personnalisé, Interop.COMAdmin.dll est présent. La réponse à this question semble suggérer que cela devrait fonctionner.
Je reçois l'exception suivante dans le journal MSI lorsque vous essayez d'installer:
MSI (s) (C4:04) [10:40:34:205]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI119.tmp, Entrypoint: BeforeInstall
SFXCA: Extracting custom action to temporary directory: C:\WINDOWS\Installer\MSI119.tmp-\
SFXCA: Binding to CLR version v2.0.50727
Calling custom action MyCustomAction!MyCustomAction.CustomActions.BeforeInstall
Exception thrown by custom action:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Interop.COMAdmin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'Interop.COMAdmin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
at MyCustomAction.CustomActions.BeforeInstall(Session session)
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value .
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(Int32 sessionHandle, String entryPoint, IntPtr remotingDelegatePtr)
Pour clarifier, j'utilise WiX 3.0 avec VS2008. –