2011-12-13 17 views
5

He creado una aplicación simple de winforms y un instalador personalizado. Todo parece bastante simple pero obtengo la siguiente ventana emergente y detalles de error en el registro de eventos.Error 1001 usando el instalador personalizado con Visual Studio 2008

Error message box displayed before running the custom action code

The description for Event ID 11001 from source MsiInstaller cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

Product: Custom Action Tester -- Error 1001. Error 1001. Exception occurred while initializing the installation: System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\Windows\system32\Action' or one of its dependencies. The system cannot find the file specified.. (NULL) (NULL) (NULL) (NULL) (NULL)

the message resource is present but the message is not found in the string/message table

He comprobado C: \ Windows \ system32 y no hay archivo o carpeta llamada Acción pero hay 3 archivos llamados ActionCenter.dll, ActionCenterCPL.dll y ActionQueue .dll

¿Alguna idea de cómo puedo resolver este error?

EDIT:

Siguiendo la sugerencia de Cosmin-Pîrvu Me corrió el instalador con el registro. El área donde aparece el error se muestra a continuación, pero sigo sin saber cómo resolver el problema.

MSI (s) (40:7C) [09:34:26:523]: Executing op: CustomActionSchedule(Action=_FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install,ActionType=3073,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=install /LogFile= /targetdir="C:\Test\Custom Action Tester\" /Param1="C:\Test\TestFile.txt" /Param2="C:\Test\" "C:\Test\Custom Action Tester\ConfigSetup.dll" "C:\Users\wildb\AppData\Local\Temp\CFG66BE.tmp") 
MSI (s) (40:94) [09:34:26:525]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI85A8.tmp, Entrypoint: ManagedInstall 
MSI (s) (40:F0) [09:34:26:525]: Generating random cookie. 
MSI (s) (40:F0) [09:34:26:557]: Created Custom Action Server with PID 6492 (0x195C). 
MSI (s) (40:D4) [09:34:26:586]: Running as a service. 
MSI (s) (40:D4) [09:34:26:587]: Hello, I'm your 32bit Elevated custom action server. 
DEBUG: Error 2835: The control ErrorIcon was not found on dialog ErrorDialog 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2835. The arguments are: ErrorIcon, ErrorDialog, 
Error 1001. Error 1001. Exception occurred while initializing the installation: 
System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\Windows\system32\Action' or one of its dependencies. The system cannot find the file specified.. 
MSI (s) (40!4C) [09:34:29:580]: 
MSI (s) (40:94) [09:34:29:584]: Leaked MSIHANDLE (14) of type 790531 for thread 7244 
MSI (s) (40:94) [09:34:29:584]: Note: 1: 2769 2: _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install 3: 1 
DEBUG: Error 2769: Custom Action _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install did not close 1 MSIHANDLEs. 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2769. The arguments are: _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install, 1, 
CustomAction _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) 
Action ended 09:34:29: InstallExecute. Return value 3. 

Se suponía que era una victoria rápida para simplificar la vida de nuestros usuarios; no querían tener que editar archivos de configuración ... pero se convirtió en una pesadilla. : O (

EDIT 2:

Después de un montón de jugar, el error sólo se presenta cuando se especifican los parámetros de la acción personalizada, como se muestra en la foto El problema es que el instalador personalizado es. inútil sin ser capaz de leer los valores introducidos en las pantallas anteriores instalar.

Custom action property screen

+1

Intente crear un registro detallado de instalación para ver qué desencadena el error: http://setupanddeployment.com/debugging/msi-log. Puede buscar "Valor de retorno 3" en el registro. –

Respuesta

6

Después de muchas horas dando vueltas en círculos fin he encontrado el problema y lo más importante, la solución.

Debería ser posible pasar los parámetros como "CustomActionData" tal como se definen on this blog pero los parámetros son un poco poco común para decir lo menos ...

me encontré con que los parámetros de texto no pueden tener comillas alrededor del parámetro nombrar y debe ser formateada como esto:

/Param1=[CONFIG_TESTFILE] /Param2=[CONFIG_TESTFOLDER]

Además, utilizar el parámetro de directorio de destino que es necesario incluir las comillas, pero en vez de terminar el campo con una barra invertida, debe utilizar un espacio en lugar, como este :

/target="[TARGETDIR] "

+3

Sugiero usar la "\" en lugar de un espacio para el objetivo. Puede usar este código fácilmente para obtener la ruta correcta: string exePath = Path.Combine (Context.Parameters ["targetdir"], "TestForSetup.exe"); var config = ConfigurationManager.OpenExeConfiguration (exePath); –

+1

Gracias, esto realmente me dejó perplejo. Y la última parte es realmente muy extraña. – Jens

+0

@Stef Incluso con el final "\", debe agregar un espacio adicional para que el instalador funcione correctamente. (Sin el espacio, mi instalador instala mi software con éxito, pero la desinstalación falla al mostrar el mensaje anterior.) Parece que esto se debe a que el instalador trata la terminación "\" como un carácter de escape para la comilla doble final ("). Por lo tanto, debe insertar un espacio entre. –

Cuestiones relacionadas