{******************************************************************************}
{                                                                              }
{ Windows Installer API interface Unit for Object Pascal                       }
{                                                                              }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
{ Corporation. All Rights Reserved.                                            }
{                                                                              }
{ The original file is: msidefs.h, released June 2000. The original Pascal     }
{ code is: MsiDefs.pas, released June 2001. The initial developer of the       }
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl).               }
{                                                                              }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
{ Marcel van Brakel. All Rights Reserved.                                      }
{                                                                              }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
{                                                                              }
{ You may retrieve the latest version of this file at the Project JEDI         }
{ APILIB home page, located at http://jedi-apilib.sourceforge.net              }
{                                                                              }
{ The contents of this file are used with permission, subject to the Mozilla   }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at      }
{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
{                                                                              }
{ Software distributed under the License is distributed on an "AS IS" basis,   }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License.    }
{                                                                              }
{ Alternatively, the contents of this file may be used under the terms of the  }
{ GNU Lesser General Public License (the  "LGPL License"), in which case the   }
{ provisions of the LGPL License are applicable instead of those above.        }
{ If you wish to allow use of your version of this file only under the terms   }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting  the provisions above and  }
{ replace  them with the notice and other provisions required by the LGPL      }
{ License.  If you do not delete the provisions above, a recipient may use     }
{ your version of this file under either the MPL or the LGPL License.          }
{                                                                              }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{                                                                              }
{******************************************************************************}

// $Id: JwaMsiDefs.pas,v 1.6 2005/09/03 14:27:48 marquardt Exp $

unit JwaMsiDefs;

{$WEAKPACKAGEUNIT}

{$HPPEMIT ''}
{$HPPEMIT '#include "msidefs.h"'}
{$HPPEMIT ''}

{$I jediapilib.inc}

interface

uses
  JwaWindows;

//------------------------------------------------------------------------------
// INSTALLER PROPERTY DEFINITIONS
//------------------------------------------------------------------------------

const

// Required properties: set in Property table

  IPROPNAME_PRODUCTNAME     = TEXT('ProductName'); // name registered for display
  {$EXTERNALSYM IPROPNAME_PRODUCTNAME}
  IPROPNAME_PRODUCTCODE     = TEXT('ProductCode'); // unique string GUID for product
  {$EXTERNALSYM IPROPNAME_PRODUCTCODE}
  IPROPNAME_PRODUCTVERSION  = TEXT('ProductVersion'); // string product version
  {$EXTERNALSYM IPROPNAME_PRODUCTVERSION}
  IPROPNAME_INSTALLLANGUAGE = TEXT('ProductLanguage'); // install language of product, use to load resources
  {$EXTERNALSYM IPROPNAME_INSTALLLANGUAGE}
  IPROPNAME_MANUFACTURER    = TEXT('Manufacturer'); // name of manufacturer
  {$EXTERNALSYM IPROPNAME_MANUFACTURER}

// Customization properties: set in Property table

  IPROPNAME_UPGRADECODE       = TEXT('UpgradeCode'); // unique string GUID for product family
  {$EXTERNALSYM IPROPNAME_UPGRADECODE}
  IPROPNAME_PIDTEMPLATE       = TEXT('PIDTemplate'); // drives Product ID processing
  {$EXTERNALSYM IPROPNAME_PIDTEMPLATE}
  IPROPNAME_DISKPROMPT        = TEXT('DiskPrompt'); // prompt for CD
  {$EXTERNALSYM IPROPNAME_DISKPROMPT}
  IPROPNAME_LEFTUNIT          = TEXT('LeftUnit'); // name of unit placed to left of number instead of right
  {$EXTERNALSYM IPROPNAME_LEFTUNIT}
  IPROPNAME_ADMIN_PROPERTIES  = TEXT('AdminProperties'); // properties to stuff in admin package
  {$EXTERNALSYM IPROPNAME_ADMIN_PROPERTIES}
  IPROPNAME_DEFAULTUIFONT     = TEXT('DefaultUIFont'); // the font used in the UI if no other font is specified
  {$EXTERNALSYM IPROPNAME_DEFAULTUIFONT}
  IPROPNAME_ALLOWEDPROPERTIES = TEXT('SecureCustomProperties');
  {$EXTERNALSYM IPROPNAME_ALLOWEDPROPERTIES}
  IPROPNAME_ENABLEUSERCONTROL = TEXT('EnableUserControl'); // allows user to specify any public property
  {$EXTERNALSYM IPROPNAME_ENABLEUSERCONTROL}
  IPROPNAME_HIDDEN_PROPERTIES = TEXT('MsiHiddenProperties');  // properties that should not be dumped into the log file
  {$EXTERNALSYM IPROPNAME_HIDDEN_PROPERTIES}  

