windows-services - tagger - tag folders
¿Cómo corrijo la excepción ''Proyecto de instalación con archivo de acción personalizado no encontrado''? (2)
La respuesta es enloquecedoramente simple. Si el último argumento en el CustomActionData va a contener espacios y, por lo tanto, tiene que rodearlo con comillas y una barra diagonal, también debe tener un espacio después de la barra diagonal, como este:
/ TimeToRun = "[TIMETORUN] /" / TargetDir = "[TARGETDIR] /"
La solución y la explicación se pueden encontrar here .
Estoy tratando de crear un proyecto de configuración para un servicio de Windows. He seguido las instrucciones en http://support.microsoft.com/kb/816169 para crear el proyecto de instalación sin problemas.
Quiero poder obtener un valor durante la instalación para actualizar la aplicación .config con la configuración deseada por el usuario. Agregué un cuadro de diálogo Cuadro de texto (A) para recuperar los valores. Establecí la propiedad Edit1Property en "TIMETORUN", y en la propiedad CustomActionData de mi acción de salida principal puse lo siguiente: / TimeToRun = "[TIMETORUN] /" . Hasta ahora tan bueno. Al ejecutar la configuración, puedo recuperar el valor TimeToRun de la colección Context.Parameters sin ningún problema.
Para ubicar la aplicación.config también debo pasar el valor de la propiedad de Windows Installer de TARGETDIR a mi acción personalizada. Aquí es donde las cosas comienzan a desmoronarse. Para lograr esto, los CustomActionData anteriores deben modificarse así: / TimeToRun = "[TIMETORUN] /" / TargetDir = "[TARGETDIR] /" . Ahora cuando ejecuto la configuración me aparece el siguiente mensaje de error:
Error 1001. Se produjo una excepción al inicializar la instalación. System.IO.FileNotFoundException: no se pudo cargar el archivo o el ensamblado ''file: /// C: / Windows / SysWOW64 / Files'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.
Si busca en Google este problema, inevitablemente encontrará personas que tienen un gran éxito simplemente agregando la barra diagonal final a la parte / TargetDir = "[TARGETDIR] /" de CustomActionData . Lamentablemente esto no resuelve mi problema.
Probé tantas variaciones diferentes de la cadena CustomActionData y ninguna de ellas funcionó. Intenté iniciar sesión en un archivo desde mi método de instalación anulado para determinar dónde estaba la rotura, pero no se crea ningún archivo de registro porque ni siquiera está llegando tan lejos. Como indica el error, la falla se produce durante el paso de Inicialización.
Tengo el presentimiento de que podría ser una de las dependencias que el proyecto de instalación está intentando cargar. Tal vez, de alguna manera, se esté agregando algo a la cadena CustomActionData y no esté jugando bien con el valor TARGETDIR (que contiene espacios, es decir, "C: / Archivos de programa / Mi compañía / Nombre del proyecto"). De nuevo, este es otro presentimiento que parece que no puedo confirmar debido a mi incapacidad para depurar el proceso de configuración.
Otra cosa que mencionar, y sí, es otra corazonada, ¿podría ser esto un problema con los proyectos de instalación en la versión de 64 bits de Windows? Estoy ejecutando Windows 7 Professional.
Daré los nombres de las dependencias en caso de que ayude:
- NET Framework microsoft
- Microsoft.SqlServer.DtsMsg.dll
- Microsoft.SqlServer.DTSPipelineWrap.dll
- Microsoft.SqlServer.DTSRuntimeWrap.dll
- Microsoft.SQLServer.ManagedDTS.dll
- Microsoft.SqlServer.msxml6_interop.dll
- Microsoft.SqlServer.PipelineHost.dll
- Microsoft.SqlServer.SqlTDiagM.dll
Como puede deducir de las dependencias, el Servicio de Windows está programando una llamada a un paquete DTSX.
Lo siento por la perorata larga. Gracias por cualquier ayuda que usted nos pueda proporcionar.
Tenía un problema similar. En mi caso, fue extraño porque mi instalador se ejecutó con éxito una vez, luego desinstalé mi aplicación a través de Agregar / Quitar Programas con éxito, hice algunos códigos (NO toqué mi cadena CustomActionData ) y reconstruí mi proyecto de instalación y proyecto. Fue cuando volví a ejecutar mi MSI que obtuve este error.
La codificación que había hecho era traer más valores de más parámetros que había especificado en mi cadena CustomActionData . Esa sintaxis para obtener los valores de los parámetros (es decir, string filepath = Context.Paramenters["filepath"]
), que estaba en mi clase de Instalador, estaba realmente bien, pero como descubrí, la sintaxis de los últimos parámetros que estaba tratando de Obtener desde mi cadena CustomActionData no había sido correcto, desde el principio. No pude agregar una segunda cita alrededor de uno de esos parámetros, por lo que no se pudo obtener nada más.
Estaba usando las ventanas "Cuadros de texto (A)" y "Cuadros de texto (B)" en la sección Interfaz de usuario. A tiene 1 caja, EDITA1
, donde obtengo la ruta a un archivo, y B tiene 2 cajas, EDITB1
y EDITB2
, para algunos parámetros de la base de datos. Mi cadena CustomActionData se veía así:
/filepath="[EDITA1]" /host="[EDITB1] /port="[EDITB2]"
Debería haber sido:
/filepath="[EDITA1]" /host="[EDITB1]" /port="[EDITB2]"
(cita de cierre en [EDITB1]
)