Pregunta

Cuando se desinstala mi aplicación, el servidor debe ser notificado para que pueda liberar la clave de licencia asignada al cliente. Esto se realiza a través de una llamada de servicio web.

Creé una acción personalizada de C # que hace esto. El problema es que el desinstalador está dejando de decir que no pudo encontrar un archivo DLL.

El registro de errores para el msi contiene el siguiente error:

  

Error 1723. Hay un problema con   Este paquete de Windows Installer. Una DLL   requerido para completar esta instalación   No se pudo ejecutar. Contacta tu soporte   vendedor de personal o paquetes. Acción   ReadLicenseKeyFromFile, entrada:   ReadLicenseKey, biblioteca:   C: \ Windows \ Installer \ MSI4F42.tmp

Tengo la función ReadLicenseKey marcada como una acción personalizada. La acción personalizada se llama 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" />

El proyecto de acción personalizada está generando el archivo .CA.dll. He intentado instalar el archivo como parte de la configuración, copie manualmente el archivo pegado, no hice nada en el archivo ... básicamente probé todas las combinaciones posibles.

Debe haber algo que me falta, así que por favor ayuda.

¿Fue útil?

Solución

Lamento haber perdido el tiempo de todos con esto.

La solución fue algo demasiado simple. Había olvidado colocar el atributo [CustomAction] en este método en particular. Entonces, aunque fue la última acción que escribí en mi archivo CustomAction.cs, fue la primera llamada en InstallExecuteSequence. Y debido a eso, me engañé pensando que no podía encontrar el archivo. Bueno, eso además del hecho de que debo haber tenido mucho sueño ...

De todos modos, mientras buscaba la respuesta, logré encontrar muchos recursos agradables, especialmente serie Alex Shevchuks en Wix . Otra cosa que me di cuenta fue que no tengo que instalar el archivo dll de acción personalizada. Solo tengo referencia de mi proyecto Wix y proporciono el camino hacia él. El dll se incrusta en la configuración y se transmite desde allí cuando se llama a las acciones personalizadas de desinstalación.

Otros consejos

¿Se copia su UnInstallCA.CA.dll en la máquina de destino durante la instalación? Parece que no está allí en la desinstalación.

Si llegó allí, ¿puede correr? (intente ejecutarlo desde la máquina de destino para ver si puede hacer lo que se supone que debe hacer; tal vez necesite enviar algún otro dll que esté usando desde este, o tal vez algún paquete redistribuible)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top