// Customization properties: set on command-line or in Property table

  IPROPNAME_USERNAME     = TEXT('USERNAME');
  {$EXTERNALSYM IPROPNAME_USERNAME}
  IPROPNAME_COMPANYNAME  = TEXT('COMPANYNAME');
  {$EXTERNALSYM IPROPNAME_COMPANYNAME}
  IPROPNAME_PIDKEY       = TEXT('PIDKEY'); // used with PIDTemplate to form ProductID
  {$EXTERNALSYM IPROPNAME_PIDKEY}
  IPROPNAME_PATCH        = TEXT('PATCH'); // patch package to apply - SET BY INSTALLER
  {$EXTERNALSYM IPROPNAME_PATCH}
  IPROPNAME_TARGETDIR    = TEXT('TARGETDIR'); // target location - defaults to ROOTDRIVE
  {$EXTERNALSYM IPROPNAME_TARGETDIR}
  IPROPNAME_ACTION       = TEXT('ACTION'); // top-level action to perform - default to INSTALL
  {$EXTERNALSYM IPROPNAME_ACTION}
  IPROPNAME_LIMITUI      = TEXT('LIMITUI'); // limit ui level to Basic
  {$EXTERNALSYM IPROPNAME_LIMITUI}
  IPROPNAME_LOGACTION    = TEXT('LOGACTION'); // log only these actions
  {$EXTERNALSYM IPROPNAME_LOGACTION}
  IPROPNAME_ALLUSERS     = TEXT('ALLUSERS'); // install for all users
  {$EXTERNALSYM IPROPNAME_ALLUSERS}
  IPROPNAME_INSTALLLEVEL = TEXT('INSTALLLEVEL');
  {$EXTERNALSYM IPROPNAME_INSTALLLEVEL}
  IPROPNAME_REBOOT       = TEXT('REBOOT'); // force or suppress reboot
  {$EXTERNALSYM IPROPNAME_REBOOT}

  IPROPNAME_REBOOTPROMPT = TEXT('REBOOTPROMPT'); // allow or suppress reboot prompt
  {$EXTERNALSYM IPROPNAME_REBOOTPROMPT}

  IPROPNAME_EXECUTEMODE          = TEXT('EXECUTEMODE'); // NONE or SCRIPT
  {$EXTERNALSYM IPROPNAME_EXECUTEMODE}
  IPROPVALUE_EXECUTEMODE_NONE    = TEXT('NONE'); // do not update system
  {$EXTERNALSYM IPROPVALUE_EXECUTEMODE_NONE}
  IPROPVALUE_EXECUTEMODE_SCRIPT  = TEXT('SCRIPT'); // default - run script to update system
  {$EXTERNALSYM IPROPVALUE_EXECUTEMODE_SCRIPT}
  IPROPNAME_EXECUTEACTION        = TEXT('EXECUTEACTION'); // run action on server side
  {$EXTERNALSYM IPROPNAME_EXECUTEACTION}
  IPROPNAME_SOURCELIST           = TEXT('SOURCELIST');
  {$EXTERNALSYM IPROPNAME_SOURCELIST}
  IPROPNAME_ROOTDRIVE            = TEXT('ROOTDRIVE'); // default drive to install - SET BY INSTALLER
  {$EXTERNALSYM IPROPNAME_ROOTDRIVE}
  IPROPNAME_TRANSFORMS           = TEXT('TRANSFORMS'); // transforms to apply
  {$EXTERNALSYM IPROPNAME_TRANSFORMS}
  IPROPNAME_TRANSFORMSATSOURCE   = TEXT('TRANSFORMSATSOURCE'); // transforms can be found at source
  {$EXTERNALSYM IPROPNAME_TRANSFORMSATSOURCE}
  IPROPNAME_TRANSFORMSSECURE     = TEXT('TRANSFORMSSECURE'); // file transforms are secured
  {$EXTERNALSYM IPROPNAME_TRANSFORMSSECURE}
  IPROPNAME_SEQUENCE             = TEXT('SEQUENCE'); // sequence table to run with SEQUENCE action
  {$EXTERNALSYM IPROPNAME_SEQUENCE}
  IPROPNAME_SHORTFILENAMES       = TEXT('SHORTFILENAMES'); // force short file names
  {$EXTERNALSYM IPROPNAME_SHORTFILENAMES}
  IPROPNAME_PRIMARYFOLDER        = TEXT('PRIMARYFOLDER'); // Folder on the volume the author wants costing info for
  {$EXTERNALSYM IPROPNAME_PRIMARYFOLDER}
  IPROPNAME_AFTERREBOOT          = TEXT('AFTERREBOOT'); // install is after a ForceReboot triggered reboot
  {$EXTERNALSYM IPROPNAME_AFTERREBOOT}
  IPROPNAME_NOCOMPANYNAME        = TEXT('NOCOMPANYNAME');
  {$EXTERNALSYM IPROPNAME_NOCOMPANYNAME}
  IPROPNAME_NOUSERNAME           = TEXT('NOUSERNAME');
  {$EXTERNALSYM IPROPNAME_NOUSERNAME}
  IPROPNAME_DISABLEROLLBACK      = TEXT('DISABLEROLLBACK'); // disable rollback for this install
  {$EXTERNALSYM IPROPNAME_DISABLEROLLBACK}
  IPROPNAME_AVAILABLEFREEREG     = TEXT('AVAILABLEFREEREG'); // set up the free space in the registry before commencing the install
  {$EXTERNALSYM IPROPNAME_AVAILABLEFREEREG}
  IPROPNAME_DISABLEADVTSHORTCUTS = TEXT('DISABLEADVTSHORTCUTS'); // disable creating darwin shortcuts even if supported
  {$EXTERNALSYM IPROPNAME_DISABLEADVTSHORTCUTS}
  IPROPNAME_PATCHNEWPACKAGECODE  = TEXT('PATCHNEWPACKAGECODE'); // added to property table by patch transforms - used to update
  {$EXTERNALSYM IPROPNAME_PATCHNEWPACKAGECODE}
  // PackageCode of admin packages when patching admin installs
  IPROPNAME_PATCHNEWSUMMARYSUBJECT = TEXT('PATCHNEWSUMMARYSUBJECT'); // added to property table by patch transforms - used to update
  {$EXTERNALSYM IPROPNAME_PATCHNEWSUMMARYSUBJECT}
  // Subject summary info property of admin packages when patching admin installs
  IPROPNAME_PATCHNEWSUMMARYCOMMENTS = TEXT('PATCHNEWSUMMARYCOMMENTS'); // added to property table by patch transforms - used to update
  {$EXTERNALSYM IPROPNAME_PATCHNEWSUMMARYCOMMENTS}
  // Comments summary info property of admin packages when patching admin installs
  IPROPNAME_PRODUCTLANGUAGE = TEXT('PRODUCTLANGUAGE'); // requested language, must be one in summary information list, selects language transform
  {$EXTERNALSYM IPROPNAME_PRODUCTLANGUAGE}

  IPROPNAME_CHECKCRCS         = TEXT('MSICHECKCRCS');       // requests Darwin to check CRCs after copying, moving, patching & duplicating files.
  {$EXTERNALSYM IPROPNAME_CHECKCRCS}
  IPROPNAME_MSINODISABLEMEDIA = TEXT('MSINODISABLEMEDIA');  // if set, DISABLEMEDIA won't be set in the AdminProperties stream during an admin install of
  {$EXTERNALSYM IPROPNAME_MSINODISABLEMEDIA}                // a package with compressed source

// property used for URT bootstrapping

  IPROPNAME_CARRYINGNDP                 = TEXT('CARRYINGNDP');
  {$EXTERNALSYM IPROPNAME_CARRYINGNDP}
  IPROPVALUE__CARRYINGNDP_URTREINSTALL  = TEXT('URTREINSTALL');   // reinstalling/ uninstalling core URT files
  {$EXTERNALSYM IPROPVALUE__CARRYINGNDP_URTREINSTALL}
  IPROPVALUE__CARRYINGNDP_URTUPGRADE    = TEXT('URTUPGRADE');     // upgrading core URT files
  {$EXTERNALSYM IPROPVALUE__CARRYINGNDP_URTUPGRADE}

// property used for multiple instance support

  IPROPNAME_MSINEWINSTANCE = TEXT('MSINEWINSTANCE');
  {$EXTERNALSYM IPROPNAME_MSINEWINSTANCE}
  IPROPNAME_MSIINSTANCEGUID = TEXT('MSIINSTANCEGUID');
  {$EXTERNALSYM IPROPNAME_MSIINSTANCEGUID}

// properties used for URL download reduction for admins

  IPROPNAME_MSIPACKAGEDOWNLOADLOCALCOPY = TEXT('MSIPACKAGEDOWNLOADLOCALCOPY');
  {$EXTERNALSYM IPROPNAME_MSIPACKAGEDOWNLOADLOCALCOPY}
  IPROPNAME_MSIPATCHDOWNLOADLOCALCOPY = TEXT('MSIPATCHDOWNLOADLOCALCOPY');
  {$EXTERNALSYM IPROPNAME_MSIPATCHDOWNLOADLOCALCOPY}

// Properties used to populate Add/Remove Control Panel values

  IPROPNAME_ARPAUTHORIZEDCDFPREFIX = TEXT('ARPAUTHORIZEDCDFPREFIX');
  {$EXTERNALSYM IPROPNAME_ARPAUTHORIZEDCDFPREFIX}
  IPROPNAME_ARPCOMMENTS            = TEXT('ARPCOMMENTS');
  {$EXTERNALSYM IPROPNAME_ARPCOMMENTS}
  IPROPNAME_ARPCONTACT             = TEXT('ARPCONTACT');
  {$EXTERNALSYM IPROPNAME_ARPCONTACT}
  IPROPNAME_ARPHELPLINK            = TEXT('ARPHELPLINK');
  {$EXTERNALSYM IPROPNAME_ARPHELPLINK}
  IPROPNAME_ARPHELPTELEPHONE       = TEXT('ARPHELPTELEPHONE');
  {$EXTERNALSYM IPROPNAME_ARPHELPTELEPHONE}
  IPROPNAME_ARPINSTALLLOCATION     = TEXT('ARPINSTALLLOCATION');
  {$EXTERNALSYM IPROPNAME_ARPINSTALLLOCATION}
  IPROPNAME_ARPNOMODIFY            = TEXT('ARPNOMODIFY');
  {$EXTERNALSYM IPROPNAME_ARPNOMODIFY}
  IPROPNAME_ARPNOREMOVE            = TEXT('ARPNOREMOVE');
  {$EXTERNALSYM IPROPNAME_ARPNOREMOVE}
  IPROPNAME_ARPNOREPAIR            = TEXT('ARPNOREPAIR');
  {$EXTERNALSYM IPROPNAME_ARPNOREPAIR}
  IPROPNAME_ARPREADME              = TEXT('ARPREADME');
  {$EXTERNALSYM IPROPNAME_ARPREADME}
  IPROPNAME_ARPSIZE                = TEXT('ARPSIZE');
  {$EXTERNALSYM IPROPNAME_ARPSIZE}
  IPROPNAME_ARPSYSTEMCOMPONENT     = TEXT('ARPSYSTEMCOMPONENT');
  {$EXTERNALSYM IPROPNAME_ARPSYSTEMCOMPONENT}
  IPROPNAME_ARPURLINFOABOUT        = TEXT('ARPURLINFOABOUT');
  {$EXTERNALSYM IPROPNAME_ARPURLINFOABOUT}
  IPROPNAME_ARPURLUPDATEINFO       = TEXT('ARPURLUPDATEINFO');
  {$EXTERNALSYM IPROPNAME_ARPURLUPDATEINFO}
  IPROPNAME_ARPPRODUCTICON = TEXT('ARPPRODUCTICON');
  {$EXTERNALSYM IPROPNAME_ARPPRODUCTICON}

