Cómo implementar una función de devolución de llamada de SQL Server 2000 Desktop Engine y un ejemplo

Seleccione idioma Seleccione idioma
Id. de artículo: 315463 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo describe cómo implementar una función de devolución de llamada durante la instalación de SQL Server 2000 Desktop Engine (MSDE 2000) y también todas las condiciones que deben cumplirse para asegurarse de que la función de devolución de llamada se ejecuta correctamente.

SQL Server 2000 Desktop Engine (MSDE 2000) es una versión redistribuible del motor de base de datos relacional de Microsoft SQL Server 2000. Permite que una aplicación que utiliza el motor de base de datos relacional de SQL Server para instalar el motor de como una parte del proceso de instalación de aplicación.

El paquete de instalación de MSDE 2000 le permite utilizar una función de devolución de llamada para realizar un seguimiento del progreso o para realizar acciones personalizadas durante la instalación.

Condiciones de uso de la función de devolución de llamada

La función de devolución de llamada que se ejecuta normalmente, deben cumplirse las condiciones siguientes:
  • La función de devolución de llamada debe implementar como un Windows Installer personalizado acción tipo 1 dinámicos vinculados biblioteca (DLL). Por ejemplo, puede utilizar el Asistente del Microsoft Visual C++ para procedimientos almacenados extendidos para crear una DLL de devolución de llamada.

    Para obtener más información acerca de los tipos de biblioteca de Windows Installer, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/library/en-us/msi/cact_6a05.asp?frame=true
  • La función de devolución de llamada debe residir en cualquiera de las carpetas siguientes:
    • La carpeta que se devuelve la llamada GetTempPath Win32.
    • La carpeta {Product code} que está presente en la carpeta que se devuelve la llamada GetTempPath Win32.

      Nota {Product code} es un marcador de posición para el código de producto de la instancia de MSDE 2000 que está instalado en su equipo.
    Normalmente, la carpeta que es devuelto por Win32 GetTempPath llamada es la variable de entorno % TMP % . Si la variable de entorno % TMP % no está disponible, es la variable de entorno % TEMP % .

    Para obtener más información acerca de la función de Win32 GetTempPath , visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/library/en-us/fileio/base/gettemppath.asp

  • La función de devolución de llamada de Desktop Engine debe tomar un parámetro UINT adicional que contiene el código de salida de Desktop Engine o código de retorno. La definición de una función de devolución de llamada es similar a
    UINT __stdcall MyCallbackFunction(MSIHANDLE hinstall, UINT uExitCode)
    						
    donde uExitCode contiene la instalación de Desktop Engine código de salida o código de retorno.

Los pasos de ejemplo y código para implementar una función de devolución de llamada

Los pasos siguientes describen la implementación de una función de devolución de llamada de ejemplo utilizando Microsoft Visual Studio 6.0.

  1. En el Microsoft Visual C++ 6.0 IDE, haga clic en archivo y, a continuación, haga clic en nuevo . En la ficha proyectos , haga clic en el Asistente de procedimiento de almacenado extendido.
  2. Especifique un nombre de proyecto. Por ejemplo, MyCallback . También puede especificar la ubicación en la que desea crear el proyecto. Haga clic en Aceptar .
  3. Especifique un nombre a la función de devolución de llamada. Por ejemplo, MyCallbackFunction . Tenga en cuenta que en el ejemplo utiliza al Asistente para el procedimiento de almacenado extendido para crear una DLL de devolución de llamada. El asistente recomienda que se especifique un nombre comenzando por "XP_". Sin embargo, puede omitir la recomendación y especificar el nombre de función de devolución de llamada de su elección. Haga clic en Finalizar .
  4. Esto creará las clases y los archivos cpp necesarios. En el panel área de trabajo, verá el área de trabajo para este proyecto. Seleccione el ClassView y expanda la carpeta globales en el árbol de clases MyCallback . Allí podrá ver la definición de la función MyCallbackFunction .

    El código de ejemplo para la función de devolución de llamada está en el encabezado de Ejemplo de código siguiente. Puede probar el proyecto copiando el código siguiente en la función MyCallbackFunction .

    Código de ejemplo

    #include <stdafx.h>
    
    #define XP_NOERROR 0
    #define XP_ERROR 1
    #define MAXCOLNAME 25
    #define MAXNAME 25
    #define MAXTEXT 255
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    UINT __declspec(dllexport) MyCallbackFunction(HANDLE hinstall, UINT uExitCode);
    
    #ifdef __cplusplus
    }
    #endif
    
    UINT __declspec(dllexport) MyCallbackFunction(HANDLE hinstall, UINT uExitCode)
    {
    
         TCHAR buffer[1024];
    
         wsprintf(buffer, TEXT("**Callback** Return code is %d"), uExitCode);
    
         MessageBox(NULL, buffer, TEXT("MyCallbackFunction Dialog"), MB_OK);
    
         return 0;
    }
    					
    Este ejemplo de función de devolución de llamada, muestra un cuadro de mensaje con este texto en cada llamada:
    **Callback** Return code is 0
    					
  5. Crear el archivo MyCallback.dll utilizando el menú Generar . La DLL está integrada y guardada en una subcarpeta denominada Debug , en la misma ubicación que especificó en el paso 2.
  6. Una vez creada el archivo DLL, debe copiar el archivo DLL en una ubicación que depende de la versión de MSDE 2000 instalada en su equipo.
    • Si está utilizando SQL Server 2000 Desktop Engine SP2, debe copiar el archivo DLL a la ubicación que se define mediante una de las siguientes variables de entorno:
      • % TMP %
      • % TEMP % .
      Para obtener el entorno de los valores de variables en un equipo específico para el usuario que ha iniciado la sesión, escriba el comando siguiente en el símbolo del sistema:
      SET
      Este comando muestra todas las variables de entorno, incluidos TMP y TEMP .
    • Si está utilizando SQL Server 2000 Desktop Engine SP3a, debe copiar el archivo DLL a una de las siguientes ubicaciones:
      • %TMP%\ {Product code}
      • %TEMP%\ {Product code}
      Nota {Product code} es un marcador de posición para el código de producto de la instancia de MSDE 2000 que está instalado en su equipo.

      Por ejemplo, si la instancia de MSDE 2000 tiene un código de producto de E09B48B5 E141 427A AB0C D3605127224A, deberá copiar la DLL a la % TMP%\{E09B48B5-E141-427A-AB0C-D3605127224A} o % TEMP%\{E09B48B5-E141-427A-AB0C-D3605127224A} carpeta.
  7. Utilice la opción de Desktop Engine Windows Installer CALLBACK para invocar la función de devolución de llamada durante la instalación. Por ejemplo:
    CALLBACK=Dllname!CallbackFunctionName
    para este ejemplo, la sintaxis es:
    setup.exe /L*v c:\msde_setup.log CALLBACK=MyCallback!MyCallbackFunction
    					

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
299795Cómo crear paquetes de instalación de MSDE 2000 con Visual Studio Installer 1.1


SDK de instalador de Windows es parte de Microsoft Platform Software Development Kit (SDK). Para obtener más información acerca de Platform SDK, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Libros en pantalla de SQL Server 2000; temas: "Building SQL Server Applications"; "Distributing SQL Server Applications"; "Distributing SQL Server with Applications"; "Códigos de devolución de Installer de Desktop Engine Windows"; "Escritorio motor Windows Installer Callback funciones"

Propiedades

Id. de artículo: 315463 - Última revisión: lunes, 03 de febrero de 2014 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Desktop Engine (MSDE) SP3a
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowtomaster KB315463 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 315463

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com