.net - problemas - error en tiempo de ejecución durante la carga del complemento com
¿Se puede instalar un complemento de.NET Word 2003 fuera del GAC? (3)
Creé un componente de complemento de Word y un proyecto de configuración de estudio visual para instalar el componente.
En una máquina limpia con Office 2003 instalado, no parece posible que el componente adicional se cargue en Word.
Buscar en Google el problema sugiere que esto se debe a que el ensamblado no es de confianza. Le di confianza total a la asamblea usando la herramienta de línea de comando:
caspol -af AssemblyName.dll
Esto no hace diferencia y el compenente aún no está cargado en Word. Caspol imprime un mensaje "Debido a que todos los ensamblados de GAC siempre obtienen plena confianza, la lista de confianza completa ya no es significativa. Debe instalar los ensamblados que se usan en la política de seguridad en el GAC para garantizar que sean confiables".
Cambiar el instalador para colocar el ensamblado en el GAC le permite cargarlo correctamente en Word. Pero es posible que el componente tenga que usar conjuntos comunes en el futuro, compartidos entre nuestras otras aplicaciones .NET, y agregar estas bibliotecas al GAC no sería deseable.
¿Alguien sabe cómo configurar la seguridad para permitir que el componente se cargue cuando se instala fuera del GAC?
No creo que poner el complemento en GAC sea obligatorio. Creo que solo te falta un paso en tu implementación.
Las aplicaciones de oficina como MS Word cargan sus complementos al leer ciertas entradas de registro. Lo más probable es que no esté creando estas entradas durante la implementación.
Para conocer los detalles de todo este negocio de registro, consulte este artículo. También para leer acerca de la implementación de complementos de oficina en general, consulte este artículo
Puede ejecutar manualmente el siguiente comando para establecer la seguridad y permitir que la palabra ejecute el ensamblaje desde fuera del GAC. Esto crea un nuevo grupo con plena confianza que es lo que permite que se ejecute el ensamblado.
caspol.exe -u -addgroup All_Code -url "/*" FullTrust -n AssemblyName.dll
Microsoft tiene un ejemplo de acción personalizada para un instalador en el siguiente enlace de sitio a MSDN , que le permitirá incluir este comando como una acción personalizada del instalador.
Definitivamente no tiene que instalar sus ensambles en el GAC, tampoco es necesario definir ninguna política de seguridad en su ensamblaje de complemento.
¿Estás usando .NET 2.0 con Office 2003? Office 2003 y Office XP tienen un problema al cargar complementos .NET 2.0. Se cargan utilizando .NET 1.1 Framework (si está presente en la máquina, lo cual es muy probable). Por lo tanto, debe aplicar un parche a su instalación de Office con la Actualización de compatibilidad de complementos compartidos para Microsoft .NET Framework 2.0 (KB908002) .
Definitivamente debe incluir este parche en los requisitos previos de su instalador.
Encuentra más detalles en la respuesta a estas preguntas .
Y, por supuesto, debe tener la versión correcta de los PIA instalados en su sistema objetivo (casi se olvida este punto, los PIA incorrectos o faltantes son uno de los principales problemas por los que los complementos no se cargan).
Actualización : KB908002 requiere VS 2005 en la PC para agregar la Actualización de compatibilidad de complementos compartidos al cuadro de diálogo de requisitos previos de los proyectos de configuración. La siguiente solución alternativa se debe utilizar en este caso:
Si está utilizando Visual Studio 2008, debe seguir la solución que se menciona a continuación para que KB908002 aparezca en el cuadro de diálogo Agregar requisitos previos:
- Descargue e instale el arreglo en una máquina que tenga instalado Visual Studio 2005.
- Vaya a C: / Archivos de programa / Microsoft Visual Studio 8 / SDK / v2.0 / BootStrapper / Packages , ubique la carpeta KB908002.
- Inicie sesión en la máquina que tiene instalado Visual Studio 2008 y copie la carpeta KB908002 a C: / Archivos de programa / Microsoft SDKs / Windows / v6.0A / Bootstrapper / Packages
- Ahora, si va a la lista de requisitos previos en la máquina Visual Studio 2008, verá la solución en la lista.
Otra opción en la que no necesita VS 2005 sería:
- Descargue la solución a una carpeta temporal.
Abra un símbolo del sistema, vaya a la carpeta donde se encuentra la corrección e inicie el siguiente comando para extraer los archivos del archivo de instalación autoextraíble:
vs2005-kb908002-enu-x86.exe /C /T:C:/KB908002/ cd /KB908002
Ahora la carpeta C: / KB908002 contendrá tres archivos, vs2005-kb908002-enu-x86.exe / C / T: C: / tmp / KB908002 / tmp, setup.exe y bootstrapper.msi
Estamos interesados en los contenidos de bootstapper.msi, por lo que extraemos el contenido de este archivo:
msiexec /a bootstrapper.msi /qb TARGETDIR=C:/KB908002/tmp/ cd tmp
Finalmente, copiamos la carpeta de paquetes que extrajimos a la carpeta bootstrapper del SDK de Windows
xcopy /E "C:/KB908002/tmp/SDK/BootStrapper/Packages" "C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bootstrapper/Packages"
Ahora, si va a la lista de requisitos previos en Visual Studio 2008, verá la solución en la lista.