// Dynamic properties set by installer during install

  IPROPNAME_INSTALLED                    = TEXT('Installed'); // product already installed
  {$EXTERNALSYM IPROPNAME_INSTALLED}
  IPROPNAME_PRODUCTSTATE                 = TEXT('ProductState'); // state of product (installed,advertised,etc...)
  {$EXTERNALSYM IPROPNAME_PRODUCTSTATE}
  IPROPNAME_PRESELECTED                  = TEXT('Preselected'); // selections made on command line
  {$EXTERNALSYM IPROPNAME_PRESELECTED}
  IPROPNAME_RESUME                       = TEXT('RESUME'); // resuming suspended install
  {$EXTERNALSYM IPROPNAME_RESUME}
  IPROPNAME_UPDATESTARTED                = TEXT('UpdateStarted'); // have begun to update system
  {$EXTERNALSYM IPROPNAME_UPDATESTARTED}
  IPROPNAME_PRODUCTID                    = TEXT('ProductID'); // the complete validated Product ID
  {$EXTERNALSYM IPROPNAME_PRODUCTID}
  IPROPNAME_OUTOFDISKSPACE               = TEXT('OutOfDiskSpace');
  {$EXTERNALSYM IPROPNAME_OUTOFDISKSPACE}
  IPROPNAME_OUTOFNORBDISKSPACE           = TEXT('OutOfNoRbDiskSpace');
  {$EXTERNALSYM IPROPNAME_OUTOFNORBDISKSPACE}
  IPROPNAME_COSTINGCOMPLETE              = TEXT('CostingComplete');
  {$EXTERNALSYM IPROPNAME_COSTINGCOMPLETE}
  IPROPNAME_SOURCEDIR                    = TEXT('SourceDir'); // source location - SET BY INSTALLER
  {$EXTERNALSYM IPROPNAME_SOURCEDIR}
  IPROPNAME_REPLACEDINUSEFILES           = TEXT('ReplacedInUseFiles'); // need reboot to completely install one or more files
  {$EXTERNALSYM IPROPNAME_REPLACEDINUSEFILES}
  IPROPNAME_PRIMARYFOLDER_PATH           = TEXT('PrimaryVolumePath');
  {$EXTERNALSYM IPROPNAME_PRIMARYFOLDER_PATH}
  IPROPNAME_PRIMARYFOLDER_SPACEAVAILABLE = TEXT('PrimaryVolumeSpaceAvailable');
  {$EXTERNALSYM IPROPNAME_PRIMARYFOLDER_SPACEAVAILABLE}
  IPROPNAME_PRIMARYFOLDER_SPACEREQUIRED  = TEXT('PrimaryVolumeSpaceRequired');
  {$EXTERNALSYM IPROPNAME_PRIMARYFOLDER_SPACEREQUIRED}
  IPROPNAME_PRIMARYFOLDER_SPACEREMAINING = TEXT('PrimaryVolumeSpaceRemaining');
  {$EXTERNALSYM IPROPNAME_PRIMARYFOLDER_SPACEREMAINING}
  IPROPNAME_ISADMINPACKAGE               = TEXT('IsAdminPackage');
  {$EXTERNALSYM IPROPNAME_ISADMINPACKAGE}
  IPROPNAME_ROLLBACKDISABLED             = TEXT('RollbackDisabled');
  {$EXTERNALSYM IPROPNAME_ROLLBACKDISABLED}
  IPROPNAME_RESTRICTEDUSERCONTROL        = TEXT('RestrictedUserControl');
  {$EXTERNALSYM IPROPNAME_RESTRICTEDUSERCONTROL}

// Dynamic properties evaluated upon use

  IPROPNAME_TIME     = TEXT('Time');
  {$EXTERNALSYM IPROPNAME_TIME}
  IPROPNAME_DATE     = TEXT('Date');
  {$EXTERNALSYM IPROPNAME_DATE}
  IPROPNAME_DATETIME = TEXT('DateTime');
  {$EXTERNALSYM IPROPNAME_DATETIME}

// Hardware properties: set by installer at initialization

  IPROPNAME_INTEL = TEXT('Intel');
  {$EXTERNALSYM IPROPNAME_INTEL}
//#if (_WIN32_MSI >= 150)
  IPROPNAME_AMD64          = TEXT('AMD64');
  {$EXTERNALSYM IPROPNAME_AMD64}
  IPROPNAME_INTEL64        = TEXT('Intel64');
  {$EXTERNALSYM IPROPNAME_INTEL64}
//#else // (_WIN32_MSI >= 150)
  IPROPNAME_IA64           = TEXT('IA64');
  {$EXTERNALSYM IPROPNAME_IA64}
//#endif // (_WIN32_MSI >= 150)
  IPROPNAME_TEXTHEIGHT     = TEXT('TextHeight');
  {$EXTERNALSYM IPROPNAME_TEXTHEIGHT}
  IPROPNAME_SCREENX        = TEXT('ScreenX');
  {$EXTERNALSYM IPROPNAME_SCREENX}
  IPROPNAME_SCREENY        = TEXT('ScreenY');
  {$EXTERNALSYM IPROPNAME_SCREENY}
  IPROPNAME_CAPTIONHEIGHT  = TEXT('CaptionHeight');
  {$EXTERNALSYM IPROPNAME_CAPTIONHEIGHT}
  IPROPNAME_BORDERTOP      = TEXT('BorderTop');
  {$EXTERNALSYM IPROPNAME_BORDERTOP}
  IPROPNAME_BORDERSIDE     = TEXT('BorderSide');
  {$EXTERNALSYM IPROPNAME_BORDERSIDE}
  IPROPNAME_COLORBITS      = TEXT('ColorBits');
  {$EXTERNALSYM IPROPNAME_COLORBITS}
  IPROPNAME_PHYSICALMEMORY = TEXT('PhysicalMemory');
  {$EXTERNALSYM IPROPNAME_PHYSICALMEMORY}
  IPROPNAME_VIRTUALMEMORY  = TEXT('VirtualMemory');
  {$EXTERNALSYM IPROPNAME_VIRTUALMEMORY}
  IPROPNAME_TEXTHEIGHT_CORRECTION = TEXT('TextHeightCorrection');
  {$EXTERNALSYM IPROPNAME_TEXTHEIGHT_CORRECTION}

