CUSTACT1.CPP
#pragma message("Simple Custom Action DLL.  Copyright 1997 - 1998 Microsoft Corp.") 
#if 0  // makefile definitions, build with "nmake -f CustAct1.cpp" 
DESCRIPTION = Custom Action Test DLL 
MODULENAME = CustAct1 
FILEVERSION = 0.20 
ENTRY = Action1 
!include <MsiTool.Mak> 
!if 0  #nmake skips the rest of this file 
#endif // end of makefile definitions 
 
// test of external database access 
#define WINDOWS_LEAN_AND_MEAN  // faster compile 
#include <windows.h>  // included for both CPP and RC passes 
#ifndef RC_INVOKED    // start of CPP source code 
#include <stdio.h>    // printf/wprintf 
#include <tchar.h>    // define UNICODE=1 on nmake command line to build UNICODE 
#include "MsiQuery.h" // must be in this directory or on INCLUDE path 
 
UINT __stdcall Action1(MSIHANDLE hInstall) 
{ 
TCHAR szValue[200]; 
DWORD cchValue = sizeof(szValue)/sizeof(TCHAR); 
if (MsiGetProperty(hInstall, "TESTACTION", szValue, &cchValue) 
== ERROR_SUCCESS) 
::MessageBox(0, szValue, TEXT("Greetings from Action1"), MB_OK); 
return ERROR_SUCCESS; 
} 
 
#else // RC_INVOKED, end of CPP source code, start of resource definitions 
// resource definition go here 
#endif // RC_INVOKED 
#if 0  // required at end of source file, to hide makefile terminator 
!endif // makefile terminator 
#endif