// Operating System properties: set by installer at initialization

  IPROPNAME_VERSIONNT        = TEXT('VersionNT');
  {$EXTERNALSYM IPROPNAME_VERSIONNT}
  IPROPNAME_VERSION9X        = TEXT('Version9X');
  {$EXTERNALSYM IPROPNAME_VERSION9X}
  IPROPNAME_VERSIONNT64      = TEXT('VersionNT64');
  {$EXTERNALSYM IPROPNAME_VERSIONNT64}
  IPROPNAME_WINDOWSBUILD     = TEXT('WindowsBuild');
  {$EXTERNALSYM IPROPNAME_WINDOWSBUILD}
  IPROPNAME_SERVICEPACKLEVEL = TEXT('ServicePackLevel');
  {$EXTERNALSYM IPROPNAME_SERVICEPACKLEVEL}
  IPROPNAME_SERVICEPACKLEVELMINOR = TEXT('ServicePackLevelMinor');
  {$EXTERNALSYM IPROPNAME_SERVICEPACKLEVELMINOR}
  IPROPNAME_SHAREDWINDOWS    = TEXT('SharedWindows');
  {$EXTERNALSYM IPROPNAME_SHAREDWINDOWS}
  IPROPNAME_COMPUTERNAME     = TEXT('ComputerName');
  {$EXTERNALSYM IPROPNAME_COMPUTERNAME}
  IPROPNAME_SHELLADVTSUPPORT = TEXT('ShellAdvtSupport');
  {$EXTERNALSYM IPROPNAME_SHELLADVTSUPPORT}
  IPROPNAME_OLEADVTSUPPORT   = TEXT('OLEAdvtSupport');
  {$EXTERNALSYM IPROPNAME_OLEADVTSUPPORT}
  IPROPNAME_SYSTEMLANGUAGEID = TEXT('SystemLanguageID');
  {$EXTERNALSYM IPROPNAME_SYSTEMLANGUAGEID}
  IPROPNAME_TTCSUPPORT       = TEXT('TTCSupport');
  {$EXTERNALSYM IPROPNAME_TTCSUPPORT}
  IPROPNAME_TERMSERVER       = TEXT('TerminalServer');
  {$EXTERNALSYM IPROPNAME_TERMSERVER}
  IPROPNAME_REMOTEADMINTS        = TEXT('RemoteAdminTS');
  {$EXTERNALSYM IPROPNAME_REMOTEADMINTS}
  IPROPNAME_REDIRECTEDDLLSUPPORT = TEXT('RedirectedDllSupport');
  {$EXTERNALSYM IPROPNAME_REDIRECTEDDLLSUPPORT}
  IPROPNAME_NTPRODUCTTYPE                  = TEXT('MsiNTProductType');
  {$EXTERNALSYM IPROPNAME_NTPRODUCTTYPE}
  IPROPNAME_NTSUITEBACKOFFICE              = TEXT('MsiNTSuiteBackOffice');
  {$EXTERNALSYM IPROPNAME_NTSUITEBACKOFFICE}
  IPROPNAME_NTSUITEDATACENTER              = TEXT('MsiNTSuiteDataCenter');
  {$EXTERNALSYM IPROPNAME_NTSUITEDATACENTER}
  IPROPNAME_NTSUITEENTERPRISE              = TEXT('MsiNTSuiteEnterprise');
  {$EXTERNALSYM IPROPNAME_NTSUITEENTERPRISE}
  IPROPNAME_NTSUITESMALLBUSINESS           = TEXT('MsiNTSuiteSmallBusiness');
  {$EXTERNALSYM IPROPNAME_NTSUITESMALLBUSINESS}
  IPROPNAME_NTSUITESMALLBUSINESSRESTRICTED = TEXT('MsiNTSuiteSmallBusinessRestricted');
  {$EXTERNALSYM IPROPNAME_NTSUITESMALLBUSINESSRESTRICTED}
  IPROPNAME_NTSUITEPERSONAL                = TEXT('MsiNTSuitePersonal');
  {$EXTERNALSYM IPROPNAME_NTSUITEPERSONAL}
  IPROPNAME_NTSUITEWEBSERVER               = TEXT('MsiNTSuiteWebServer');
  {$EXTERNALSYM IPROPNAME_NTSUITEWEBSERVER}
  IPROPNAME_NETASSEMBLYSUPPORT             = TEXT('MsiNetAssemblySupport');
  {$EXTERNALSYM IPROPNAME_NETASSEMBLYSUPPORT}
  IPROPNAME_WIN32ASSEMBLYSUPPORT           = TEXT('MsiWin32AssemblySupport');
  {$EXTERNALSYM IPROPNAME_WIN32ASSEMBLYSUPPORT}

// User properties: set by installer at initialization

  IPROPNAME_LOGONUSER      = TEXT('LogonUser');
  {$EXTERNALSYM IPROPNAME_LOGONUSER}
  IPROPNAME_USERSID        = TEXT('UserSID');
  {$EXTERNALSYM IPROPNAME_USERSID}
  IPROPNAME_ADMINUSER      = TEXT('AdminUser');
  {$EXTERNALSYM IPROPNAME_ADMINUSER}
  IPROPNAME_USERLANGUAGEID = TEXT('UserLanguageID');
  {$EXTERNALSYM IPROPNAME_USERLANGUAGEID}
  IPROPNAME_PRIVILEGED     = TEXT('Privileged');
  {$EXTERNALSYM IPROPNAME_PRIVILEGED}

// System folder properties: set by installer at initialization

  IPROPNAME_WINDOWS_FOLDER      = TEXT('WindowsFolder');
  {$EXTERNALSYM IPROPNAME_WINDOWS_FOLDER}
  IPROPNAME_SYSTEM_FOLDER       = TEXT('SystemFolder');
  {$EXTERNALSYM IPROPNAME_SYSTEM_FOLDER}
  IPROPNAME_SYSTEM16_FOLDER     = TEXT('System16Folder');
  {$EXTERNALSYM IPROPNAME_SYSTEM16_FOLDER}
  IPROPNAME_WINDOWS_VOLUME      = TEXT('WindowsVolume');
  {$EXTERNALSYM IPROPNAME_WINDOWS_VOLUME}
  IPROPNAME_TEMP_FOLDER         = TEXT('TempFolder');
  {$EXTERNALSYM IPROPNAME_TEMP_FOLDER}
  IPROPNAME_PROGRAMFILES_FOLDER = TEXT('ProgramFilesFolder');
  {$EXTERNALSYM IPROPNAME_PROGRAMFILES_FOLDER}
  IPROPNAME_COMMONFILES_FOLDER  = TEXT('CommonFilesFolder');
  {$EXTERNALSYM IPROPNAME_COMMONFILES_FOLDER}
  IPROPNAME_SYSTEM64_FOLDER     = TEXT('System64Folder');
  {$EXTERNALSYM IPROPNAME_SYSTEM64_FOLDER}
  IPROPNAME_PROGRAMFILES64_FOLDER = TEXT('ProgramFiles64Folder');
  {$EXTERNALSYM IPROPNAME_PROGRAMFILES64_FOLDER}
  IPROPNAME_COMMONFILES64_FOLDER = TEXT('CommonFiles64Folder');
  {$EXTERNALSYM IPROPNAME_COMMONFILES64_FOLDER}
  IPROPNAME_STARTMENU_FOLDER    = TEXT('StartMenuFolder');
  {$EXTERNALSYM IPROPNAME_STARTMENU_FOLDER}
  IPROPNAME_PROGRAMMENU_FOLDER  = TEXT('ProgramMenuFolder');
  {$EXTERNALSYM IPROPNAME_PROGRAMMENU_FOLDER}
  IPROPNAME_STARTUP_FOLDER      = TEXT('StartupFolder');
  {$EXTERNALSYM IPROPNAME_STARTUP_FOLDER}
  IPROPNAME_NETHOOD_FOLDER      = TEXT('NetHoodFolder');
  {$EXTERNALSYM IPROPNAME_NETHOOD_FOLDER}
  IPROPNAME_PERSONAL_FOLDER     = TEXT('PersonalFolder');
  {$EXTERNALSYM IPROPNAME_PERSONAL_FOLDER}
  IPROPNAME_SENDTO_FOLDER       = TEXT('SendToFolder');
  {$EXTERNALSYM IPROPNAME_SENDTO_FOLDER}
  IPROPNAME_DESKTOP_FOLDER      = TEXT('DesktopFolder');
  {$EXTERNALSYM IPROPNAME_DESKTOP_FOLDER}
  IPROPNAME_TEMPLATE_FOLDER     = TEXT('TemplateFolder');
  {$EXTERNALSYM IPROPNAME_TEMPLATE_FOLDER}
  IPROPNAME_FONTS_FOLDER        = TEXT('FontsFolder');
  {$EXTERNALSYM IPROPNAME_FONTS_FOLDER}
  IPROPNAME_FAVORITES_FOLDER    = TEXT('FavoritesFolder');
  {$EXTERNALSYM IPROPNAME_FAVORITES_FOLDER}
  IPROPNAME_RECENT_FOLDER       = TEXT('RecentFolder');
  {$EXTERNALSYM IPROPNAME_RECENT_FOLDER}
  IPROPNAME_APPDATA_FOLDER      = TEXT('AppDataFolder');
  {$EXTERNALSYM IPROPNAME_APPDATA_FOLDER}
  IPROPNAME_PRINTHOOD_FOLDER    = TEXT('PrintHoodFolder');
  {$EXTERNALSYM IPROPNAME_PRINTHOOD_FOLDER}
  IPROPNAME_ADMINTOOLS_FOLDER    = TEXT('AdminToolsFolder');
  {$EXTERNALSYM IPROPNAME_ADMINTOOLS_FOLDER}
  IPROPNAME_COMMONAPPDATA_FOLDER = TEXT('CommonAppDataFolder');
  {$EXTERNALSYM IPROPNAME_COMMONAPPDATA_FOLDER}
  IPROPNAME_LOCALAPPDATA_FOLDER  = TEXT('LocalAppDataFolder');
  {$EXTERNALSYM IPROPNAME_LOCALAPPDATA_FOLDER}
  IPROPNAME_MYPICTURES_FOLDER    = TEXT('MyPicturesFolder');
  {$EXTERNALSYM IPROPNAME_MYPICTURES_FOLDER}

// Feature/Component installation properties: set on command-line

  IPROPNAME_FEATUREADDLOCAL   = TEXT('ADDLOCAL');
  {$EXTERNALSYM IPROPNAME_FEATUREADDLOCAL}
  IPROPNAME_FEATUREADDSOURCE  = TEXT('ADDSOURCE');
  {$EXTERNALSYM IPROPNAME_FEATUREADDSOURCE}
  IPROPNAME_FEATUREADDDEFAULT = TEXT('ADDDEFAULT');
  {$EXTERNALSYM IPROPNAME_FEATUREADDDEFAULT}
  IPROPNAME_FEATUREREMOVE     = TEXT('REMOVE');
  {$EXTERNALSYM IPROPNAME_FEATUREREMOVE}
  IPROPNAME_FEATUREADVERTISE  = TEXT('ADVERTISE');
  {$EXTERNALSYM IPROPNAME_FEATUREADVERTISE}
  IPROPVALUE_FEATURE_ALL      = TEXT('ALL');
  {$EXTERNALSYM IPROPVALUE_FEATURE_ALL}

  IPROPNAME_COMPONENTADDLOCAL   = TEXT('COMPADDLOCAL');
  {$EXTERNALSYM IPROPNAME_COMPONENTADDLOCAL}
  IPROPNAME_COMPONENTADDSOURCE  = TEXT('COMPADDSOURCE');
  {$EXTERNALSYM IPROPNAME_COMPONENTADDSOURCE}
  IPROPNAME_COMPONENTADDDEFAULT = TEXT('COMPADDDEFAULT');
  {$EXTERNALSYM IPROPNAME_COMPONENTADDDEFAULT}

  IPROPNAME_FILEADDLOCAL   = TEXT('FILEADDLOCAL');
  {$EXTERNALSYM IPROPNAME_FILEADDLOCAL}
  IPROPNAME_FILEADDSOURCE  = TEXT('FILEADDSOURCE');
  {$EXTERNALSYM IPROPNAME_FILEADDSOURCE}
  IPROPNAME_FILEADDDEFAULT = TEXT('FILEADDDEFAULT');
  {$EXTERNALSYM IPROPNAME_FILEADDDEFAULT}

  IPROPNAME_REINSTALL          = TEXT('REINSTALL');
  {$EXTERNALSYM IPROPNAME_REINSTALL}
  IPROPNAME_REINSTALLMODE      = TEXT('REINSTALLMODE');
  {$EXTERNALSYM IPROPNAME_REINSTALLMODE}
  IPROPNAME_PROMPTROLLBACKCOST = TEXT('PROMPTROLLBACKCOST');
  {$EXTERNALSYM IPROPNAME_PROMPTROLLBACKCOST}
  IPROPVALUE_RBCOST_PROMPT     = TEXT('P');
  {$EXTERNALSYM IPROPVALUE_RBCOST_PROMPT}
  IPROPVALUE_RBCOST_SILENT     = TEXT('D');
  {$EXTERNALSYM IPROPVALUE_RBCOST_SILENT}
  IPROPVALUE_RBCOST_FAIL       = TEXT('F');
  {$EXTERNALSYM IPROPVALUE_RBCOST_FAIL}

// Property for custom actions to communicate

  IPROPNAME_CUSTOMACTIONDATA = TEXT('CustomActionData');
  {$EXTERNALSYM IPROPNAME_CUSTOMACTIONDATA}

//------------------------------------------------------------------------------
// TOP-LEVEL ACTION NAMES
//------------------------------------------------------------------------------

  IACTIONNAME_INSTALL         = TEXT('INSTALL');
  {$EXTERNALSYM IACTIONNAME_INSTALL}
  IACTIONNAME_ADVERTISE       = TEXT('ADVERTISE');
  {$EXTERNALSYM IACTIONNAME_ADVERTISE}
  IACTIONNAME_ADMIN           = TEXT('ADMIN');
  {$EXTERNALSYM IACTIONNAME_ADMIN}
  IACTIONNAME_SEQUENCE        = TEXT('SEQUENCE');
  {$EXTERNALSYM IACTIONNAME_SEQUENCE}
  IACTIONNAME_COLLECTUSERINFO = TEXT('CollectUserInfo');
  {$EXTERNALSYM IACTIONNAME_COLLECTUSERINFO}
  IACTIONNAME_FIRSTRUN        = TEXT('FirstRun');
  {$EXTERNALSYM IACTIONNAME_FIRSTRUN}

//------------------------------------------------------------------------------
//  SummaryInformation property stream property IDs
//------------------------------------------------------------------------------

// standard property definitions, from OLE2 documentation

  PID_DICTIONARY   = 0; // integer count + array of entries
  {$EXTERNALSYM PID_DICTIONARY}
  PID_CODEPAGE     = 1; // short integer
  {$EXTERNALSYM PID_CODEPAGE}
  PID_TITLE        = 2; // string
  {$EXTERNALSYM PID_TITLE}
  PID_SUBJECT      = 3; // string
  {$EXTERNALSYM PID_SUBJECT}
  PID_AUTHOR       = 4; // string
  {$EXTERNALSYM PID_AUTHOR}
  PID_KEYWORDS     = 5; // string
  {$EXTERNALSYM PID_KEYWORDS}
  PID_COMMENTS     = 6; // string
  {$EXTERNALSYM PID_COMMENTS}
  PID_TEMPLATE     = 7; // string
  {$EXTERNALSYM PID_TEMPLATE}
  PID_LASTAUTHOR   = 8; // string
  {$EXTERNALSYM PID_LASTAUTHOR}
  PID_REVNUMBER    = 9; // string
  {$EXTERNALSYM PID_REVNUMBER}
  PID_EDITTIME     = 10; // datatime
  {$EXTERNALSYM PID_EDITTIME}
  PID_LASTPRINTED  = 11; // datetime
  {$EXTERNALSYM PID_LASTPRINTED}
  PID_CREATE_DTM   = 12; // datetime
  {$EXTERNALSYM PID_CREATE_DTM}
  PID_LASTSAVE_DTM = 13; // datetime
  {$EXTERNALSYM PID_LASTSAVE_DTM}
  PID_PAGECOUNT    = 14; // integer
  {$EXTERNALSYM PID_PAGECOUNT}
  PID_WORDCOUNT    = 15; // integer
  {$EXTERNALSYM PID_WORDCOUNT}
  PID_CHARCOUNT    = 16; // integer
  {$EXTERNALSYM PID_CHARCOUNT}
  PID_THUMBNAIL    = 17; // clipboard format + metafile/bitmap (not supported)
  {$EXTERNALSYM PID_THUMBNAIL}
  PID_APPNAME      = 18; // string
  {$EXTERNALSYM PID_APPNAME}
  PID_SECURITY     = 19; // integer
  {$EXTERNALSYM PID_SECURITY}

// PIDs given specific meanings for Installer

  PID_MSIVERSION  = PID_PAGECOUNT; // integer, Installer version number (major*100+minor)
  {$EXTERNALSYM PID_MSIVERSION}
  PID_MSISOURCE   = PID_WORDCOUNT; // integer, type of file image, short/long, media/tree
  {$EXTERNALSYM PID_MSISOURCE}
  PID_MSIRESTRICT = PID_CHARCOUNT; // integer, transform restrictions
  {$EXTERNALSYM PID_MSIRESTRICT}

//------------------------------------------------------------------------------
// INSTALLER DATABASE INTEGER COLUMN DEFINITIONS
//------------------------------------------------------------------------------

// BBControl.Attributes
// Control.Attributes

type
  msidbControlAttributes = DWORD;
  {$EXTERNALSYM msidbControlAttributes}

const
  msidbControlAttributesVisible            = $00000001;
  {$EXTERNALSYM msidbControlAttributesVisible}
  msidbControlAttributesEnabled            = $00000002;
  {$EXTERNALSYM msidbControlAttributesEnabled}
  msidbControlAttributesSunken             = $00000004;
  {$EXTERNALSYM msidbControlAttributesSunken}
  msidbControlAttributesIndirect           = $00000008;
  {$EXTERNALSYM msidbControlAttributesIndirect}
  msidbControlAttributesInteger            = $00000010;
  {$EXTERNALSYM msidbControlAttributesInteger}
  msidbControlAttributesRTLRO              = $00000020;
  {$EXTERNALSYM msidbControlAttributesRTLRO}
  msidbControlAttributesRightAligned       = $00000040;
  {$EXTERNALSYM msidbControlAttributesRightAligned}
  msidbControlAttributesLeftScroll         = $00000080;
  {$EXTERNALSYM msidbControlAttributesLeftScroll}
  msidbControlAttributesBiDi               = msidbControlAttributesRTLRO or
    msidbControlAttributesRightAligned or msidbControlAttributesLeftScroll;
  {$EXTERNALSYM msidbControlAttributesBiDi}

  // Text controls

  msidbControlAttributesTransparent       = $00010000;
  {$EXTERNALSYM msidbControlAttributesTransparent}
  msidbControlAttributesNoPrefix          = $00020000;
  {$EXTERNALSYM msidbControlAttributesNoPrefix}
  msidbControlAttributesNoWrap            = $00040000;
  {$EXTERNALSYM msidbControlAttributesNoWrap}
  msidbControlAttributesFormatSize        = $00080000;
  {$EXTERNALSYM msidbControlAttributesFormatSize}
  msidbControlAttributesUsersLanguage     = $00100000;
  {$EXTERNALSYM msidbControlAttributesUsersLanguage}

  // Edit controls

  msidbControlAttributesMultiline         = $00010000;
  {$EXTERNALSYM msidbControlAttributesMultiline}
  msidbControlAttributesPasswordInput     = $00200000;
  {$EXTERNALSYM msidbControlAttributesPasswordInput}

  // ProgressBar controls

  msidbControlAttributesProgress95        = $00010000;
  {$EXTERNALSYM msidbControlAttributesProgress95}

  // VolumeSelectCombo and DirectoryCombo controls

  msidbControlAttributesRemovableVolume   = $00010000;
  {$EXTERNALSYM msidbControlAttributesRemovableVolume}
  msidbControlAttributesFixedVolume       = $00020000;
  {$EXTERNALSYM msidbControlAttributesFixedVolume}
  msidbControlAttributesRemoteVolume      = $00040000;
  {$EXTERNALSYM msidbControlAttributesRemoteVolume}
  msidbControlAttributesCDROMVolume       = $00080000;
  {$EXTERNALSYM msidbControlAttributesCDROMVolume}
  msidbControlAttributesRAMDiskVolume     = $00100000;
  {$EXTERNALSYM msidbControlAttributesRAMDiskVolume}
  msidbControlAttributesFloppyVolume      = $00200000;
  {$EXTERNALSYM msidbControlAttributesFloppyVolume}

  // VolumeCostList controls

  msidbControlShowRollbackCost            = $00400000;
  {$EXTERNALSYM msidbControlShowRollbackCost}

  // ListBox and ComboBox controls

  msidbControlAttributesSorted            = $00010000;
  {$EXTERNALSYM msidbControlAttributesSorted}
  msidbControlAttributesComboList         = $00020000;
  {$EXTERNALSYM msidbControlAttributesComboList}

  // picture button controls

  msidbControlAttributesImageHandle       = $00010000;
  {$EXTERNALSYM msidbControlAttributesImageHandle}
  msidbControlAttributesPushLike          = $00020000;
  {$EXTERNALSYM msidbControlAttributesPushLike}
  msidbControlAttributesBitmap            = $00040000;
  {$EXTERNALSYM msidbControlAttributesBitmap}
  msidbControlAttributesIcon              = $00080000;
  {$EXTERNALSYM msidbControlAttributesIcon}
  msidbControlAttributesFixedSize         = $00100000;
  {$EXTERNALSYM msidbControlAttributesFixedSize}
  msidbControlAttributesIconSize16        = $00200000;
  {$EXTERNALSYM msidbControlAttributesIconSize16}
  msidbControlAttributesIconSize32        = $00400000;
  {$EXTERNALSYM msidbControlAttributesIconSize32}
  msidbControlAttributesIconSize48        = $00600000;
  {$EXTERNALSYM msidbControlAttributesIconSize48}

  // RadioButton controls

  msidbControlAttributesHasBorder         = $01000000;
  {$EXTERNALSYM msidbControlAttributesHasBorder}

// CompLocator.Type
// IniLocator.Type
// RegLocator.Type

type
  msidbLocatorType = DWORD;
  {$EXTERNALSYM msidbLocatorType}

const
  msidbLocatorTypeDirectory = $00000000;
  {$EXTERNALSYM msidbLocatorTypeDirectory}
  msidbLocatorTypeFileName  = $00000001;
  {$EXTERNALSYM msidbLocatorTypeFileName}
  msidbLocatorTypeRawValue  = $00000002;
  {$EXTERNALSYM msidbLocatorTypeRawValue}
  msidbLocatorType64bit     = $00000010;
  {$EXTERNALSYM msidbLocatorType64bit}

// Component.Attributes

type
  msidbComponentAttributes = DWORD;
  {$EXTERNALSYM msidbComponentAttributes}

const
  msidbComponentAttributesLocalOnly          = $00000000;
  {$EXTERNALSYM msidbComponentAttributesLocalOnly}
  msidbComponentAttributesSourceOnly         = $00000001;
  {$EXTERNALSYM msidbComponentAttributesSourceOnly}
  msidbComponentAttributesOptional           = $00000002; // local or source
  {$EXTERNALSYM msidbComponentAttributesOptional}
  msidbComponentAttributesRegistryKeyPath    = $00000004; // KeyPath is key to Registry table
  {$EXTERNALSYM msidbComponentAttributesRegistryKeyPath}
  msidbComponentAttributesSharedDllRefCount  = $00000008; // increment SharedDll count
  {$EXTERNALSYM msidbComponentAttributesSharedDllRefCount}
  msidbComponentAttributesPermanent          = $00000010; // never uninstall component
  {$EXTERNALSYM msidbComponentAttributesPermanent}
  msidbComponentAttributesODBCDataSource     = $00000020; // KeyFile is key to ODBCDataSource table
  {$EXTERNALSYM msidbComponentAttributesODBCDataSource}
  msidbComponentAttributesTransitive         = $00000040; // Can transition to/from installed/uninstalled based on changing conditional
  {$EXTERNALSYM msidbComponentAttributesTransitive}
  msidbComponentAttributesNeverOverwrite     = $00000080; // dont stomp over existing component if key path exists (file/ regkey)
  {$EXTERNALSYM msidbComponentAttributesNeverOverwrite}
  msidbComponentAttributes64bit              = $00000100; // designates a 64-bit component; 32-bit if missing.
  {$EXTERNALSYM msidbComponentAttributes64bit}

// Assembly.Attributes

type
  msidbAssemblyAttributes = DWORD;
  {$EXTERNALSYM msidbAssemblyAttributes}

const
  msidbAssemblyAttributesURT   = $00000000;
  {$EXTERNALSYM msidbAssemblyAttributesURT}
  msidbAssemblyAttributesWin32 = $00000001;
  {$EXTERNALSYM msidbAssemblyAttributesWin32}

// CustomAction.Type

type
  msidbCustomActionType = DWORD;
  {$EXTERNALSYM msidbCustomActionType}

const

  // executable types

  msidbCustomActionTypeDll              = $00000001;  // Target = entry point name
  {$EXTERNALSYM msidbCustomActionTypeDll}
  msidbCustomActionTypeExe              = $00000002;  // Target = command line args
  {$EXTERNALSYM msidbCustomActionTypeExe}
  msidbCustomActionTypeTextData         = $00000003;  // Target = text string to be formatted and set into property
  {$EXTERNALSYM msidbCustomActionTypeTextData}
  msidbCustomActionTypeJScript          = $00000005;  // Target = entry point name, null if none to call
  {$EXTERNALSYM msidbCustomActionTypeJScript}
  msidbCustomActionTypeVBScript         = $00000006;  // Target = entry point name, null if none to call
  {$EXTERNALSYM msidbCustomActionTypeVBScript}
  msidbCustomActionTypeInstall          = $00000007;  // Target = property list for nested engine initialization
  {$EXTERNALSYM msidbCustomActionTypeInstall}

  // source of code

  msidbCustomActionTypeBinaryData       = $00000000;  // Source = Binary.Name, data stored in stream
  {$EXTERNALSYM msidbCustomActionTypeBinaryData}
  msidbCustomActionTypeSourceFile       = $00000010;  // Source = File.File, file part of installation
  {$EXTERNALSYM msidbCustomActionTypeSourceFile}
  msidbCustomActionTypeDirectory        = $00000020;  // Source = Directory.Directory, folder containing existing file
  {$EXTERNALSYM msidbCustomActionTypeDirectory}
  msidbCustomActionTypeProperty         = $00000030;  // Source = Property.Property, full path to executable
  {$EXTERNALSYM msidbCustomActionTypeProperty}

  // return processing                  // default is syncronous execution, process return code

  msidbCustomActionTypeContinue         = $00000040;  // ignore action return status, continue running
  {$EXTERNALSYM msidbCustomActionTypeContinue}
  msidbCustomActionTypeAsync            = $00000080;  // run asynchronously
  {$EXTERNALSYM msidbCustomActionTypeAsync}

  // execution scheduling flags               // default is execute whenever sequenced

  msidbCustomActionTypeFirstSequence    = $00000100;  // skip if UI sequence already run
  {$EXTERNALSYM msidbCustomActionTypeFirstSequence}
  msidbCustomActionTypeOncePerProcess   = $00000200;  // skip if UI sequence already run in same process
  {$EXTERNALSYM msidbCustomActionTypeOncePerProcess}
  msidbCustomActionTypeClientRepeat     = $00000300;  // run on client only if UI already run on client
  {$EXTERNALSYM msidbCustomActionTypeClientRepeat}
  msidbCustomActionTypeInScript         = $00000400;  // queue for execution within script
  {$EXTERNALSYM msidbCustomActionTypeInScript}
  msidbCustomActionTypeRollback         = $00000100;  // in conjunction with InScript: queue in Rollback script
  {$EXTERNALSYM msidbCustomActionTypeRollback}
  msidbCustomActionTypeCommit           = $00000200;  // in conjunction with InScript: run Commit ops from script on success
  {$EXTERNALSYM msidbCustomActionTypeCommit}

  // security context flag, default to impersonate as user, valid only if InScript

  msidbCustomActionTypeNoImpersonate    = $00000800;  // no impersonation, run in system context
  {$EXTERNALSYM msidbCustomActionTypeNoImpersonate}

//#if (_WIN32_MSI >= 150)
  msidbCustomActionTypeTSAware          = $00004000;  // impersonate for per-machine installs on TS machines
  {$EXTERNALSYM msidbCustomActionTypeTSAware}
//#endif // (_WIN32_MSI >= 150)

  // script requires 64bit process
  msidbCustomActionType64BitScript      = $00001000;  // script should run in 64bit process
  {$EXTERNALSYM msidbCustomActionType64BitScript}

  // don't record the contents of the Target field in the log file.
  msidbCustomActionTypeHideTarget       = $00002000;
  {$EXTERNALSYM msidbCustomActionTypeHideTarget}

// Dialog.Attributes

type
  msidbDialogAttributes = DWORD;
  {$EXTERNALSYM msidbDialogAttributes}

const
  msidbDialogAttributesVisible          = $00000001;
  {$EXTERNALSYM msidbDialogAttributesVisible}
  msidbDialogAttributesModal            = $00000002;
  {$EXTERNALSYM msidbDialogAttributesModal}
  msidbDialogAttributesMinimize         = $00000004;
  {$EXTERNALSYM msidbDialogAttributesMinimize}
  msidbDialogAttributesSysModal         = $00000008;
  {$EXTERNALSYM msidbDialogAttributesSysModal}
  msidbDialogAttributesKeepModeless     = $00000010;
  {$EXTERNALSYM msidbDialogAttributesKeepModeless}
  msidbDialogAttributesTrackDiskSpace   = $00000020;
  {$EXTERNALSYM msidbDialogAttributesTrackDiskSpace}
  msidbDialogAttributesUseCustomPalette = $00000040;
  {$EXTERNALSYM msidbDialogAttributesUseCustomPalette}
  msidbDialogAttributesRTLRO            = $00000080;
  {$EXTERNALSYM msidbDialogAttributesRTLRO}
  msidbDialogAttributesRightAligned     = $00000100;
  {$EXTERNALSYM msidbDialogAttributesRightAligned}
  msidbDialogAttributesLeftScroll       = $00000200;
  {$EXTERNALSYM msidbDialogAttributesLeftScroll}
  msidbDialogAttributesBiDi             = msidbDialogAttributesRTLRO or
    msidbDialogAttributesRightAligned or msidbDialogAttributesLeftScroll;
  {$EXTERNALSYM msidbDialogAttributesBiDi}
  msidbDialogAttributesError            = $00010000;
  {$EXTERNALSYM msidbDialogAttributesError}

// Feature.Attributes

type
  msidbFeatureAttributes = DWORD;
  {$EXTERNALSYM msidbFeatureAttributes}

const
  msidbFeatureAttributesFavorLocal             = $00000000;
  {$EXTERNALSYM msidbFeatureAttributesFavorLocal}
  msidbFeatureAttributesFavorSource            = $00000001;
  {$EXTERNALSYM msidbFeatureAttributesFavorSource}
  msidbFeatureAttributesFollowParent           = $00000002;
  {$EXTERNALSYM msidbFeatureAttributesFollowParent}
  msidbFeatureAttributesFavorAdvertise         = $00000004;
  {$EXTERNALSYM msidbFeatureAttributesFavorAdvertise}
  msidbFeatureAttributesDisallowAdvertise      = $00000008;
  {$EXTERNALSYM msidbFeatureAttributesDisallowAdvertise}
  msidbFeatureAttributesUIDisallowAbsent       = $00000010;
  {$EXTERNALSYM msidbFeatureAttributesUIDisallowAbsent}
  msidbFeatureAttributesNoUnsupportedAdvertise = $00000020;
  {$EXTERNALSYM msidbFeatureAttributesNoUnsupportedAdvertise}

// File.Attributes

type
  msidbFileAttributes = DWORD;
  {$EXTERNALSYM msidbFileAttributes}

const
  msidbFileAttributesReadOnly       = $00000001;
  {$EXTERNALSYM msidbFileAttributesReadOnly}
  msidbFileAttributesHidden         = $00000002;
  {$EXTERNALSYM msidbFileAttributesHidden}
  msidbFileAttributesSystem         = $00000004;
  {$EXTERNALSYM msidbFileAttributesSystem}
  msidbFileAttributesReserved0      = $00000008; // Internal use only - must be 0
  {$EXTERNALSYM msidbFileAttributesReserved0}
  msidbFileAttributesReserved1      = $00000040; // Internal use only - must be 0
  {$EXTERNALSYM msidbFileAttributesReserved1}
  msidbFileAttributesReserved2      = $00000080; // Internal use only - must be 0
  {$EXTERNALSYM msidbFileAttributesReserved2}
  msidbFileAttributesReserved3      = $00000100; // Internal use only - must be 0
  {$EXTERNALSYM msidbFileAttributesReserved3}
  msidbFileAttributesVital          = $00000200;
  {$EXTERNALSYM msidbFileAttributesVital}
  msidbFileAttributesChecksum       = $00000400;
  {$EXTERNALSYM msidbFileAttributesChecksum}
  msidbFileAttributesPatchAdded     = $00001000; // Internal use only - set by patches
  {$EXTERNALSYM msidbFileAttributesPatchAdded}
  msidbFileAttributesNoncompressed  = $00002000;
  {$EXTERNALSYM msidbFileAttributesNoncompressed}
  msidbFileAttributesCompressed     = $00004000;
  {$EXTERNALSYM msidbFileAttributesCompressed}
  msidbFileAttributesReserved4      = $00008000; // Internal use only - must be 0
  {$EXTERNALSYM msidbFileAttributesReserved4}

// IniFile.Action
// RemoveIniFile.Action

type
  msidbIniFileAction = DWORD;
  {$EXTERNALSYM msidbIniFileAction}

const
  msidbIniFileActionAddLine    = $00000000;
  {$EXTERNALSYM msidbIniFileActionAddLine}
  msidbIniFileActionCreateLine = $00000001;
  {$EXTERNALSYM msidbIniFileActionCreateLine}
  msidbIniFileActionRemoveLine = $00000002;
  {$EXTERNALSYM msidbIniFileActionRemoveLine}
  msidbIniFileActionAddTag     = $00000003;
  {$EXTERNALSYM msidbIniFileActionAddTag}
  msidbIniFileActionRemoveTag  = $00000004;
  {$EXTERNALSYM msidbIniFileActionRemoveTag}

// MoveFile.Options

type
  msidbMoveFileOptions = DWORD;
  {$EXTERNALSYM msidbMoveFileOptions}

const
  msidbMoveFileOptionsMove = $00000001;
  {$EXTERNALSYM msidbMoveFileOptionsMove}

// ODBCDataSource.Registration

type
  msidbODBCDataSourceRegistration = DWORD;
  {$EXTERNALSYM msidbODBCDataSourceRegistration}

const
  msidbODBCDataSourceRegistrationPerMachine  = $00000000;
  {$EXTERNALSYM msidbODBCDataSourceRegistrationPerMachine}
  msidbODBCDataSourceRegistrationPerUser     = $00000001;
  {$EXTERNALSYM msidbODBCDataSourceRegistrationPerUser}

// Class.Attributes

type
  msidbClassAttributes = DWORD;
  {$EXTERNALSYM msidbClassAttributes}

const
  msidbClassAttributesRelativePath  = $00000001;
  {$EXTERNALSYM msidbClassAttributesRelativePath}

// Patch.Attributes

type
  msidbPatchAttributes = DWORD;
  {$EXTERNALSYM msidbPatchAttributes}

const
  msidbPatchAttributesNonVital = $00000001;
  {$EXTERNALSYM msidbPatchAttributesNonVital}

// Registry.Root
// RegLocator.Root
// RemoveRegistry.Root

type
  msidbRegistryRoot = DWORD;
  {$EXTERNALSYM msidbRegistryRoot}

const
  msidbRegistryRootClassesRoot  = 0;
  {$EXTERNALSYM msidbRegistryRootClassesRoot}
  msidbRegistryRootCurrentUser  = 1;
  {$EXTERNALSYM msidbRegistryRootCurrentUser}
  msidbRegistryRootLocalMachine = 2;
  {$EXTERNALSYM msidbRegistryRootLocalMachine}
  msidbRegistryRootUsers        = 3;
  {$EXTERNALSYM msidbRegistryRootUsers}

// RemoveFile.InstallMode

type
  msidbRemoveFileInstallMode = DWORD;
  {$EXTERNALSYM msidbRemoveFileInstallMode}

const
  msidbRemoveFileInstallModeOnInstall = $00000001;
  {$EXTERNALSYM msidbRemoveFileInstallModeOnInstall}
  msidbRemoveFileInstallModeOnRemove  = $00000002;
  {$EXTERNALSYM msidbRemoveFileInstallModeOnRemove}
  msidbRemoveFileInstallModeOnBoth    = $00000003;
  {$EXTERNALSYM msidbRemoveFileInstallModeOnBoth}

// ServiceControl.Event

type
  msidbServiceControlEvent = DWORD;
  {$EXTERNALSYM msidbServiceControlEvent}

const
  msidbServiceControlEventStart             = $00000001;
  {$EXTERNALSYM msidbServiceControlEventStart}
  msidbServiceControlEventStop              = $00000002;
  {$EXTERNALSYM msidbServiceControlEventStop}
  msidbServiceControlEventDelete            = $00000008;
  {$EXTERNALSYM msidbServiceControlEventDelete}
  msidbServiceControlEventUninstallStart    = $00000010;
  {$EXTERNALSYM msidbServiceControlEventUninstallStart}
  msidbServiceControlEventUninstallStop     = $00000020;
  {$EXTERNALSYM msidbServiceControlEventUninstallStop}
  msidbServiceControlEventUninstallDelete   = $00000080;
  {$EXTERNALSYM msidbServiceControlEventUninstallDelete}

// ServiceInstall.ErrorControl

type
  msidbServiceInstallErrorControl = DWORD;
  {$EXTERNALSYM msidbServiceInstallErrorControl}

const
  msidbServiceInstallErrorControlVital = $00008000;
  {$EXTERNALSYM msidbServiceInstallErrorControlVital}

// TextStyle.StyleBits

type
  msidbTextStyleStyleBits = DWORD;
  {$EXTERNALSYM msidbTextStyleStyleBits}

const
  msidbTextStyleStyleBitsBold         = $00000001;
  {$EXTERNALSYM msidbTextStyleStyleBitsBold}
  msidbTextStyleStyleBitsItalic       = $00000002;
  {$EXTERNALSYM msidbTextStyleStyleBitsItalic}
  msidbTextStyleStyleBitsUnderline    = $00000004;
  {$EXTERNALSYM msidbTextStyleStyleBitsUnderline}
  msidbTextStyleStyleBitsStrike       = $00000008;
  {$EXTERNALSYM msidbTextStyleStyleBitsStrike}

// Upgrade.Attributes

type
  msidbUpgradeAttributes = DWORD;
  {$EXTERNALSYM msidbUpgradeAttributes}

const
  msidbUpgradeAttributesMigrateFeatures     = $00000001;
  {$EXTERNALSYM msidbUpgradeAttributesMigrateFeatures}
  msidbUpgradeAttributesOnlyDetect          = $00000002;
  {$EXTERNALSYM msidbUpgradeAttributesOnlyDetect}
  msidbUpgradeAttributesIgnoreRemoveFailure = $00000004;
  {$EXTERNALSYM msidbUpgradeAttributesIgnoreRemoveFailure}
  msidbUpgradeAttributesVersionMinInclusive = $00000100;
  {$EXTERNALSYM msidbUpgradeAttributesVersionMinInclusive}
  msidbUpgradeAttributesVersionMaxInclusive = $00000200;
  {$EXTERNALSYM msidbUpgradeAttributesVersionMaxInclusive}
  msidbUpgradeAttributesLanguagesExclusive  = $00000400;
  {$EXTERNALSYM msidbUpgradeAttributesLanguagesExclusive}

//------------------------------------------------------------------------------
// SUMMARY INFORMATION PROPERTY DEFINITIONS
//------------------------------------------------------------------------------

type
  msidbSumInfoSourceType = DWORD;
  {$EXTERNALSYM msidbSumInfoSourceType}

const
  msidbSumInfoSourceTypeSFN            = $00000001;  // source uses short filenames
  {$EXTERNALSYM msidbSumInfoSourceTypeSFN}
  msidbSumInfoSourceTypeCompressed     = $00000002;  // source is compressed
  {$EXTERNALSYM msidbSumInfoSourceTypeCompressed}
  msidbSumInfoSourceTypeAdminImage     = $00000004;  // source is an admin image
  {$EXTERNALSYM msidbSumInfoSourceTypeAdminImage}

implementation

end.
