~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to fpcsrc/packages/base/winunits/jwamsiquery.pas

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{******************************************************************************}
 
2
{                                                                              }
 
3
{ Windows Installer API interface Unit for Object Pascal                       }
 
4
{                                                                              }
 
5
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
 
6
{ Corporation. All Rights Reserved.                                            }
 
7
{                                                                              }
 
8
{ The original file is: msiquery.h, released June 2000. The original Pascal    }
 
9
{ code is: MsiQuery.pas, released June 2001. The initial developer of the      }
 
10
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl).               }
 
11
{                                                                              }
 
12
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
 
13
{ Marcel van Brakel. All Rights Reserved.                                      }
 
14
{                                                                              }
 
15
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
 
16
{                                                                              }
 
17
{ You may retrieve the latest version of this file at the Project JEDI         }
 
18
{ APILIB home page, located at http://jedi-apilib.sourceforge.net              }
 
19
{                                                                              }
 
20
{ The contents of this file are used with permission, subject to the Mozilla   }
 
21
{ Public License Version 1.1 (the "License"); you may not use this file except }
 
22
{ in compliance with the License. You may obtain a copy of the License at      }
 
23
{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
 
24
{                                                                              }
 
25
{ Software distributed under the License is distributed on an "AS IS" basis,   }
 
26
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
 
27
{ the specific language governing rights and limitations under the License.    }
 
28
{                                                                              }
 
29
{ Alternatively, the contents of this file may be used under the terms of the  }
 
30
{ GNU Lesser General Public License (the  "LGPL License"), in which case the   }
 
31
{ provisions of the LGPL License are applicable instead of those above.        }
 
32
{ If you wish to allow use of your version of this file only under the terms   }
 
33
{ of the LGPL License and not to allow others to use your version of this file }
 
34
{ under the MPL, indicate your decision by deleting  the provisions above and  }
 
35
{ replace  them with the notice and other provisions required by the LGPL      }
 
36
{ License.  If you do not delete the provisions above, a recipient may use     }
 
37
{ your version of this file under either the MPL or the LGPL License.          }
 
38
{                                                                              }
 
39
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
 
40
{                                                                              }
 
41
{******************************************************************************}
 
42
 
 
43
// $Id: JwaMsiQuery.pas,v 1.9 2005/09/06 16:36:50 marquardt Exp $
 
44
 
 
45
unit JwaMsiQuery;
 
46
 
 
47
{$WEAKPACKAGEUNIT}
 
48
 
 
49
{$HPPEMIT ''}
 
50
{$HPPEMIT '#include "msiquery.h"'}
 
51
{$HPPEMIT ''}
 
52
 
 
53
{$I jediapilib.inc}
 
54
 
 
55
interface
 
56
 
 
57
uses
 
58
  JwaMsi, JwaWindows;
 
59
 
 
60
(*****************************************************************************\
 
61
*                                                                             *
 
62
* MsiQuery.h - Interface to running installer for custom actions and tools    *
 
63
*                                                                             *
 
64
* Version 1.0 - 1.2                                                           *
 
65
*                                                                             *
 
66
* NOTES:  All buffers sizes are TCHAR count, null included only on input      *
 
67
*         Return argument pointers may be null if not interested in value     *
 
68
*         Returned handles of all types must be closed: MsiCloseHandle(h)     *
 
69
*         Functions with UINT return type return a system error code          *
 
70
*         Designated functions will set or clear the last error record,       *
 
71
*         which is then accessible with MsiGetLastErrorRecord. However,       *
 
72
*         the following argument errors do not register an error record:      *
 
73
*         ERROR_INVALID_HANDLE, ERROR_INVALID_PARAMETER, ERROR_MORE_DATA.     *
 
74
*                                                                             *
 
75
* Copyright (c) 1999-2000, Microsoft Corp.      All rights reserved.          *
 
76
*                                                                             *
 
77
\*****************************************************************************)
 
78
 
 
79
const
 
80
  MSI_NULL_INTEGER = DWORD($80000000);  // integer value reserved for null
 
81
  {$EXTERNALSYM MSI_NULL_INTEGER}
 
82
 
 
83
// MsiOpenDatabase persist predefine values, otherwise output database path is used
 
84
 
 
85
  MSIDBOPEN_READONLY     = LPCTSTR(0);  // database open read-only, no persistent changes
 
86
  {$EXTERNALSYM MSIDBOPEN_READONLY}
 
87
  MSIDBOPEN_TRANSACT     = LPCTSTR(1);  // database read/write in transaction mode
 
88
  {$EXTERNALSYM MSIDBOPEN_TRANSACT}
 
89
  MSIDBOPEN_DIRECT       = LPCTSTR(2);  // database direct read/write without transaction
 
90
  {$EXTERNALSYM MSIDBOPEN_DIRECT}
 
91
  MSIDBOPEN_CREATE       = LPCTSTR(3);  // create new database, transact mode read/write
 
92
  {$EXTERNALSYM MSIDBOPEN_CREATE}
 
93
  MSIDBOPEN_CREATEDIRECT = LPCTSTR(4);  // create new database, direct mode read/write
 
94
  {$EXTERNALSYM MSIDBOPEN_CREATEDIRECT}
 
95
 
 
96
  MSIDBOPEN_PATCHFILE    = 32 div SizeOf(TCHAR); // add flag to indicate patch file
 
97
 
 
98
  MSIDBSTATE_ERROR    = DWORD(-1);  // invalid database handle
 
99
  {$EXTERNALSYM MSIDBSTATE_ERROR}
 
100
  MSIDBSTATE_READ     =  0;  // database open read-only, no persistent changes
 
101
  {$EXTERNALSYM MSIDBSTATE_READ}
 
102
  MSIDBSTATE_WRITE    =  1;  // database readable and updatable
 
103
  {$EXTERNALSYM MSIDBSTATE_WRITE}
 
104
 
 
105
type
 
106
  MSIDBSTATE = DWORD;
 
107
  {$EXTERNALSYM MSIDBSTATE}
 
108
  TMsiDbState = MSIDBSTATE;
 
109
 
 
110
const
 
111
  MSIMODIFY_SEEK             = DWORD(-1);  // reposition to current record primary key
 
112
  {$EXTERNALSYM MSIMODIFY_SEEK}
 
113
  MSIMODIFY_REFRESH          = 0;  // refetch current record data
 
114
  {$EXTERNALSYM MSIMODIFY_REFRESH}
 
115
  MSIMODIFY_INSERT           = 1;  // insert new record, fails if matching key exists
 
116
  {$EXTERNALSYM MSIMODIFY_INSERT}
 
117
  MSIMODIFY_UPDATE           = 2;  // update existing non-key data of fetched record
 
118
  {$EXTERNALSYM MSIMODIFY_UPDATE}
 
119
  MSIMODIFY_ASSIGN           = 3;  // insert record, replacing any existing record
 
120
  {$EXTERNALSYM MSIMODIFY_ASSIGN}
 
121
  MSIMODIFY_REPLACE          = 4;  // update record, delete old if primary key edit
 
122
  {$EXTERNALSYM MSIMODIFY_REPLACE}
 
123
  MSIMODIFY_MERGE            = 5;  // fails if record with duplicate key not identical
 
124
  {$EXTERNALSYM MSIMODIFY_MERGE}
 
125
  MSIMODIFY_DELETE           = 6;  // remove row referenced by this record from table
 
126
  {$EXTERNALSYM MSIMODIFY_DELETE}
 
127
  MSIMODIFY_INSERT_TEMPORARY = 7;  // insert a temporary record
 
128
  {$EXTERNALSYM MSIMODIFY_INSERT_TEMPORARY}
 
129
  MSIMODIFY_VALIDATE         = 8;  // validate a fetched record
 
130
  {$EXTERNALSYM MSIMODIFY_VALIDATE}
 
131
  MSIMODIFY_VALIDATE_NEW     = 9;  // validate a new record
 
132
  {$EXTERNALSYM MSIMODIFY_VALIDATE_NEW}
 
133
  MSIMODIFY_VALIDATE_FIELD   = 10; // validate field(s) of an incomplete record
 
134
  {$EXTERNALSYM MSIMODIFY_VALIDATE_FIELD}
 
135
  MSIMODIFY_VALIDATE_DELETE  = 11; // validate before deleting record
 
136
  {$EXTERNALSYM MSIMODIFY_VALIDATE_DELETE}
 
137
 
 
138
type
 
139
  MSIMODIFY = DWORD;
 
140
  {$EXTERNALSYM MSIMODIFY}
 
141
  TMsiModify = MSIMODIFY;
 
142
 
 
143
const
 
144
  MSICOLINFO_NAMES = 0;  // return column names
 
145
  {$EXTERNALSYM MSICOLINFO_NAMES}
 
146
  MSICOLINFO_TYPES = 1;  // return column definitions, datatype code followed by width
 
147
  {$EXTERNALSYM MSICOLINFO_TYPES}
 
148
 
 
149
type
 
150
  MSICOLINFO = DWORD;
 
151
  {$EXTERNALSYM MSICOLINFO}
 
152
  TMsiColInfo = MSICOLINFO;
 
153
 
 
154
const
 
155
  MSICONDITION_FALSE = 0;  // expression evaluates to False
 
156
  {$EXTERNALSYM MSICONDITION_FALSE}
 
157
  MSICONDITION_TRUE  = 1;  // expression evaluates to True
 
158
  {$EXTERNALSYM MSICONDITION_TRUE}
 
159
  MSICONDITION_NONE  = 2;  // no expression present
 
160
  {$EXTERNALSYM MSICONDITION_NONE}
 
161
  MSICONDITION_ERROR = 3;  // syntax error in expression
 
162
  {$EXTERNALSYM MSICONDITION_ERROR}
 
163
 
 
164
type
 
165
  MSICONDITION = DWORD;
 
166
  {$EXTERNALSYM MSICONDITION}
 
167
  TMsiCondition = MSICONDITION;
 
168
 
 
169
const
 
170
  MSICOSTTREE_SELFONLY = 0;
 
171
  {$EXTERNALSYM MSICOSTTREE_SELFONLY}
 
172
  MSICOSTTREE_CHILDREN = 1;
 
173
  {$EXTERNALSYM MSICOSTTREE_CHILDREN}
 
174
  MSICOSTTREE_PARENTS  = 2;
 
175
  {$EXTERNALSYM MSICOSTTREE_PARENTS}
 
176
  MSICOSTTREE_RESERVED = 3;  // Reserved for future use
 
177
  {$EXTERNALSYM MSICOSTTREE_RESERVED}
 
178
 
 
179
type
 
180
  MSICOSTTREE = DWORD;
 
181
  {$EXTERNALSYM MSICOSTTREE}
 
182
  TMsiCostTree = MSICOSTTREE;
 
183
 
 
184
const
 
185
  MSIDBERROR_INVALIDARG        = DWORD(-3); //  invalid argument
 
186
  {$EXTERNALSYM MSIDBERROR_INVALIDARG}
 
187
  MSIDBERROR_MOREDATA          = DWORD(-2); //  buffer too small
 
188
  {$EXTERNALSYM MSIDBERROR_MOREDATA}
 
189
  MSIDBERROR_FUNCTIONERROR     = DWORD(-1); //  function error
 
190
  {$EXTERNALSYM MSIDBERROR_FUNCTIONERROR}
 
191
  MSIDBERROR_NOERROR           = 0;  //  no error
 
192
  {$EXTERNALSYM MSIDBERROR_NOERROR}
 
193
  MSIDBERROR_DUPLICATEKEY      = 1;  //  new record duplicates primary keys of existing record in table
 
194
  {$EXTERNALSYM MSIDBERROR_DUPLICATEKEY}
 
195
  MSIDBERROR_REQUIRED          = 2;  //  non-nullable column, no null values allowed
 
196
  {$EXTERNALSYM MSIDBERROR_REQUIRED}
 
197
  MSIDBERROR_BADLINK           = 3;  //  corresponding record in foreign table not found
 
198
  {$EXTERNALSYM MSIDBERROR_BADLINK}
 
199
  MSIDBERROR_OVERFLOW          = 4;  //  data greater than maximum value allowed
 
200
  {$EXTERNALSYM MSIDBERROR_OVERFLOW}
 
201
  MSIDBERROR_UNDERFLOW         = 5;  //  data less than minimum value allowed
 
202
  {$EXTERNALSYM MSIDBERROR_UNDERFLOW}
 
203
  MSIDBERROR_NOTINSET          = 6;  //  data not a member of the values permitted in the set
 
204
  {$EXTERNALSYM MSIDBERROR_NOTINSET}
 
205
  MSIDBERROR_BADVERSION        = 7;  //  invalid version string
 
206
  {$EXTERNALSYM MSIDBERROR_BADVERSION}
 
207
  MSIDBERROR_BADCASE           = 8;  //  invalid case, must be all upper-case or all lower-case
 
208
  {$EXTERNALSYM MSIDBERROR_BADCASE}
 
209
  MSIDBERROR_BADGUID           = 9;  //  invalid GUID
 
210
  {$EXTERNALSYM MSIDBERROR_BADGUID}
 
211
  MSIDBERROR_BADWILDCARD       = 10; //  invalid wildcardfilename or use of wildcards
 
212
  {$EXTERNALSYM MSIDBERROR_BADWILDCARD}
 
213
  MSIDBERROR_BADIDENTIFIER     = 11; //  bad identifier
 
214
  {$EXTERNALSYM MSIDBERROR_BADIDENTIFIER}
 
215
  MSIDBERROR_BADLANGUAGE       = 12; //  bad language Id(s)
 
216
  {$EXTERNALSYM MSIDBERROR_BADLANGUAGE}
 
217
  MSIDBERROR_BADFILENAME       = 13; //  bad filename
 
218
  {$EXTERNALSYM MSIDBERROR_BADFILENAME}
 
219
  MSIDBERROR_BADPATH           = 14; //  bad path
 
220
  {$EXTERNALSYM MSIDBERROR_BADPATH}
 
221
  MSIDBERROR_BADCONDITION      = 15; //  bad conditional statement
 
222
  {$EXTERNALSYM MSIDBERROR_BADCONDITION}
 
223
  MSIDBERROR_BADFORMATTED      = 16; //  bad format string
 
224
  {$EXTERNALSYM MSIDBERROR_BADFORMATTED}
 
225
  MSIDBERROR_BADTEMPLATE       = 17; //  bad template string
 
226
  {$EXTERNALSYM MSIDBERROR_BADTEMPLATE}
 
227
  MSIDBERROR_BADDEFAULTDIR     = 18; //  bad string in DefaultDir column of Directory table
 
228
  {$EXTERNALSYM MSIDBERROR_BADDEFAULTDIR}
 
229
  MSIDBERROR_BADREGPATH        = 19; //  bad registry path string
 
230
  {$EXTERNALSYM MSIDBERROR_BADREGPATH}
 
231
  MSIDBERROR_BADCUSTOMSOURCE   = 20; //  bad string in CustomSource column of CustomAction table
 
232
  {$EXTERNALSYM MSIDBERROR_BADCUSTOMSOURCE}
 
233
  MSIDBERROR_BADPROPERTY       = 21; //  bad property string
 
234
  {$EXTERNALSYM MSIDBERROR_BADPROPERTY}
 
235
  MSIDBERROR_MISSINGDATA       = 22; //  _Validation table missing reference to column
 
236
  {$EXTERNALSYM MSIDBERROR_MISSINGDATA}
 
237
  MSIDBERROR_BADCATEGORY       = 23; //  Category column of _Validation table for column is invalid
 
238
  {$EXTERNALSYM MSIDBERROR_BADCATEGORY}
 
239
  MSIDBERROR_BADKEYTABLE       = 24; //  table in KeyTable column of _Validation table could not be found/loaded
 
240
  {$EXTERNALSYM MSIDBERROR_BADKEYTABLE}
 
241
  MSIDBERROR_BADMAXMINVALUES   = 25; //  value in MaxValue column of _Validation table is less than value in MinValue column
 
242
  {$EXTERNALSYM MSIDBERROR_BADMAXMINVALUES}
 
243
  MSIDBERROR_BADCABINET        = 26; //  bad cabinet name
 
244
  {$EXTERNALSYM MSIDBERROR_BADCABINET}
 
245
  MSIDBERROR_BADSHORTCUT       = 27; //  bad shortcut target
 
246
  {$EXTERNALSYM MSIDBERROR_BADSHORTCUT}
 
247
  MSIDBERROR_STRINGOVERFLOW    = 28; //  string overflow (greater than length allowed in column def)
 
248
  {$EXTERNALSYM MSIDBERROR_STRINGOVERFLOW}
 
249
  MSIDBERROR_BADLOCALIZEATTRIB = 29; //  invalid localization attribute (primary keys cannot be localized)
 
250
  {$EXTERNALSYM MSIDBERROR_BADLOCALIZEATTRIB}
 
251
 
 
252
type
 
253
  MSIDBERROR = DWORD;
 
254
  {$EXTERNALSYM MSIDBERROR}
 
255
  TMsiDbError = MSIDBERROR;
 
256
 
 
257
const
 
258
  MSIRUNMODE_ADMIN           =  0; // admin mode install, else product install
 
259
  {$EXTERNALSYM MSIRUNMODE_ADMIN}
 
260
  MSIRUNMODE_ADVERTISE       =  1; // installing advertisements, else installing or updating product
 
261
  {$EXTERNALSYM MSIRUNMODE_ADVERTISE}
 
262
  MSIRUNMODE_MAINTENANCE     =  2; // modifying an existing installation, else new installation
 
263
  {$EXTERNALSYM MSIRUNMODE_MAINTENANCE}
 
264
  MSIRUNMODE_ROLLBACKENABLED =  3; // rollback is enabled
 
265
  {$EXTERNALSYM MSIRUNMODE_ROLLBACKENABLED}
 
266
  MSIRUNMODE_LOGENABLED      =  4; // log file active, enabled prior to install session
 
267
  {$EXTERNALSYM MSIRUNMODE_LOGENABLED}
 
268
  MSIRUNMODE_OPERATIONS      =  5; // spooling execute operations, else in determination phase
 
269
  {$EXTERNALSYM MSIRUNMODE_OPERATIONS}
 
270
  MSIRUNMODE_REBOOTATEND     =  6; // reboot needed after successful installation (settable)
 
271
  {$EXTERNALSYM MSIRUNMODE_REBOOTATEND}
 
272
  MSIRUNMODE_REBOOTNOW       =  7; // reboot needed to continue installation (settable)
 
273
  {$EXTERNALSYM MSIRUNMODE_REBOOTNOW}
 
274
  MSIRUNMODE_CABINET         =  8; // installing files from cabinets and files using Media table
 
275
  {$EXTERNALSYM MSIRUNMODE_CABINET}
 
276
  MSIRUNMODE_SOURCESHORTNAMES=  9; // source LongFileNames suppressed via PID_MSISOURCE summary property
 
277
  {$EXTERNALSYM MSIRUNMODE_SOURCESHORTNAMES}
 
278
  MSIRUNMODE_TARGETSHORTNAMES= 10; // target LongFileNames suppressed via SHORTFILENAMES property
 
279
  {$EXTERNALSYM MSIRUNMODE_TARGETSHORTNAMES}
 
280
  MSIRUNMODE_RESERVED11      = 11; // future use
 
281
  {$EXTERNALSYM MSIRUNMODE_RESERVED11}
 
282
  MSIRUNMODE_WINDOWS9X       = 12; // operating systems is Windows9?, else Windows NT
 
283
  {$EXTERNALSYM MSIRUNMODE_WINDOWS9X}
 
284
  MSIRUNMODE_ZAWENABLED      = 13; // operating system supports demand installation
 
285
  {$EXTERNALSYM MSIRUNMODE_ZAWENABLED}
 
286
  MSIRUNMODE_RESERVED14      = 14; // future use
 
287
  {$EXTERNALSYM MSIRUNMODE_RESERVED14}
 
288
  MSIRUNMODE_RESERVED15      = 15; // future use
 
289
  {$EXTERNALSYM MSIRUNMODE_RESERVED15}
 
290
  MSIRUNMODE_SCHEDULED       = 16; // custom action call from install script execution
 
291
  {$EXTERNALSYM MSIRUNMODE_SCHEDULED}
 
292
  MSIRUNMODE_ROLLBACK        = 17; // custom action call from rollback execution script
 
293
  {$EXTERNALSYM MSIRUNMODE_ROLLBACK}
 
294
  MSIRUNMODE_COMMIT          = 18; // custom action call from commit execution script
 
295
  {$EXTERNALSYM MSIRUNMODE_COMMIT}
 
296
 
 
297
type
 
298
  MSIRUNMODE = DWORD;
 
299
  {$EXTERNALSYM MSIRUNMODE}
 
300
  TMsiRunMode = MSIRUNMODE;
 
301
 
 
302
const
 
303
  INSTALLMESSAGE_TYPEMASK = DWORD($FF000000);  // mask for type code
 
304
  {$EXTERNALSYM INSTALLMESSAGE_TYPEMASK}
 
305
 
 
306
// Note: INSTALLMESSAGE_ERROR, INSTALLMESSAGE_WARNING, INSTALLMESSAGE_USER are to or'd
 
307
// with a message box style to indicate the buttons to display and return:
 
308
// MB_OK,MB_OKCANCEL,MB_ABORTRETRYIGNORE,MB_YESNOCANCEL,MB_YESNO,MB_RETRYCANCEL
 
309
// the default button (MB_DEFBUTTON1 is normal default):
 
310
// MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3
 
311
// and optionally an icon style:
 
312
// MB_ICONERROR, MB_ICONQUESTION, MB_ICONWARNING, MB_ICONINFORMATION
 
313
 
 
314
const
 
315
  MSITRANSFORM_ERROR_ADDEXISTINGROW   = $00000001;
 
316
  {$EXTERNALSYM MSITRANSFORM_ERROR_ADDEXISTINGROW}
 
317
  MSITRANSFORM_ERROR_DELMISSINGROW    = $00000002;
 
318
  {$EXTERNALSYM MSITRANSFORM_ERROR_DELMISSINGROW}
 
319
  MSITRANSFORM_ERROR_ADDEXISTINGTABLE = $00000004;
 
320
  {$EXTERNALSYM MSITRANSFORM_ERROR_ADDEXISTINGTABLE}
 
321
  MSITRANSFORM_ERROR_DELMISSINGTABLE  = $00000008;
 
322
  {$EXTERNALSYM MSITRANSFORM_ERROR_DELMISSINGTABLE}
 
323
  MSITRANSFORM_ERROR_UPDATEMISSINGROW = $00000010;
 
324
  {$EXTERNALSYM MSITRANSFORM_ERROR_UPDATEMISSINGROW}
 
325
  MSITRANSFORM_ERROR_CHANGECODEPAGE   = $00000020;
 
326
  {$EXTERNALSYM MSITRANSFORM_ERROR_CHANGECODEPAGE}
 
327
  MSITRANSFORM_ERROR_VIEWTRANSFORM    = $00000100;
 
328
  {$EXTERNALSYM MSITRANSFORM_ERROR_VIEWTRANSFORM}
 
329
 
 
330
type
 
331
  MSITRANSFORM_ERROR = DWORD;
 
332
  {$EXTERNALSYM MSITRANSFORM_ERROR}
 
333
  TMsiTransformError = MSITRANSFORM_ERROR;
 
334
 
 
335
const
 
336
  MSITRANSFORM_VALIDATE_LANGUAGE                   = $00000001;
 
337
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_LANGUAGE}
 
338
  MSITRANSFORM_VALIDATE_PRODUCT                    = $00000002;
 
339
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_PRODUCT}
 
340
  MSITRANSFORM_VALIDATE_PLATFORM                   = $00000004;
 
341
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_PLATFORM}
 
342
  MSITRANSFORM_VALIDATE_MAJORVERSION               = $00000008;
 
343
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_MAJORVERSION}
 
344
  MSITRANSFORM_VALIDATE_MINORVERSION               = $00000010;
 
345
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_MINORVERSION}
 
346
  MSITRANSFORM_VALIDATE_UPDATEVERSION              = $00000020;
 
347
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_UPDATEVERSION}
 
348
  MSITRANSFORM_VALIDATE_NEWLESSBASEVERSION         = $00000040;
 
349
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_NEWLESSBASEVERSION}
 
350
  MSITRANSFORM_VALIDATE_NEWLESSEQUALBASEVERSION    = $00000080;
 
351
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_NEWLESSEQUALBASEVERSION}
 
352
  MSITRANSFORM_VALIDATE_NEWEQUALBASEVERSION        = $00000100;
 
353
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_NEWEQUALBASEVERSION}
 
354
  MSITRANSFORM_VALIDATE_NEWGREATEREQUALBASEVERSION = $00000200;
 
355
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_NEWGREATEREQUALBASEVERSION}
 
356
  MSITRANSFORM_VALIDATE_NEWGREATERBASEVERSION      = $00000400;
 
357
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_NEWGREATERBASEVERSION}
 
358
  MSITRANSFORM_VALIDATE_UPGRADECODE                = $00000800;
 
359
  {$EXTERNALSYM MSITRANSFORM_VALIDATE_UPGRADECODE}
 
360
 
 
361
type
 
362
  MSITRANSFORM_VALIDATE = DWORD;
 
363
  {$EXTERNALSYM MSITRANSFORM_VALIDATE}
 
364
  TMsiTransformValidate = MSITRANSFORM_VALIDATE;
 
365
 
 
366
// -----------------------------------------------------------------------------
 
367
// Installer database access functions
 
368
// -----------------------------------------------------------------------------
 
369
 
 
370
// Prepare a database query, creating a view object
 
371
// Returns ERROR_SUCCESS if successful, and the view handle is returned,
 
372
// else ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE, ERROR_BAD_QUERY_SYNTAX, ERROR_GEN_FAILURE
 
373
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
374
 
 
375
function MsiDatabaseOpenViewA(hDatabase: MSIHANDLE; szQuery: LPCSTR; var phView: MSIHANDLE): UINT; stdcall;
 
376
{$EXTERNALSYM MsiDatabaseOpenViewA}
 
377
function MsiDatabaseOpenViewW(hDatabase: MSIHANDLE; szQuery: LPCWSTR; var phView: MSIHANDLE): UINT; stdcall;
 
378
{$EXTERNALSYM MsiDatabaseOpenViewW}
 
379
function MsiDatabaseOpenView(hDatabase: MSIHANDLE; szQuery: LPCTSTR; var phView: MSIHANDLE): UINT; stdcall;
 
380
{$EXTERNALSYM MsiDatabaseOpenView}
 
381
 
 
382
// Returns the MSIDBERROR enum and name of the column corresponding to the error
 
383
// Similar to a GetLastError function, but for the view. NOT the same as MsiGetLastErrorRecord
 
384
// Returns errors of MsiViewModify.
 
385
 
 
386
function MsiViewGetErrorA(hView: MSIHANDLE; szColumnNameBuffer: LPSTR;
 
387
  var pcchBuf: DWORD): MSIDBERROR; stdcall;
 
388
{$EXTERNALSYM MsiViewGetErrorA}
 
389
function MsiViewGetErrorW(hView: MSIHANDLE; szColumnNameBuffer: LPWSTR;
 
390
  var pcchBuf: DWORD): MSIDBERROR; stdcall;
 
391
{$EXTERNALSYM MsiViewGetErrorW}
 
392
function MsiViewGetError(hView: MSIHANDLE; szColumnNameBuffer: LPTSTR;
 
393
  var pcchBuf: DWORD): MSIDBERROR; stdcall;
 
394
{$EXTERNALSYM MsiViewGetError}
 
395
 
 
396
// Exectute the view query, supplying parameters as required
 
397
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE, ERROR_GEN_FAILURE
 
398
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
399
 
 
400
function MsiViewExecute(hView: MSIHANDLE; hRecord: MSIHANDLE): UINT; stdcall;
 
401
{$EXTERNALSYM MsiViewExecute}
 
402
 
 
403
// Fetch the next sequential record from the view
 
404
// Result is ERROR_SUCCESS if a row is found, and its handle is returned
 
405
// else ERROR_NO_MORE_ITEMS if no records remain, and a null handle is returned
 
406
// else result is error: ERROR_INVALID_HANDLE_STATE, ERROR_INVALID_HANDLE, ERROR_GEN_FAILURE
 
407
 
 
408
function MsiViewFetch(hView: MSIHANDLE; var phRecord: MSIHANDLE): UINT; stdcall;
 
409
{$EXTERNALSYM MsiViewFetch}
 
410
 
 
411
// Modify a database record, parameters must match types in query columns
 
412
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE, ERROR_GEN_FAILURE, ERROR_ACCESS_DENIED
 
413
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
414
 
 
415
function MsiViewModify(hView: MSIHANDLE; eModifyMode: MSIMODIFY; hRecord: MSIHANDLE): UINT; stdcall;
 
416
{$EXTERNALSYM MsiViewModify}
 
417
 
 
418
// Return the column names or specifications for the current view
 
419
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_PARAMETER, or ERROR_INVALID_HANDLE_STATE
 
420
 
 
421
function MsiViewGetColumnInfo(hView: MSIHANDLE; eColumnInfo: MSICOLINFO;
 
422
  var phRecord: MSIHANDLE): UINT; stdcall;
 
423
{$EXTERNALSYM MsiViewGetColumnInfo}
 
424
 
 
425
// Release the result set for an executed view, to allow re-execution
 
426
// Only needs to be called if not all records have been fetched
 
427
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE
 
428
 
 
429
function MsiViewClose(hView: MSIHANDLE): UINT; stdcall;
 
430
{$EXTERNALSYM MsiViewClose}
 
431
 
 
432
// Return a record containing the names of all primary key columns for a given table
 
433
// Returns an MSIHANDLE for a record containing the name of each column.
 
434
// The field count of the record corresponds to the number of primary key columns.
 
435
// Field [0] of the record contains the table name.
 
436
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_TABLE
 
437
 
 
438
function MsiDatabaseGetPrimaryKeysA(hDatabase: MSIHANDLE; szTableName: LPCSTR;
 
439
  var phRecord: MSIHANDLE): UINT; stdcall;
 
440
{$EXTERNALSYM MsiDatabaseGetPrimaryKeysA}
 
441
function MsiDatabaseGetPrimaryKeysW(hDatabase: MSIHANDLE; szTableName: LPCWSTR;
 
442
  var phRecord: MSIHANDLE): UINT; stdcall;
 
443
{$EXTERNALSYM MsiDatabaseGetPrimaryKeysW}
 
444
function MsiDatabaseGetPrimaryKeys(hDatabase: MSIHANDLE; szTableName: LPCTSTR;
 
445
  var phRecord: MSIHANDLE): UINT; stdcall;
 
446
{$EXTERNALSYM MsiDatabaseGetPrimaryKeys}
 
447
 
 
448
// Return an enum defining the state of the table (temporary, unknown, or persistent).
 
449
// Returns MSICONDITION_ERROR, MSICONDITION_FALSE, MSICONDITION_TRUE, MSICONDITION_NONE
 
450
 
 
451
function MsiDatabaseIsTablePersistentA(hDatabase: MSIHANDLE; szTableName: LPCSTR): MSICONDITION; stdcall;
 
452
{$EXTERNALSYM MsiDatabaseIsTablePersistentA}
 
453
function MsiDatabaseIsTablePersistentW(hDatabase: MSIHANDLE; szTableName: LPCWSTR): MSICONDITION; stdcall;
 
454
{$EXTERNALSYM MsiDatabaseIsTablePersistentW}
 
455
function MsiDatabaseIsTablePersistent(hDatabase: MSIHANDLE; szTableName: LPCTSTR): MSICONDITION; stdcall;
 
456
{$EXTERNALSYM MsiDatabaseIsTablePersistent}
 
457
 
 
458
// --------------------------------------------------------------------------
 
459
// Summary information stream management functions
 
460
// --------------------------------------------------------------------------
 
461
 
 
462
// Integer Property IDs:    1, 14, 15, 16, 19
 
463
// DateTime Property IDs:   10, 11, 12, 13
 
464
// Text Property IDs:       2, 3, 4, 5, 6, 7, 8, 9, 18
 
465
// Unsupported Propery IDs: 0 (PID_DICTIONARY), 17 (PID_THUMBNAIL)
 
466
 
 
467
// Obtain a handle for the _SummaryInformation stream for an MSI database
 
468
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
469
 
 
470
function MsiGetSummaryInformationA(hDatabase: MSIHANDLE; szDatabasePath: LPCSTR;
 
471
  uiUpdateCount: UINT; var phSummaryInfo: MSIHANDLE): UINT; stdcall;
 
472
{$EXTERNALSYM MsiGetSummaryInformationA}
 
473
function MsiGetSummaryInformationW(hDatabase: MSIHANDLE; szDatabasePath: LPCWSTR;
 
474
  uiUpdateCount: UINT; var phSummaryInfo: MSIHANDLE): UINT; stdcall;
 
475
{$EXTERNALSYM MsiGetSummaryInformationW}
 
476
function MsiGetSummaryInformation(hDatabase: MSIHANDLE; szDatabasePath: LPCTSTR;
 
477
  uiUpdateCount: UINT; var phSummaryInfo: MSIHANDLE): UINT; stdcall;
 
478
{$EXTERNALSYM MsiGetSummaryInformation}
 
479
 
 
480
// Obtain the number of existing properties in the SummaryInformation stream
 
481
 
 
482
function MsiSummaryInfoGetPropertyCount(hSummaryInfo: MSIHANDLE; var puiPropertyCount: UINT): UINT; stdcall;
 
483
{$EXTERNALSYM MsiSummaryInfoGetPropertyCount}
 
484
 
 
485
// Set a single summary information property
 
486
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_UNKNOWN_PROPERTY
 
487
 
 
488
function MsiSummaryInfoSetPropertyA(hSummaryInfo: MSIHANDLE; uiProperty: UINT;
 
489
  uiDataType: UINT; iValue: Integer; const pftValue: FILETIME; szValue: LPCSTR): UINT; stdcall;
 
490
{$EXTERNALSYM MsiSummaryInfoSetPropertyA}
 
491
function MsiSummaryInfoSetPropertyW(hSummaryInfo: MSIHANDLE; uiProperty: UINT;
 
492
  uiDataType: UINT; iValue: Integer; const pftValue: FILETIME; szValue: LPCWSTR): UINT; stdcall;
 
493
{$EXTERNALSYM MsiSummaryInfoSetPropertyW}
 
494
function MsiSummaryInfoSetProperty(hSummaryInfo: MSIHANDLE; uiProperty: UINT;
 
495
  uiDataType: UINT; iValue: Integer; const pftValue: FILETIME; szValue: LPCTSTR): UINT; stdcall;
 
496
{$EXTERNALSYM MsiSummaryInfoSetProperty}
 
497
 
 
498
// Get a single property from the summary information
 
499
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_UNKNOWN_PROPERTY
 
500
 
 
501
function MsiSummaryInfoGetPropertyA(hSummaryInfo: MSIHANDLE; uiProperty: UINT;
 
502
  var puiDataType: UINT; var piValue: Integer; var pftValue: FILETIME; szValueBuf: LPSTR;
 
503
  var pcchValueBuf: DWORD): UINT; stdcall;
 
504
{$EXTERNALSYM MsiSummaryInfoGetPropertyA}
 
505
function MsiSummaryInfoGetPropertyW(hSummaryInfo: MSIHANDLE; uiProperty: UINT;
 
506
  var puiDataType: UINT; var piValue: Integer; var pftValue: FILETIME; szValueBuf: LPWSTR;
 
507
  var pcchValueBuf: DWORD): UINT; stdcall;
 
508
{$EXTERNALSYM MsiSummaryInfoGetPropertyW}
 
509
function MsiSummaryInfoGetProperty(hSummaryInfo: MSIHANDLE; uiProperty: UINT;
 
510
  var puiDataType: UINT; var piValue: Integer; var pftValue: FILETIME; szValueBuf: LPTSTR;
 
511
  var pcchValueBuf: DWORD): UINT; stdcall;
 
512
{$EXTERNALSYM MsiSummaryInfoGetProperty}
 
513
 
 
514
// Write back changed information to summary information stream
 
515
 
 
516
function MsiSummaryInfoPersist(hSummaryInfo: MSIHANDLE): UINT; stdcall;
 
517
{$EXTERNALSYM MsiSummaryInfoPersist}
 
518
 
 
519
// --------------------------------------------------------------------------
 
520
// Installer database management functions - not used by custom actions
 
521
// --------------------------------------------------------------------------
 
522
 
 
523
// Open an installer database, specifying the persistance mode, which is a pointer.
 
524
// Predefined persist values are reserved pointer values, requiring pointer arithmetic.
 
525
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
526
 
 
527
function MsiOpenDatabaseA(szDatabasePath: LPCSTR; szPersist: LPCSTR;
 
528
  var phDatabase: MSIHANDLE): UINT; stdcall;
 
529
{$EXTERNALSYM MsiOpenDatabaseA}
 
530
function MsiOpenDatabaseW(szDatabasePath: LPCWSTR; szPersist: LPCWSTR;
 
531
  var phDatabase: MSIHANDLE): UINT; stdcall;
 
532
{$EXTERNALSYM MsiOpenDatabaseW}
 
533
function MsiOpenDatabase(szDatabasePath: LPCTSTR; szPersist: LPCTSTR;
 
534
  var phDatabase: MSIHANDLE): UINT; stdcall;
 
535
{$EXTERNALSYM MsiOpenDatabase}
 
536
 
 
537
// Import an MSI text archive table into an open database
 
538
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
539
 
 
540
function MsiDatabaseImportA(hDatabase: MSIHANDLE; szFolderPath: LPCSTR;
 
541
  szFileName: LPCSTR): UINT; stdcall;
 
542
{$EXTERNALSYM MsiDatabaseImportA}
 
543
function MsiDatabaseImportW(hDatabase: MSIHANDLE; szFolderPath: LPCWSTR;
 
544
  szFileName: LPCWSTR): UINT; stdcall;
 
545
{$EXTERNALSYM MsiDatabaseImportW}
 
546
function MsiDatabaseImport(hDatabase: MSIHANDLE; szFolderPath: LPCTSTR;
 
547
  szFileName: LPCTSTR): UINT; stdcall;
 
548
{$EXTERNALSYM MsiDatabaseImport}
 
549
 
 
550
// Export an MSI table from an open database to a text archive file
 
551
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
552
 
 
553
function MsiDatabaseExportA(hDatabase: MSIHANDLE; szTableName: LPCSTR;
 
554
  szFolderPath: LPCSTR; szFileName: LPCSTR): UINT; stdcall;
 
555
{$EXTERNALSYM MsiDatabaseExportA}
 
556
function MsiDatabaseExportW(hDatabase: MSIHANDLE; szTableName: LPCWSTR;
 
557
  szFolderPath: LPCWSTR; szFileName: LPCWSTR): UINT; stdcall;
 
558
{$EXTERNALSYM MsiDatabaseExportW}
 
559
function MsiDatabaseExport(hDatabase: MSIHANDLE; szTableName: LPCTSTR;
 
560
  szFolderPath: LPCTSTR; szFileName: LPCTSTR): UINT; stdcall;
 
561
{$EXTERNALSYM MsiDatabaseExport}
 
562
 
 
563
// Merge two database together, allowing duplicate rows
 
564
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
565
 
 
566
function MsiDatabaseMergeA(hDatabase: MSIHANDLE; hDatabaseMerge: MSIHANDLE;
 
567
  szTableName: LPCSTR): UINT; stdcall;
 
568
{$EXTERNALSYM MsiDatabaseMergeA}
 
569
function MsiDatabaseMergeW(hDatabase: MSIHANDLE; hDatabaseMerge: MSIHANDLE;
 
570
  szTableName: LPCWSTR): UINT; stdcall;
 
571
{$EXTERNALSYM MsiDatabaseMergeW}
 
572
function MsiDatabaseMerge(hDatabase: MSIHANDLE; hDatabaseMerge: MSIHANDLE;
 
573
  szTableName: LPCTSTR): UINT; stdcall;
 
574
{$EXTERNALSYM MsiDatabaseMerge}
 
575
 
 
576
// Generate a transform file of differences between two databases
 
577
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
578
 
 
579
function MsiDatabaseGenerateTransformA(hDatabase: MSIHANDLE; hDatabaseReference: MSIHANDLE;
 
580
  szTransformFile: LPCSTR; iReserved1: Integer; iReserved2: Integer): UINT; stdcall;
 
581
{$EXTERNALSYM MsiDatabaseGenerateTransformA}
 
582
function MsiDatabaseGenerateTransformW(hDatabase: MSIHANDLE; hDatabaseReference: MSIHANDLE;
 
583
  szTransformFile: LPCWSTR; iReserved1: Integer; iReserved2: Integer): UINT; stdcall;
 
584
{$EXTERNALSYM MsiDatabaseGenerateTransformW}
 
585
function MsiDatabaseGenerateTransform(hDatabase: MSIHANDLE; hDatabaseReference: MSIHANDLE;
 
586
  szTransformFile: LPCTSTR; iReserved1: Integer; iReserved2: Integer): UINT; stdcall;
 
587
{$EXTERNALSYM MsiDatabaseGenerateTransform}
 
588
 
 
589
// Apply a transform file containing database difference
 
590
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
591
 
 
592
function MsiDatabaseApplyTransformA(hDatabase: MSIHANDLE; szTransformFile: LPCSTR;
 
593
  iErrorConditions: Integer): UINT; stdcall;
 
594
{$EXTERNALSYM MsiDatabaseApplyTransformA}
 
595
function MsiDatabaseApplyTransformW(hDatabase: MSIHANDLE; szTransformFile: LPCWSTR;
 
596
  iErrorConditions: Integer): UINT; stdcall;
 
597
{$EXTERNALSYM MsiDatabaseApplyTransformW}
 
598
function MsiDatabaseApplyTransform(hDatabase: MSIHANDLE; szTransformFile: LPCTSTR;
 
599
  iErrorConditions: Integer): UINT; stdcall;
 
600
{$EXTERNALSYM MsiDatabaseApplyTransform}
 
601
 
 
602
// Create summary information of existing transform to include validation and error conditions
 
603
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
604
 
 
605
function MsiCreateTransformSummaryInfoA(hDatabase: MSIHANDLE; hDatabaseReference: MSIHANDLE;
 
606
  szTransformFile: LPCSTR; iErrorConditions: Integer; iValidation: Integer): UINT; stdcall;
 
607
{$EXTERNALSYM MsiCreateTransformSummaryInfoA}
 
608
function MsiCreateTransformSummaryInfoW(hDatabase: MSIHANDLE; hDatabaseReference: MSIHANDLE;
 
609
  szTransformFile: LPCWSTR; iErrorConditions: Integer; iValidation: Integer): UINT; stdcall;
 
610
{$EXTERNALSYM MsiCreateTransformSummaryInfoW}
 
611
function MsiCreateTransformSummaryInfo(hDatabase: MSIHANDLE; hDatabaseReference: MSIHANDLE;
 
612
  szTransformFile: LPCTSTR; iErrorConditions: Integer; iValidation: Integer): UINT; stdcall;
 
613
{$EXTERNALSYM MsiCreateTransformSummaryInfo}
 
614
 
 
615
// Write out all persistent table data, ignored if database opened read-only
 
616
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
617
 
 
618
function MsiDatabaseCommit(hDatabase: MSIHANDLE): UINT; stdcall;
 
619
{$EXTERNALSYM MsiDatabaseCommit}
 
620
 
 
621
// Return the update state of a database
 
622
 
 
623
function MsiGetDatabaseState(hDatabase: MSIHANDLE): MSIDBSTATE; stdcall;
 
624
{$EXTERNALSYM MsiGetDatabaseState}
 
625
 
 
626
// --------------------------------------------------------------------------
 
627
// Record object functions
 
628
// --------------------------------------------------------------------------
 
629
 
 
630
// Create a new record object with the requested number of fields
 
631
// Field 0, not included in count, is used for format strings and op codes
 
632
// All fields are initialized to null
 
633
// Returns a handle to the created record, or 0 if memory could not be allocated
 
634
 
 
635
function MsiCreateRecord(cParams: UINT): MSIHANDLE; stdcall;
 
636
{$EXTERNALSYM MsiCreateRecord}
 
637
 
 
638
// Report whether a record field is NULL
 
639
// Returns TRUE if the field is null or does not exist
 
640
// Returns FALSE if the field contains data, or the handle is invalid
 
641
 
 
642
function MsiRecordIsNull(hRecord: MSIHANDLE; iField: UINT): BOOL; stdcall;
 
643
{$EXTERNALSYM MsiRecordIsNull}
 
644
 
 
645
// Return the length of a record field
 
646
// Returns 0 if field is NULL or non-existent
 
647
// Returns sizeof(Integer) if integer data
 
648
// Returns character count if string data (not counting null terminator)
 
649
// Returns bytes count if stream data
 
650
 
 
651
function MsiRecordDataSize(hRecord: MSIHANDLE; iField: UINT): UINT; stdcall;
 
652
{$EXTERNALSYM MsiRecordDataSize}
 
653
 
 
654
// Set a record field to an integer value
 
655
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_FIELD
 
656
 
 
657
function MsiRecordSetInteger(hRecord: MSIHANDLE; iField: UINT; iValue: Integer): UINT; stdcall;
 
658
{$EXTERNALSYM MsiRecordSetInteger}
 
659
 
 
660
// Copy a string into the designated field
 
661
// A null string pointer and an empty string both set the field to null
 
662
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_FIELD
 
663
 
 
664
function MsiRecordSetStringA(hRecord: MSIHANDLE; iField: UINT; szValue: LPCSTR): UINT; stdcall;
 
665
{$EXTERNALSYM MsiRecordSetStringA}
 
666
function MsiRecordSetStringW(hRecord: MSIHANDLE; iField: UINT; szValue: LPCWSTR): UINT; stdcall;
 
667
{$EXTERNALSYM MsiRecordSetStringW}
 
668
function MsiRecordSetString(hRecord: MSIHANDLE; iField: UINT; szValue: LPCTSTR): UINT; stdcall;
 
669
{$EXTERNALSYM MsiRecordSetString}
 
670
 
 
671
// Return the integer value from a record field
 
672
// Returns the value MSI_NULL_INTEGER if the field is null
 
673
// or if the field is a string that cannot be converted to an integer
 
674
 
 
675
function MsiRecordGetInteger(hRecord: MSIHANDLE; iField: UINT): Integer; stdcall;
 
676
{$EXTERNALSYM MsiRecordGetInteger}
 
677
 
 
678
// Return the string value of a record field
 
679
// Integer fields will be converted to a string
 
680
// Null and non-existent fields will report a value of 0
 
681
// Fields containing stream data will return ERROR_INVALID_DATATYPE
 
682
// Returns ERROR_SUCCESS, ERROR_MORE_DATA,
 
683
//         ERROR_INVALID_HANDLE, ERROR_INVALID_FIELD, ERROR_BAD_ARGUMENTS
 
684
 
 
685
function MsiRecordGetStringA(hRecord: MSIHANDLE; iField: UINT; szValueBuf: LPSTR;
 
686
  var pcchValueBuf: DWORD): UINT; stdcall;
 
687
{$EXTERNALSYM MsiRecordGetStringA}
 
688
function MsiRecordGetStringW(hRecord: MSIHANDLE; iField: UINT; szValueBuf: LPWSTR;
 
689
  var pcchValueBuf: DWORD): UINT; stdcall;
 
690
{$EXTERNALSYM MsiRecordGetStringW}
 
691
function MsiRecordGetString(hRecord: MSIHANDLE; iField: UINT; szValueBuf: LPTSTR;
 
692
  var pcchValueBuf: DWORD): UINT; stdcall;
 
693
{$EXTERNALSYM MsiRecordGetString}
 
694
 
 
695
// Returns the number of fields allocated in the record
 
696
// Does not count field 0, used for formatting and op codes
 
697
 
 
698
function MsiRecordGetFieldCount(hRecord: MSIHANDLE): UINT; stdcall;
 
699
{$EXTERNALSYM MsiRecordGetFieldCount}
 
700
 
 
701
// Set a record stream field from a file
 
702
// The contents of the specified file will be read into a stream object
 
703
// The stream will be persisted if the record is inserted into the database
 
704
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
705
 
 
706
function MsiRecordSetStreamA(hRecord: MSIHANDLE; iField: UINT; szFilePath: LPCSTR): UINT; stdcall;
 
707
{$EXTERNALSYM MsiRecordSetStreamA}
 
708
function MsiRecordSetStreamW(hRecord: MSIHANDLE; iField: UINT; szFilePath: LPCWSTR): UINT; stdcall;
 
709
{$EXTERNALSYM MsiRecordSetStreamW}
 
710
function MsiRecordSetStream(hRecord: MSIHANDLE; iField: UINT; szFilePath: LPCTSTR): UINT; stdcall;
 
711
{$EXTERNALSYM MsiRecordSetStream}
 
712
 
 
713
// Read bytes from a record stream field into a buffer
 
714
// Must set the in/out argument to the requested byte count to read
 
715
// The number of bytes transferred is returned through the argument
 
716
// If no more bytes are available, ERROR_SUCCESS is still returned
 
717
 
 
718
function MsiRecordReadStream(hRecord: MSIHANDLE; iField: UINT; szDataBuf: PChar;
 
719
  var pcbDataBuf: DWORD): UINT; stdcall;
 
720
{$EXTERNALSYM MsiRecordReadStream}
 
721
 
 
722
// Clears all data fields in a record to NULL
 
723
 
 
724
function MsiRecordClearData(hRecord: MSIHANDLE): UINT; stdcall;
 
725
{$EXTERNALSYM MsiRecordClearData}
 
726
 
 
727
// --------------------------------------------------------------------------
 
728
// Functions to access a running installation, called from custom actions
 
729
// The install handle is the single argument passed to custom actions
 
730
// --------------------------------------------------------------------------
 
731
 
 
732
// Return a handle to the database currently in use by this installer instance
 
733
 
 
734
function MsiGetActiveDatabase(hInstall: MSIHANDLE): MSIHANDLE; stdcall;
 
735
{$EXTERNALSYM MsiGetActiveDatabase}
 
736
 
 
737
// Set the value for an installer property
 
738
// If the property is not defined, it will be created
 
739
// If the value is null or an empty string, the property will be removed
 
740
// Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_BAD_ARGUMENTS
 
741
 
 
742
function MsiSetPropertyA(hInstall: MSIHANDLE; szName: LPCSTR; szValue: LPCSTR): UINT; stdcall;
 
743
{$EXTERNALSYM MsiSetPropertyA}
 
744
function MsiSetPropertyW(hInstall: MSIHANDLE; szName: LPCWSTR; szValue: LPCWSTR): UINT; stdcall;
 
745
{$EXTERNALSYM MsiSetPropertyW}
 
746
function MsiSetProperty(hInstall: MSIHANDLE; szName: LPCTSTR; szValue: LPCTSTR): UINT; stdcall;
 
747
{$EXTERNALSYM MsiSetProperty}
 
748
 
 
749
// Get the value for an installer property
 
750
// If the property is not defined, it is equivalent to a 0-length value, not error
 
751
// Returns ERROR_SUCCESS, ERROR_MORE_DATA, ERROR_INVALID_HANDLE, ERROR_BAD_ARGUMENTS
 
752
 
 
753
function MsiGetPropertyA(hInstall: MSIHANDLE; szName: LPCSTR; szValueBuf: LPSTR;
 
754
  var pcchValueBuf: DWORD): UINT; stdcall;
 
755
{$EXTERNALSYM MsiGetPropertyA}
 
756
function MsiGetPropertyW(hInstall: MSIHANDLE; szName: LPCWSTR; szValueBuf: LPWSTR;
 
757
  var pcchValueBuf: DWORD): UINT; stdcall;
 
758
{$EXTERNALSYM MsiGetPropertyW}
 
759
function MsiGetProperty(hInstall: MSIHANDLE; szName: LPCTSTR; szValueBuf: LPTSTR;
 
760
  var pcchValueBuf: DWORD): UINT; stdcall;
 
761
{$EXTERNALSYM MsiGetProperty}
 
762
 
 
763
// Return the numeric language for the currently running install
 
764
// Returns 0 if an install not running
 
765
 
 
766
function MsiGetLanguage(hInstall: MSIHANDLE): LANGID; stdcall;
 
767
{$EXTERNALSYM MsiGetLanguage}
 
768
 
 
769
// Return one of the boolean internal installer states
 
770
// Returns FALSE if the handle is not active or if the mode is not implemented
 
771
 
 
772
function MsiGetMode(hInstall: MSIHANDLE; eRunMode: MSIRUNMODE): BOOL; stdcall;
 
773
{$EXTERNALSYM MsiGetMode}
 
774
 
 
775
// Set an internal install session boolean mode - Note: most modes are read-only
 
776
// Returns ERROR_SUCCESS if the mode can be set to the desired state
 
777
// Returns ERROR_ACCESS_DENIED if the mode is not settable
 
778
// Returns ERROR_INVALID_HANDLE if the handle is not an active install session
 
779
 
 
780
function MsiSetMode(hInstall: MSIHANDLE; eRunMode: MSIRUNMODE; fState: BOOL): UINT; stdcall;
 
781
{$EXTERNALSYM MsiSetMode}
 
782
 
 
783
// Format record data using a format string containing field markers and/or properties
 
784
// Record field 0 must contain the format string
 
785
// Other fields must contain data that may be referenced by the format string.
 
786
 
 
787
function MsiFormatRecordA(hInstall: MSIHANDLE; hRecord: MSIHANDLE; szResultBuf: LPSTR;
 
788
  var pcchResultBuf: DWORD): UINT; stdcall;
 
789
{$EXTERNALSYM MsiFormatRecordA}
 
790
function MsiFormatRecordW(hInstall: MSIHANDLE; hRecord: MSIHANDLE; szResultBuf: LPWSTR;
 
791
  var pcchResultBuf: DWORD): UINT; stdcall;
 
792
{$EXTERNALSYM MsiFormatRecordW}
 
793
function MsiFormatRecord(hInstall: MSIHANDLE; hRecord: MSIHANDLE; szResultBuf: LPTSTR;
 
794
  var pcchResultBuf: DWORD): UINT; stdcall;
 
795
{$EXTERNALSYM MsiFormatRecord}
 
796
 
 
797
// Execute another action, either built-in, custom, or UI wizard
 
798
// Returns ERROR_FUNCTION_NOT_CALLED if action not found
 
799
// Returns ERROR_SUCCESS if action completed succesfully
 
800
// Returns ERROR_INSTALL_USEREXIT if user cancelled during action
 
801
// Returns ERROR_INSTALL_FAILURE if action failed
 
802
// Returns ERROR_INSTALL_SUSPEND if user suspended installation
 
803
// Returns ERROR_MORE_DATA if action wishes to skip remaining actions
 
804
// Returns ERROR_INVALID_HANDLE_STATE if install session not active
 
805
// Returns ERROR_INVALID_DATA if failure calling custom action
 
806
// Returns ERROR_INVALID_HANDLE or ERROR_INVALID_PARAMETER if arguments invalid
 
807
 
 
808
function MsiDoActionA(hInstall: MSIHANDLE; szAction: LPCSTR): UINT; stdcall;
 
809
{$EXTERNALSYM MsiDoActionA}
 
810
function MsiDoActionW(hInstall: MSIHANDLE; szAction: LPCWSTR): UINT; stdcall;
 
811
{$EXTERNALSYM MsiDoActionW}
 
812
function MsiDoAction(hInstall: MSIHANDLE; szAction: LPCTSTR): UINT; stdcall;
 
813
{$EXTERNALSYM MsiDoAction}
 
814
 
 
815
// Execute another action sequence, as descibed in the specified table
 
816
// Returns the same error codes as MsiDoAction
 
817
 
 
818
function MsiSequenceA(hInstall: MSIHANDLE; szTable: LPCSTR; iSequenceMode: Integer): UINT; stdcall;
 
819
{$EXTERNALSYM MsiSequenceA}
 
820
function MsiSequenceW(hInstall: MSIHANDLE; szTable: LPCWSTR; iSequenceMode: Integer): UINT; stdcall;
 
821
{$EXTERNALSYM MsiSequenceW}
 
822
function MsiSequence(hInstall: MSIHANDLE; szTable: LPCTSTR; iSequenceMode: Integer): UINT; stdcall;
 
823
{$EXTERNALSYM MsiSequence}
 
824
 
 
825
// Send an error record to the installer for processing.
 
826
// If field 0 (template) is not set, field 1 must be set to the error code,
 
827
//   corresponding the the error message in the Error database table,
 
828
//   and the message will be formatted using the template from the Error table
 
829
//   before passing it to the UI handler for display.
 
830
// Returns Win32 button codes: IDOK IDCANCEL IDABORT IDRETRY IDIGNORE IDYES IDNO
 
831
//   or 0 if no action taken, or -1 if invalid argument or handle
 
832
 
 
833
function MsiProcessMessage(hInstall: MSIHANDLE; eMessageType: INSTALLMESSAGE;
 
834
  hRecord: MSIHANDLE): Integer; stdcall;
 
835
{$EXTERNALSYM MsiProcessMessage}
 
836
 
 
837
// Evaluate a conditional expression containing property names and values
 
838
 
 
839
function MsiEvaluateConditionA(hInstall: MSIHANDLE; szCondition: LPCSTR): MSICONDITION; stdcall;
 
840
{$EXTERNALSYM MsiEvaluateConditionA}
 
841
function MsiEvaluateConditionW(hInstall: MSIHANDLE; szCondition: LPCWSTR): MSICONDITION; stdcall;
 
842
{$EXTERNALSYM MsiEvaluateConditionW}
 
843
function MsiEvaluateCondition(hInstall: MSIHANDLE; szCondition: LPCTSTR): MSICONDITION; stdcall;
 
844
{$EXTERNALSYM MsiEvaluateCondition}
 
845
 
 
846
// Get the installed state and requested action state of a feature
 
847
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
848
 
 
849
function MsiGetFeatureStateA(hInstall: MSIHANDLE; szFeature: LPCSTR;
 
850
  var piInstalled: INSTALLSTATE; var piAction: INSTALLSTATE): UINT; stdcall;
 
851
{$EXTERNALSYM MsiGetFeatureStateA}
 
852
function MsiGetFeatureStateW(hInstall: MSIHANDLE; szFeature: LPCWSTR;
 
853
  var piInstalled: INSTALLSTATE; var piAction: INSTALLSTATE): UINT; stdcall;
 
854
{$EXTERNALSYM MsiGetFeatureStateW}
 
855
function MsiGetFeatureState(hInstall: MSIHANDLE; szFeature: LPCTSTR;
 
856
  var piInstalled: INSTALLSTATE; var piAction: INSTALLSTATE): UINT; stdcall;
 
857
{$EXTERNALSYM MsiGetFeatureState}
 
858
 
 
859
// Request a feature to be set to a specified state
 
860
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
861
 
 
862
function MsiSetFeatureStateA(hInstall: MSIHANDLE; szFeature: LPCSTR;
 
863
  iState: INSTALLSTATE): UINT; stdcall;
 
864
{$EXTERNALSYM MsiSetFeatureStateA}
 
865
function MsiSetFeatureStateW(hInstall: MSIHANDLE; szFeature: LPCWSTR;
 
866
  iState: INSTALLSTATE): UINT; stdcall;
 
867
{$EXTERNALSYM MsiSetFeatureStateW}
 
868
function MsiSetFeatureState(hInstall: MSIHANDLE; szFeature: LPCTSTR;
 
869
  iState: INSTALLSTATE): UINT; stdcall;
 
870
{$EXTERNALSYM MsiSetFeatureState}
 
871
 
 
872
// Set the attribute bits of a specified feature at runtime.
 
873
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
874
 
 
875
function MsiSetFeatureAttributesA(hInstall: MSIHANDLE; szFeature: LPCSTR;
 
876
  dwAttributes: DWORD): UINT; stdcall;
 
877
{$EXTERNALSYM MsiSetFeatureAttributesA}
 
878
function MsiSetFeatureAttributesW(hInstall: MSIHANDLE; szFeature: LPCWSTR;
 
879
  dwAttributes: DWORD): UINT; stdcall;
 
880
{$EXTERNALSYM MsiSetFeatureAttributesW}
 
881
function MsiSetFeatureAttributes(hInstall: MSIHANDLE; szFeature: LPCTSTR;
 
882
  dwAttributes: DWORD): UINT; stdcall;
 
883
{$EXTERNALSYM MsiSetFeatureAttributes}
 
884
 
 
885
// Get the installed state and requested action state of a component
 
886
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
887
 
 
888
function MsiGetComponentStateA(hInstall: MSIHANDLE; szComponent: LPCSTR;
 
889
  var piInstalled: INSTALLSTATE; var piAction: INSTALLSTATE): UINT; stdcall;
 
890
{$EXTERNALSYM MsiGetComponentStateA}
 
891
function MsiGetComponentStateW(hInstall: MSIHANDLE; szComponent: LPCWSTR;
 
892
  var piInstalled: INSTALLSTATE; var piAction: INSTALLSTATE): UINT; stdcall;
 
893
{$EXTERNALSYM MsiGetComponentStateW}
 
894
function MsiGetComponentState(hInstall: MSIHANDLE; szComponent: LPCTSTR;
 
895
  var piInstalled: INSTALLSTATE; var piAction: INSTALLSTATE): UINT; stdcall;
 
896
{$EXTERNALSYM MsiGetComponentState}
 
897
 
 
898
// Request a component to be set to a specified state
 
899
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
900
 
 
901
function MsiSetComponentStateA(hInstall: MSIHANDLE; szComponent: LPCSTR;
 
902
  iState: INSTALLSTATE): UINT; stdcall;
 
903
{$EXTERNALSYM MsiSetComponentStateA}
 
904
function MsiSetComponentStateW(hInstall: MSIHANDLE; szComponent: LPCWSTR;
 
905
  iState: INSTALLSTATE): UINT; stdcall;
 
906
{$EXTERNALSYM MsiSetComponentStateW}
 
907
function MsiSetComponentState(hInstall: MSIHANDLE; szComponent: LPCTSTR;
 
908
  iState: INSTALLSTATE): UINT; stdcall;
 
909
{$EXTERNALSYM MsiSetComponentState}
 
910
 
 
911
// Return the disk cost for a feature and related features
 
912
// Can specify either current feature state or proposed state
 
913
// Can specify extent of related features to cost
 
914
// Note that adding costs for several features may produce an
 
915
// excessively large cost due to shared components and parents.
 
916
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
917
 
 
918
function MsiGetFeatureCostA(hInstall: MSIHANDLE; szFeature: LPCSTR;
 
919
  iCostTree: MSICOSTTREE; iState: INSTALLSTATE; var piCost: Integer): UINT; stdcall;
 
920
{$EXTERNALSYM MsiGetFeatureCostA}
 
921
function MsiGetFeatureCostW(hInstall: MSIHANDLE; szFeature: LPCWSTR;
 
922
  iCostTree: MSICOSTTREE; iState: INSTALLSTATE; var piCost: Integer): UINT; stdcall;
 
923
{$EXTERNALSYM MsiGetFeatureCostW}
 
924
function MsiGetFeatureCost(hInstall: MSIHANDLE; szFeature: LPCTSTR;
 
925
  iCostTree: MSICOSTTREE; iState: INSTALLSTATE; var piCost: Integer): UINT; stdcall;
 
926
{$EXTERNALSYM MsiGetFeatureCost}
 
927
 
 
928
// Enumerates the costs and temporary costs per drives for
 
929
// szComponent. If szComponent is set to NULL, it enumerates
 
930
// the above costs for the engine, per drives.
 
931
//
 
932
// The enumeration is 0-based, i.e. it returns the data for
 
933
// the first drive when called w/ dwIndex set to 0.
 
934
//
 
935
// Can specify either current feature state or proposed state.
 
936
//
 
937
// Execution of this function sets the error record, accessible
 
938
// via MsiGetLastErrorRecord.
 
939
 
 
940
function MsiEnumComponentCostsA(hInstall: MSIHANDLE; szComponent: LPCSTR; dwIndex: DWORD; iState: INSTALLSTATE;
 
941
  szDriveBuf: LPSTR; var pcchDriveBuf: DWORD; var piCost: INT; piTempCost: INT): UINT; stdcall;
 
942
{$EXTERNALSYM MsiEnumComponentCostsA}
 
943
function MsiEnumComponentCostsW(hInstall: MSIHANDLE; szComponent: LPCWSTR; dwIndex: DWORD; iState: INSTALLSTATE;
 
944
  szDriveBuf: LPWSTR; var pcchDriveBuf: DWORD; var piCost: INT; var piTempCost: INT): UINT; stdcall;
 
945
{$EXTERNALSYM MsiEnumComponentCostsW}
 
946
function MsiEnumComponentCosts(hInstall: MSIHANDLE; szComponent: LPCTSTR; dwIndex: DWORD; iState: INSTALLSTATE;
 
947
  szDriveBuf: LPTSTR; var pcchDriveBuf: DWORD; var piCost: INT; var piTempCost: INT): UINT; stdcall;
 
948
{$EXTERNALSYM MsiEnumComponentCosts}
 
949
 
 
950
// Set the install level for a full product installation (not a feature request)
 
951
// Setting the value to 0 initialized components and features to the default level
 
952
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
953
 
 
954
function MsiSetInstallLevel(hInstall: MSIHANDLE; iInstallLevel: Integer): UINT; stdcall;
 
955
{$EXTERNALSYM MsiSetInstallLevel}
 
956
 
 
957
// Get the valid install states for a feature, represented by bit flags
 
958
// For each valid install state, a bit is set of value: (1 << INSTALLSTATE)
 
959
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
960
 
 
961
function MsiGetFeatureValidStatesA(hInstall: MSIHANDLE; szFeature: LPCSTR;
 
962
  var dwInstallStates: DWORD): UINT; stdcall;
 
963
{$EXTERNALSYM MsiGetFeatureValidStatesA}
 
964
function MsiGetFeatureValidStatesW(hInstall: MSIHANDLE; szFeature: LPCWSTR;
 
965
  var dwInstallStates: DWORD): UINT; stdcall;
 
966
{$EXTERNALSYM MsiGetFeatureValidStatesW}
 
967
function MsiGetFeatureValidStates(hInstall: MSIHANDLE; szFeature: LPCTSTR;
 
968
  var dwInstallStates: DWORD): UINT; stdcall;
 
969
{$EXTERNALSYM MsiGetFeatureValidStates}
 
970
 
 
971
// Return the full source path for a folder in the Directory table
 
972
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
973
 
 
974
function MsiGetSourcePathA(hInstall: MSIHANDLE; szFolder: LPCSTR; szPathBuf: LPSTR;
 
975
  var pcchPathBuf: DWORD): UINT; stdcall;
 
976
{$EXTERNALSYM MsiGetSourcePathA}
 
977
function MsiGetSourcePathW(hInstall: MSIHANDLE; szFolder: LPCWSTR; szPathBuf: LPWSTR;
 
978
  var pcchPathBuf: DWORD): UINT; stdcall;
 
979
{$EXTERNALSYM MsiGetSourcePathW}
 
980
function MsiGetSourcePath(hInstall: MSIHANDLE; szFolder: LPCTSTR; szPathBuf: LPTSTR;
 
981
  var pcchPathBuf: DWORD): UINT; stdcall;
 
982
{$EXTERNALSYM MsiGetSourcePath}
 
983
 
 
984
// Return the full target path for a folder in the Directory table
 
985
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
986
 
 
987
function MsiGetTargetPathA(hInstall: MSIHANDLE; szFolder: LPCSTR;
 
988
  szPathBuf: LPSTR; var pcchPathBuf: DWORD): UINT; stdcall;
 
989
{$EXTERNALSYM MsiGetTargetPathA}
 
990
function MsiGetTargetPathW(hInstall: MSIHANDLE; szFolder: LPCWSTR;
 
991
  szPathBuf: LPWSTR; var pcchPathBuf: DWORD): UINT; stdcall;
 
992
{$EXTERNALSYM MsiGetTargetPathW}
 
993
function MsiGetTargetPath(hInstall: MSIHANDLE; szFolder: LPCTSTR;
 
994
  szPathBuf: LPTSTR; var pcchPathBuf: DWORD): UINT; stdcall;
 
995
{$EXTERNALSYM MsiGetTargetPath}
 
996
 
 
997
// Set the full target path for a folder in the Directory table
 
998
// Execution of this function sets the error record, accessible via MsiGetLastErrorRecord
 
999
 
 
1000
function MsiSetTargetPathA(hInstall: MSIHANDLE; szFolder: LPCSTR;
 
1001
  szFolderPath: LPCSTR): UINT; stdcall;
 
1002
{$EXTERNALSYM MsiSetTargetPathA}
 
1003
function MsiSetTargetPathW(hInstall: MSIHANDLE; szFolder: LPCWSTR;
 
1004
  szFolderPath: LPCWSTR): UINT; stdcall;
 
1005
{$EXTERNALSYM MsiSetTargetPathW}
 
1006
function MsiSetTargetPath(hInstall: MSIHANDLE; szFolder: LPCTSTR;
 
1007
  szFolderPath: LPCTSTR): UINT; stdcall;
 
1008
{$EXTERNALSYM MsiSetTargetPath}
 
1009
 
 
1010
// Check to see if sufficent disk space is present for the current installation
 
1011
// Returns ERROR_SUCCESS, ERROR_DISK_FULL, ERROR_INVALID_HANDLE_STATE, or ERROR_INVALID_HANDLE
 
1012
 
 
1013
function MsiVerifyDiskSpace(hInstall: MSIHANDLE): UINT; stdcall;
 
1014
{$EXTERNALSYM MsiVerifyDiskSpace}
 
1015
 
 
1016
// --------------------------------------------------------------------------
 
1017
// Functions for rendering UI dialogs from the database representations.
 
1018
// Purpose is for product development, not for use during installation.
 
1019
// --------------------------------------------------------------------------
 
1020
 
 
1021
// Enable UI in preview mode to facilitate authoring of UI dialogs.
 
1022
// The preview mode will end when the handle is closed.
 
1023
 
 
1024
function MsiEnableUIPreview(hDatabase: MSIHANDLE; var phPreview: MSIHANDLE): UINT; stdcall;
 
1025
{$EXTERNALSYM MsiEnableUIPreview}
 
1026
 
 
1027
// Display any UI dialog as modeless and inactive.
 
1028
// Supplying a null name will remove any current dialog.
 
1029
 
 
1030
function MsiPreviewDialogA(hPreview: MSIHANDLE; szDialogName: LPCSTR): UINT; stdcall;
 
1031
{$EXTERNALSYM MsiPreviewDialogA}
 
1032
function MsiPreviewDialogW(hPreview: MSIHANDLE; szDialogName: LPCWSTR): UINT; stdcall;
 
1033
{$EXTERNALSYM MsiPreviewDialogW}
 
1034
function MsiPreviewDialog(hPreview: MSIHANDLE; szDialogName: LPCTSTR): UINT; stdcall;
 
1035
{$EXTERNALSYM MsiPreviewDialog}
 
1036
 
 
1037
// Display a billboard within a host control in the displayed dialog.
 
1038
// Supplying a null billboard name will remove any billboard displayed.
 
1039
 
 
1040
function MsiPreviewBillboardA(hPreview: MSIHANDLE; szControlName: LPCSTR;
 
1041
  szBillboard: LPCSTR): UINT; stdcall;
 
1042
{$EXTERNALSYM MsiPreviewBillboardA}
 
1043
function MsiPreviewBillboardW(hPreview: MSIHANDLE; szControlName: LPCWSTR;
 
1044
  szBillboard: LPCWSTR): UINT; stdcall;
 
1045
{$EXTERNALSYM MsiPreviewBillboardW}
 
1046
function MsiPreviewBillboard(hPreview: MSIHANDLE; szControlName: LPCTSTR;
 
1047
  szBillboard: LPCTSTR): UINT; stdcall;
 
1048
{$EXTERNALSYM MsiPreviewBillboard}
 
1049
 
 
1050
// --------------------------------------------------------------------------
 
1051
// Error handling not associated with any particular object
 
1052
// --------------------------------------------------------------------------
 
1053
 
 
1054
// Return a record handle to the last function that generated an error record
 
1055
// Only specified functions will set the error record, or clear it if success
 
1056
// Field 1 of the record will contain the internal MSI error code
 
1057
// Other fields will contain data specific to the particular error
 
1058
// The error record is released internally after this function is executed
 
1059
 
 
1060
function MsiGetLastErrorRecord: MSIHANDLE; stdcall;
 
1061
{$EXTERNALSYM MsiGetLastErrorRecord}
 
1062
 
 
1063
implementation
 
1064
 
 
1065
uses
 
1066
  JwaWinDLLNames;
 
1067
 
 
1068
{$IFDEF DYNAMIC_LINK}
 
1069
 
 
1070
var
 
1071
  _MsiDatabaseOpenViewA: Pointer;
 
1072
 
 
1073
function MsiDatabaseOpenViewA;
 
1074
begin
 
1075
  GetProcedureAddress(_MsiDatabaseOpenViewA, msilib, 'MsiDatabaseOpenViewA');
 
1076
  asm
 
1077
        MOV     ESP, EBP
 
1078
        POP     EBP
 
1079
        JMP     [_MsiDatabaseOpenViewA]
 
1080
  end;
 
1081
end;
 
1082
 
 
1083
var
 
1084
  _MsiDatabaseOpenViewW: Pointer;
 
1085
 
 
1086
function MsiDatabaseOpenViewW;
 
1087
begin
 
1088
  GetProcedureAddress(_MsiDatabaseOpenViewW, msilib, 'MsiDatabaseOpenViewW');
 
1089
  asm
 
1090
        MOV     ESP, EBP
 
1091
        POP     EBP
 
1092
        JMP     [_MsiDatabaseOpenViewW]
 
1093
  end;
 
1094
end;
 
1095
 
 
1096
var
 
1097
  _MsiDatabaseOpenView: Pointer;
 
1098
 
 
1099
function MsiDatabaseOpenView;
 
1100
begin
 
1101
  GetProcedureAddress(_MsiDatabaseOpenView, msilib, 'MsiDatabaseOpenView' + AWSuffix);
 
1102
  asm
 
1103
        MOV     ESP, EBP
 
1104
        POP     EBP
 
1105
        JMP     [_MsiDatabaseOpenView]
 
1106
  end;
 
1107
end;
 
1108
 
 
1109
var
 
1110
  _MsiViewGetErrorA: Pointer;
 
1111
 
 
1112
function MsiViewGetErrorA;
 
1113
begin
 
1114
  GetProcedureAddress(_MsiViewGetErrorA, msilib, 'MsiViewGetErrorA');
 
1115
  asm
 
1116
        MOV     ESP, EBP
 
1117
        POP     EBP
 
1118
        JMP     [_MsiViewGetErrorA]
 
1119
  end;
 
1120
end;
 
1121
 
 
1122
var
 
1123
  _MsiViewGetErrorW: Pointer;
 
1124
 
 
1125
function MsiViewGetErrorW;
 
1126
begin
 
1127
  GetProcedureAddress(_MsiViewGetErrorW, msilib, 'MsiViewGetErrorW');
 
1128
  asm
 
1129
        MOV     ESP, EBP
 
1130
        POP     EBP
 
1131
        JMP     [_MsiViewGetErrorW]
 
1132
  end;
 
1133
end;
 
1134
 
 
1135
var
 
1136
  _MsiViewGetError: Pointer;
 
1137
 
 
1138
function MsiViewGetError;
 
1139
begin
 
1140
  GetProcedureAddress(_MsiViewGetError, msilib, 'MsiViewGetError' + AWSuffix);
 
1141
  asm
 
1142
        MOV     ESP, EBP
 
1143
        POP     EBP
 
1144
        JMP     [_MsiViewGetError]
 
1145
  end;
 
1146
end;
 
1147
 
 
1148
var
 
1149
  _MsiViewExecute: Pointer;
 
1150
 
 
1151
function MsiViewExecute;
 
1152
begin
 
1153
  GetProcedureAddress(_MsiViewExecute, msilib, 'MsiViewExecute');
 
1154
  asm
 
1155
        MOV     ESP, EBP
 
1156
        POP     EBP
 
1157
        JMP     [_MsiViewExecute]
 
1158
  end;
 
1159
end;
 
1160
 
 
1161
var
 
1162
  _MsiViewFetch: Pointer;
 
1163
 
 
1164
function MsiViewFetch;
 
1165
begin
 
1166
  GetProcedureAddress(_MsiViewFetch, msilib, 'MsiViewFetch');
 
1167
  asm
 
1168
        MOV     ESP, EBP
 
1169
        POP     EBP
 
1170
        JMP     [_MsiViewFetch]
 
1171
  end;
 
1172
end;
 
1173
 
 
1174
var
 
1175
  _MsiViewModify: Pointer;
 
1176
 
 
1177
function MsiViewModify;
 
1178
begin
 
1179
  GetProcedureAddress(_MsiViewModify, msilib, 'MsiViewModify');
 
1180
  asm
 
1181
        MOV     ESP, EBP
 
1182
        POP     EBP
 
1183
        JMP     [_MsiViewModify]
 
1184
  end;
 
1185
end;
 
1186
 
 
1187
var
 
1188
  _MsiViewGetColumnInfo: Pointer;
 
1189
 
 
1190
function MsiViewGetColumnInfo;
 
1191
begin
 
1192
  GetProcedureAddress(_MsiViewGetColumnInfo, msilib, 'MsiViewGetColumnInfo');
 
1193
  asm
 
1194
        MOV     ESP, EBP
 
1195
        POP     EBP
 
1196
        JMP     [_MsiViewGetColumnInfo]
 
1197
  end;
 
1198
end;
 
1199
 
 
1200
var
 
1201
  _MsiViewClose: Pointer;
 
1202
 
 
1203
function MsiViewClose;
 
1204
begin
 
1205
  GetProcedureAddress(_MsiViewClose, msilib, 'MsiViewClose');
 
1206
  asm
 
1207
        MOV     ESP, EBP
 
1208
        POP     EBP
 
1209
        JMP     [_MsiViewClose]
 
1210
  end;
 
1211
end;
 
1212
 
 
1213
var
 
1214
  _MsiDatabaseGetPrimaryKeysA: Pointer;
 
1215
 
 
1216
function MsiDatabaseGetPrimaryKeysA;
 
1217
begin
 
1218
  GetProcedureAddress(_MsiDatabaseGetPrimaryKeysA, msilib, 'MsiDatabaseGetPrimaryKeysA');
 
1219
  asm
 
1220
        MOV     ESP, EBP
 
1221
        POP     EBP
 
1222
        JMP     [_MsiDatabaseGetPrimaryKeysA]
 
1223
  end;
 
1224
end;
 
1225
 
 
1226
var
 
1227
  _MsiDatabaseGetPrimaryKeysW: Pointer;
 
1228
 
 
1229
function MsiDatabaseGetPrimaryKeysW;
 
1230
begin
 
1231
  GetProcedureAddress(_MsiDatabaseGetPrimaryKeysW, msilib, 'MsiDatabaseGetPrimaryKeysW');
 
1232
  asm
 
1233
        MOV     ESP, EBP
 
1234
        POP     EBP
 
1235
        JMP     [_MsiDatabaseGetPrimaryKeysW]
 
1236
  end;
 
1237
end;
 
1238
 
 
1239
var
 
1240
  _MsiDatabaseGetPrimaryKeys: Pointer;
 
1241
 
 
1242
function MsiDatabaseGetPrimaryKeys;
 
1243
begin
 
1244
  GetProcedureAddress(_MsiDatabaseGetPrimaryKeys, msilib, 'MsiDatabaseGetPrimaryKeys' + AWSuffix);
 
1245
  asm
 
1246
        MOV     ESP, EBP
 
1247
        POP     EBP
 
1248
        JMP     [_MsiDatabaseGetPrimaryKeys]
 
1249
  end;
 
1250
end;
 
1251
 
 
1252
var
 
1253
  _MsiDatabaseIsTablePersistentA: Pointer;
 
1254
 
 
1255
function MsiDatabaseIsTablePersistentA;
 
1256
begin
 
1257
  GetProcedureAddress(_MsiDatabaseIsTablePersistentA, msilib, 'MsiDatabaseIsTablePersistentA');
 
1258
  asm
 
1259
        MOV     ESP, EBP
 
1260
        POP     EBP
 
1261
        JMP     [_MsiDatabaseIsTablePersistentA]
 
1262
  end;
 
1263
end;
 
1264
 
 
1265
var
 
1266
  _MsiDatabaseIsTablePersistentW: Pointer;
 
1267
 
 
1268
function MsiDatabaseIsTablePersistentW;
 
1269
begin
 
1270
  GetProcedureAddress(_MsiDatabaseIsTablePersistentW, msilib, 'MsiDatabaseIsTablePersistentW');
 
1271
  asm
 
1272
        MOV     ESP, EBP
 
1273
        POP     EBP
 
1274
        JMP     [_MsiDatabaseIsTablePersistentW]
 
1275
  end;
 
1276
end;
 
1277
 
 
1278
var
 
1279
  _MsiDatabaseIsTablePersistent: Pointer;
 
1280
 
 
1281
function MsiDatabaseIsTablePersistent;
 
1282
begin
 
1283
  GetProcedureAddress(_MsiDatabaseIsTablePersistent, msilib, 'MsiDatabaseIsTablePersistent' + AWSuffix);
 
1284
  asm
 
1285
        MOV     ESP, EBP
 
1286
        POP     EBP
 
1287
        JMP     [_MsiDatabaseIsTablePersistent]
 
1288
  end;
 
1289
end;
 
1290
 
 
1291
var
 
1292
  _MsiGetSummaryInformationA: Pointer;
 
1293
 
 
1294
function MsiGetSummaryInformationA;
 
1295
begin
 
1296
  GetProcedureAddress(_MsiGetSummaryInformationA, msilib, 'MsiGetSummaryInformationA');
 
1297
  asm
 
1298
        MOV     ESP, EBP
 
1299
        POP     EBP
 
1300
        JMP     [_MsiGetSummaryInformationA]
 
1301
  end;
 
1302
end;
 
1303
 
 
1304
var
 
1305
  _MsiGetSummaryInformationW: Pointer;
 
1306
 
 
1307
function MsiGetSummaryInformationW;
 
1308
begin
 
1309
  GetProcedureAddress(_MsiGetSummaryInformationW, msilib, 'MsiGetSummaryInformationW');
 
1310
  asm
 
1311
        MOV     ESP, EBP
 
1312
        POP     EBP
 
1313
        JMP     [_MsiGetSummaryInformationW]
 
1314
  end;
 
1315
end;
 
1316
 
 
1317
var
 
1318
  _MsiGetSummaryInformation: Pointer;
 
1319
 
 
1320
function MsiGetSummaryInformation;
 
1321
begin
 
1322
  GetProcedureAddress(_MsiGetSummaryInformation, msilib, 'MsiGetSummaryInformation' + AWSuffix);
 
1323
  asm
 
1324
        MOV     ESP, EBP
 
1325
        POP     EBP
 
1326
        JMP     [_MsiGetSummaryInformation]
 
1327
  end;
 
1328
end;
 
1329
 
 
1330
var
 
1331
  _MsiSummaryInfoGetPropertyCount: Pointer;
 
1332
 
 
1333
function MsiSummaryInfoGetPropertyCount;
 
1334
begin
 
1335
  GetProcedureAddress(_MsiSummaryInfoGetPropertyCount, msilib, 'MsiSummaryInfoGetPropertyCount');
 
1336
  asm
 
1337
        MOV     ESP, EBP
 
1338
        POP     EBP
 
1339
        JMP     [_MsiSummaryInfoGetPropertyCount]
 
1340
  end;
 
1341
end;
 
1342
 
 
1343
var
 
1344
  _MsiSummaryInfoSetPropertyA: Pointer;
 
1345
 
 
1346
function MsiSummaryInfoSetPropertyA;
 
1347
begin
 
1348
  GetProcedureAddress(_MsiSummaryInfoSetPropertyA, msilib, 'MsiSummaryInfoSetPropertyA');
 
1349
  asm
 
1350
        MOV     ESP, EBP
 
1351
        POP     EBP
 
1352
        JMP     [_MsiSummaryInfoSetPropertyA]
 
1353
  end;
 
1354
end;
 
1355
 
 
1356
var
 
1357
  _MsiSummaryInfoSetPropertyW: Pointer;
 
1358
 
 
1359
function MsiSummaryInfoSetPropertyW;
 
1360
begin
 
1361
  GetProcedureAddress(_MsiSummaryInfoSetPropertyW, msilib, 'MsiSummaryInfoSetPropertyW');
 
1362
  asm
 
1363
        MOV     ESP, EBP
 
1364
        POP     EBP
 
1365
        JMP     [_MsiSummaryInfoSetPropertyW]
 
1366
  end;
 
1367
end;
 
1368
 
 
1369
var
 
1370
  _MsiSummaryInfoSetProperty: Pointer;
 
1371
 
 
1372
function MsiSummaryInfoSetProperty;
 
1373
begin
 
1374
  GetProcedureAddress(_MsiSummaryInfoSetProperty, msilib, 'MsiSummaryInfoSetProperty' + AWSuffix);
 
1375
  asm
 
1376
        MOV     ESP, EBP
 
1377
        POP     EBP
 
1378
        JMP     [_MsiSummaryInfoSetProperty]
 
1379
  end;
 
1380
end;
 
1381
 
 
1382
var
 
1383
  _MsiSummaryInfoGetPropertyA: Pointer;
 
1384
 
 
1385
function MsiSummaryInfoGetPropertyA;
 
1386
begin
 
1387
  GetProcedureAddress(_MsiSummaryInfoGetPropertyA, msilib, 'MsiSummaryInfoGetPropertyA');
 
1388
  asm
 
1389
        MOV     ESP, EBP
 
1390
        POP     EBP
 
1391
        JMP     [_MsiSummaryInfoGetPropertyA]
 
1392
  end;
 
1393
end;
 
1394
 
 
1395
var
 
1396
  _MsiSummaryInfoGetPropertyW: Pointer;
 
1397
 
 
1398
function MsiSummaryInfoGetPropertyW;
 
1399
begin
 
1400
  GetProcedureAddress(_MsiSummaryInfoGetPropertyW, msilib, 'MsiSummaryInfoGetPropertyW');
 
1401
  asm
 
1402
        MOV     ESP, EBP
 
1403
        POP     EBP
 
1404
        JMP     [_MsiSummaryInfoGetPropertyW]
 
1405
  end;
 
1406
end;
 
1407
 
 
1408
var
 
1409
  _MsiSummaryInfoGetProperty: Pointer;
 
1410
 
 
1411
function MsiSummaryInfoGetProperty;
 
1412
begin
 
1413
  GetProcedureAddress(_MsiSummaryInfoGetProperty, msilib, 'MsiSummaryInfoGetProperty' + AWSuffix);
 
1414
  asm
 
1415
        MOV     ESP, EBP
 
1416
        POP     EBP
 
1417
        JMP     [_MsiSummaryInfoGetProperty]
 
1418
  end;
 
1419
end;
 
1420
 
 
1421
var
 
1422
  _MsiSummaryInfoPersist: Pointer;
 
1423
 
 
1424
function MsiSummaryInfoPersist;
 
1425
begin
 
1426
  GetProcedureAddress(_MsiSummaryInfoPersist, msilib, 'MsiSummaryInfoPersist');
 
1427
  asm
 
1428
        MOV     ESP, EBP
 
1429
        POP     EBP
 
1430
        JMP     [_MsiSummaryInfoPersist]
 
1431
  end;
 
1432
end;
 
1433
 
 
1434
var
 
1435
  _MsiOpenDatabaseA: Pointer;
 
1436
 
 
1437
function MsiOpenDatabaseA;
 
1438
begin
 
1439
  GetProcedureAddress(_MsiOpenDatabaseA, msilib, 'MsiOpenDatabaseA');
 
1440
  asm
 
1441
        MOV     ESP, EBP
 
1442
        POP     EBP
 
1443
        JMP     [_MsiOpenDatabaseA]
 
1444
  end;
 
1445
end;
 
1446
 
 
1447
var
 
1448
  _MsiOpenDatabaseW: Pointer;
 
1449
 
 
1450
function MsiOpenDatabaseW;
 
1451
begin
 
1452
  GetProcedureAddress(_MsiOpenDatabaseW, msilib, 'MsiOpenDatabaseW');
 
1453
  asm
 
1454
        MOV     ESP, EBP
 
1455
        POP     EBP
 
1456
        JMP     [_MsiOpenDatabaseW]
 
1457
  end;
 
1458
end;
 
1459
 
 
1460
var
 
1461
  _MsiOpenDatabase: Pointer;
 
1462
 
 
1463
function MsiOpenDatabase;
 
1464
begin
 
1465
  GetProcedureAddress(_MsiOpenDatabase, msilib, 'MsiOpenDatabase' + AWSuffix);
 
1466
  asm
 
1467
        MOV     ESP, EBP
 
1468
        POP     EBP
 
1469
        JMP     [_MsiOpenDatabase]
 
1470
  end;
 
1471
end;
 
1472
 
 
1473
var
 
1474
  _MsiDatabaseImportA: Pointer;
 
1475
 
 
1476
function MsiDatabaseImportA;
 
1477
begin
 
1478
  GetProcedureAddress(_MsiDatabaseImportA, msilib, 'MsiDatabaseImportA');
 
1479
  asm
 
1480
        MOV     ESP, EBP
 
1481
        POP     EBP
 
1482
        JMP     [_MsiDatabaseImportA]
 
1483
  end;
 
1484
end;
 
1485
 
 
1486
var
 
1487
  _MsiDatabaseImportW: Pointer;
 
1488
 
 
1489
function MsiDatabaseImportW;
 
1490
begin
 
1491
  GetProcedureAddress(_MsiDatabaseImportW, msilib, 'MsiDatabaseImportW');
 
1492
  asm
 
1493
        MOV     ESP, EBP
 
1494
        POP     EBP
 
1495
        JMP     [_MsiDatabaseImportW]
 
1496
  end;
 
1497
end;
 
1498
 
 
1499
var
 
1500
  _MsiDatabaseImport: Pointer;
 
1501
 
 
1502
function MsiDatabaseImport;
 
1503
begin
 
1504
  GetProcedureAddress(_MsiDatabaseImport, msilib, 'MsiDatabaseImport' + AWSuffix);
 
1505
  asm
 
1506
        MOV     ESP, EBP
 
1507
        POP     EBP
 
1508
        JMP     [_MsiDatabaseImport]
 
1509
  end;
 
1510
end;
 
1511
 
 
1512
var
 
1513
  _MsiDatabaseExportA: Pointer;
 
1514
 
 
1515
function MsiDatabaseExportA;
 
1516
begin
 
1517
  GetProcedureAddress(_MsiDatabaseExportA, msilib, 'MsiDatabaseExportA');
 
1518
  asm
 
1519
        MOV     ESP, EBP
 
1520
        POP     EBP
 
1521
        JMP     [_MsiDatabaseExportA]
 
1522
  end;
 
1523
end;
 
1524
 
 
1525
var
 
1526
  _MsiDatabaseExportW: Pointer;
 
1527
 
 
1528
function MsiDatabaseExportW;
 
1529
begin
 
1530
  GetProcedureAddress(_MsiDatabaseExportW, msilib, 'MsiDatabaseExportW');
 
1531
  asm
 
1532
        MOV     ESP, EBP
 
1533
        POP     EBP
 
1534
        JMP     [_MsiDatabaseExportW]
 
1535
  end;
 
1536
end;
 
1537
 
 
1538
var
 
1539
  _MsiDatabaseExport: Pointer;
 
1540
 
 
1541
function MsiDatabaseExport;
 
1542
begin
 
1543
  GetProcedureAddress(_MsiDatabaseExport, msilib, 'MsiDatabaseExport' + AWSuffix);
 
1544
  asm
 
1545
        MOV     ESP, EBP
 
1546
        POP     EBP
 
1547
        JMP     [_MsiDatabaseExport]
 
1548
  end;
 
1549
end;
 
1550
 
 
1551
var
 
1552
  _MsiDatabaseMergeA: Pointer;
 
1553
 
 
1554
function MsiDatabaseMergeA;
 
1555
begin
 
1556
  GetProcedureAddress(_MsiDatabaseMergeA, msilib, 'MsiDatabaseMergeA');
 
1557
  asm
 
1558
        MOV     ESP, EBP
 
1559
        POP     EBP
 
1560
        JMP     [_MsiDatabaseMergeA]
 
1561
  end;
 
1562
end;
 
1563
 
 
1564
var
 
1565
  _MsiDatabaseMergeW: Pointer;
 
1566
 
 
1567
function MsiDatabaseMergeW;
 
1568
begin
 
1569
  GetProcedureAddress(_MsiDatabaseMergeW, msilib, 'MsiDatabaseMergeW');
 
1570
  asm
 
1571
        MOV     ESP, EBP
 
1572
        POP     EBP
 
1573
        JMP     [_MsiDatabaseMergeW]
 
1574
  end;
 
1575
end;
 
1576
 
 
1577
var
 
1578
  _MsiDatabaseMerge: Pointer;
 
1579
 
 
1580
function MsiDatabaseMerge;
 
1581
begin
 
1582
  GetProcedureAddress(_MsiDatabaseMerge, msilib, 'MsiDatabaseMerge' + AWSuffix);
 
1583
  asm
 
1584
        MOV     ESP, EBP
 
1585
        POP     EBP
 
1586
        JMP     [_MsiDatabaseMerge]
 
1587
  end;
 
1588
end;
 
1589
 
 
1590
var
 
1591
  _MsiDatabaseGenerateTransformA: Pointer;
 
1592
 
 
1593
function MsiDatabaseGenerateTransformA;
 
1594
begin
 
1595
  GetProcedureAddress(_MsiDatabaseGenerateTransformA, msilib, 'MsiDatabaseGenerateTransformA');
 
1596
  asm
 
1597
        MOV     ESP, EBP
 
1598
        POP     EBP
 
1599
        JMP     [_MsiDatabaseGenerateTransformA]
 
1600
  end;
 
1601
end;
 
1602
 
 
1603
var
 
1604
  _MsiDatabaseGenerateTransformW: Pointer;
 
1605
 
 
1606
function MsiDatabaseGenerateTransformW;
 
1607
begin
 
1608
  GetProcedureAddress(_MsiDatabaseGenerateTransformW, msilib, 'MsiDatabaseGenerateTransformW');
 
1609
  asm
 
1610
        MOV     ESP, EBP
 
1611
        POP     EBP
 
1612
        JMP     [_MsiDatabaseGenerateTransformW]
 
1613
  end;
 
1614
end;
 
1615
 
 
1616
var
 
1617
  _MsiDatabaseGenerateTransform: Pointer;
 
1618
 
 
1619
function MsiDatabaseGenerateTransform;
 
1620
begin
 
1621
  GetProcedureAddress(_MsiDatabaseGenerateTransform, msilib, 'MsiDatabaseGenerateTransform' + AWSuffix);
 
1622
  asm
 
1623
        MOV     ESP, EBP
 
1624
        POP     EBP
 
1625
        JMP     [_MsiDatabaseGenerateTransform]
 
1626
  end;
 
1627
end;
 
1628
 
 
1629
var
 
1630
  _MsiDatabaseApplyTransformA: Pointer;
 
1631
 
 
1632
function MsiDatabaseApplyTransformA;
 
1633
begin
 
1634
  GetProcedureAddress(_MsiDatabaseApplyTransformA, msilib, 'MsiDatabaseApplyTransformA');
 
1635
  asm
 
1636
        MOV     ESP, EBP
 
1637
        POP     EBP
 
1638
        JMP     [_MsiDatabaseApplyTransformA]
 
1639
  end;
 
1640
end;
 
1641
 
 
1642
var
 
1643
  _MsiDatabaseApplyTransformW: Pointer;
 
1644
 
 
1645
function MsiDatabaseApplyTransformW;
 
1646
begin
 
1647
  GetProcedureAddress(_MsiDatabaseApplyTransformW, msilib, 'MsiDatabaseApplyTransformW');
 
1648
  asm
 
1649
        MOV     ESP, EBP
 
1650
        POP     EBP
 
1651
        JMP     [_MsiDatabaseApplyTransformW]
 
1652
  end;
 
1653
end;
 
1654
 
 
1655
var
 
1656
  _MsiDatabaseApplyTransform: Pointer;
 
1657
 
 
1658
function MsiDatabaseApplyTransform;
 
1659
begin
 
1660
  GetProcedureAddress(_MsiDatabaseApplyTransform, msilib, 'MsiDatabaseApplyTransform' + AWSuffix);
 
1661
  asm
 
1662
        MOV     ESP, EBP
 
1663
        POP     EBP
 
1664
        JMP     [_MsiDatabaseApplyTransform]
 
1665
  end;
 
1666
end;
 
1667
 
 
1668
var
 
1669
  _MsiCreateTransformSummaryInfoA: Pointer;
 
1670
 
 
1671
function MsiCreateTransformSummaryInfoA;
 
1672
begin
 
1673
  GetProcedureAddress(_MsiCreateTransformSummaryInfoA, msilib, 'MsiCreateTransformSummaryInfoA');
 
1674
  asm
 
1675
        MOV     ESP, EBP
 
1676
        POP     EBP
 
1677
        JMP     [_MsiCreateTransformSummaryInfoA]
 
1678
  end;
 
1679
end;
 
1680
 
 
1681
var
 
1682
  _MsiCreateTransformSummaryInfoW: Pointer;
 
1683
 
 
1684
function MsiCreateTransformSummaryInfoW;
 
1685
begin
 
1686
  GetProcedureAddress(_MsiCreateTransformSummaryInfoW, msilib, 'MsiCreateTransformSummaryInfoW');
 
1687
  asm
 
1688
        MOV     ESP, EBP
 
1689
        POP     EBP
 
1690
        JMP     [_MsiCreateTransformSummaryInfoW]
 
1691
  end;
 
1692
end;
 
1693
 
 
1694
var
 
1695
  _MsiCreateTransformSummaryInfo: Pointer;
 
1696
 
 
1697
function MsiCreateTransformSummaryInfo;
 
1698
begin
 
1699
  GetProcedureAddress(_MsiCreateTransformSummaryInfo, msilib, 'MsiCreateTransformSummaryInfo' + AWSuffix);
 
1700
  asm
 
1701
        MOV     ESP, EBP
 
1702
        POP     EBP
 
1703
        JMP     [_MsiCreateTransformSummaryInfo]
 
1704
  end;
 
1705
end;
 
1706
 
 
1707
var
 
1708
  _MsiDatabaseCommit: Pointer;
 
1709
 
 
1710
function MsiDatabaseCommit;
 
1711
begin
 
1712
  GetProcedureAddress(_MsiDatabaseCommit, msilib, 'MsiDatabaseCommit');
 
1713
  asm
 
1714
        MOV     ESP, EBP
 
1715
        POP     EBP
 
1716
        JMP     [_MsiDatabaseCommit]
 
1717
  end;
 
1718
end;
 
1719
 
 
1720
var
 
1721
  _MsiGetDatabaseState: Pointer;
 
1722
 
 
1723
function MsiGetDatabaseState;
 
1724
begin
 
1725
  GetProcedureAddress(_MsiGetDatabaseState, msilib, 'MsiGetDatabaseState');
 
1726
  asm
 
1727
        MOV     ESP, EBP
 
1728
        POP     EBP
 
1729
        JMP     [_MsiGetDatabaseState]
 
1730
  end;
 
1731
end;
 
1732
 
 
1733
var
 
1734
  _MsiCreateRecord: Pointer;
 
1735
 
 
1736
function MsiCreateRecord;
 
1737
begin
 
1738
  GetProcedureAddress(_MsiCreateRecord, msilib, 'MsiCreateRecord');
 
1739
  asm
 
1740
        MOV     ESP, EBP
 
1741
        POP     EBP
 
1742
        JMP     [_MsiCreateRecord]
 
1743
  end;
 
1744
end;
 
1745
 
 
1746
var
 
1747
  _MsiRecordIsNull: Pointer;
 
1748
 
 
1749
function MsiRecordIsNull;
 
1750
begin
 
1751
  GetProcedureAddress(_MsiRecordIsNull, msilib, 'MsiRecordIsNull');
 
1752
  asm
 
1753
        MOV     ESP, EBP
 
1754
        POP     EBP
 
1755
        JMP     [_MsiRecordIsNull]
 
1756
  end;
 
1757
end;
 
1758
 
 
1759
var
 
1760
  _MsiRecordDataSize: Pointer;
 
1761
 
 
1762
function MsiRecordDataSize;
 
1763
begin
 
1764
  GetProcedureAddress(_MsiRecordDataSize, msilib, 'MsiRecordDataSize');
 
1765
  asm
 
1766
        MOV     ESP, EBP
 
1767
        POP     EBP
 
1768
        JMP     [_MsiRecordDataSize]
 
1769
  end;
 
1770
end;
 
1771
 
 
1772
var
 
1773
  _MsiRecordSetInteger: Pointer;
 
1774
 
 
1775
function MsiRecordSetInteger;
 
1776
begin
 
1777
  GetProcedureAddress(_MsiRecordSetInteger, msilib, 'MsiRecordSetInteger');
 
1778
  asm
 
1779
        MOV     ESP, EBP
 
1780
        POP     EBP
 
1781
        JMP     [_MsiRecordSetInteger]
 
1782
  end;
 
1783
end;
 
1784
 
 
1785
var
 
1786
  _MsiRecordSetStringA: Pointer;
 
1787
 
 
1788
function MsiRecordSetStringA;
 
1789
begin
 
1790
  GetProcedureAddress(_MsiRecordSetStringA, msilib, 'MsiRecordSetStringA');
 
1791
  asm
 
1792
        MOV     ESP, EBP
 
1793
        POP     EBP
 
1794
        JMP     [_MsiRecordSetStringA]
 
1795
  end;
 
1796
end;
 
1797
 
 
1798
var
 
1799
  _MsiRecordSetStringW: Pointer;
 
1800
 
 
1801
function MsiRecordSetStringW;
 
1802
begin
 
1803
  GetProcedureAddress(_MsiRecordSetStringW, msilib, 'MsiRecordSetStringW');
 
1804
  asm
 
1805
        MOV     ESP, EBP
 
1806
        POP     EBP
 
1807
        JMP     [_MsiRecordSetStringW]
 
1808
  end;
 
1809
end;
 
1810
 
 
1811
var
 
1812
  _MsiRecordSetString: Pointer;
 
1813
 
 
1814
function MsiRecordSetString;
 
1815
begin
 
1816
  GetProcedureAddress(_MsiRecordSetString, msilib, 'MsiRecordSetString' + AWSuffix);
 
1817
  asm
 
1818
        MOV     ESP, EBP
 
1819
        POP     EBP
 
1820
        JMP     [_MsiRecordSetString]
 
1821
  end;
 
1822
end;
 
1823
 
 
1824
var
 
1825
  _MsiRecordGetInteger: Pointer;
 
1826
 
 
1827
function MsiRecordGetInteger;
 
1828
begin
 
1829
  GetProcedureAddress(_MsiRecordGetInteger, msilib, 'MsiRecordGetInteger');
 
1830
  asm
 
1831
        MOV     ESP, EBP
 
1832
        POP     EBP
 
1833
        JMP     [_MsiRecordGetInteger]
 
1834
  end;
 
1835
end;
 
1836
 
 
1837
var
 
1838
  _MsiRecordGetStringA: Pointer;
 
1839
 
 
1840
function MsiRecordGetStringA;
 
1841
begin
 
1842
  GetProcedureAddress(_MsiRecordGetStringA, msilib, 'MsiRecordGetStringA');
 
1843
  asm
 
1844
        MOV     ESP, EBP
 
1845
        POP     EBP
 
1846
        JMP     [_MsiRecordGetStringA]
 
1847
  end;
 
1848
end;
 
1849
 
 
1850
var
 
1851
  _MsiRecordGetStringW: Pointer;
 
1852
 
 
1853
function MsiRecordGetStringW;
 
1854
begin
 
1855
  GetProcedureAddress(_MsiRecordGetStringW, msilib, 'MsiRecordGetStringW');
 
1856
  asm
 
1857
        MOV     ESP, EBP
 
1858
        POP     EBP
 
1859
        JMP     [_MsiRecordGetStringW]
 
1860
  end;
 
1861
end;
 
1862
 
 
1863
var
 
1864
  _MsiRecordGetString: Pointer;
 
1865
 
 
1866
function MsiRecordGetString;
 
1867
begin
 
1868
  GetProcedureAddress(_MsiRecordGetString, msilib, 'MsiRecordGetString' + AWSuffix);
 
1869
  asm
 
1870
        MOV     ESP, EBP
 
1871
        POP     EBP
 
1872
        JMP     [_MsiRecordGetString]
 
1873
  end;
 
1874
end;
 
1875
 
 
1876
var
 
1877
  _MsiRecordGetFieldCount: Pointer;
 
1878
 
 
1879
function MsiRecordGetFieldCount;
 
1880
begin
 
1881
  GetProcedureAddress(_MsiRecordGetFieldCount, msilib, 'MsiRecordGetFieldCount');
 
1882
  asm
 
1883
        MOV     ESP, EBP
 
1884
        POP     EBP
 
1885
        JMP     [_MsiRecordGetFieldCount]
 
1886
  end;
 
1887
end;
 
1888
 
 
1889
var
 
1890
  _MsiRecordSetStreamA: Pointer;
 
1891
 
 
1892
function MsiRecordSetStreamA;
 
1893
begin
 
1894
  GetProcedureAddress(_MsiRecordSetStreamA, msilib, 'MsiRecordSetStreamA');
 
1895
  asm
 
1896
        MOV     ESP, EBP
 
1897
        POP     EBP
 
1898
        JMP     [_MsiRecordSetStreamA]
 
1899
  end;
 
1900
end;
 
1901
 
 
1902
var
 
1903
  _MsiRecordSetStreamW: Pointer;
 
1904
 
 
1905
function MsiRecordSetStreamW;
 
1906
begin
 
1907
  GetProcedureAddress(_MsiRecordSetStreamW, msilib, 'MsiRecordSetStreamW');
 
1908
  asm
 
1909
        MOV     ESP, EBP
 
1910
        POP     EBP
 
1911
        JMP     [_MsiRecordSetStreamW]
 
1912
  end;
 
1913
end;
 
1914
 
 
1915
var
 
1916
  _MsiRecordSetStream: Pointer;
 
1917
 
 
1918
function MsiRecordSetStream;
 
1919
begin
 
1920
  GetProcedureAddress(_MsiRecordSetStream, msilib, 'MsiRecordSetStream' + AWSuffix);
 
1921
  asm
 
1922
        MOV     ESP, EBP
 
1923
        POP     EBP
 
1924
        JMP     [_MsiRecordSetStream]
 
1925
  end;
 
1926
end;
 
1927
 
 
1928
var
 
1929
  _MsiRecordReadStream: Pointer;
 
1930
 
 
1931
function MsiRecordReadStream;
 
1932
begin
 
1933
  GetProcedureAddress(_MsiRecordReadStream, msilib, 'MsiRecordReadStream');
 
1934
  asm
 
1935
        MOV     ESP, EBP
 
1936
        POP     EBP
 
1937
        JMP     [_MsiRecordReadStream]
 
1938
  end;
 
1939
end;
 
1940
 
 
1941
var
 
1942
  _MsiRecordClearData: Pointer;
 
1943
 
 
1944
function MsiRecordClearData;
 
1945
begin
 
1946
  GetProcedureAddress(_MsiRecordClearData, msilib, 'MsiRecordClearData');
 
1947
  asm
 
1948
        MOV     ESP, EBP
 
1949
        POP     EBP
 
1950
        JMP     [_MsiRecordClearData]
 
1951
  end;
 
1952
end;
 
1953
 
 
1954
var
 
1955
  _MsiGetActiveDatabase: Pointer;
 
1956
 
 
1957
function MsiGetActiveDatabase;
 
1958
begin
 
1959
  GetProcedureAddress(_MsiGetActiveDatabase, msilib, 'MsiGetActiveDatabase');
 
1960
  asm
 
1961
        MOV     ESP, EBP
 
1962
        POP     EBP
 
1963
        JMP     [_MsiGetActiveDatabase]
 
1964
  end;
 
1965
end;
 
1966
 
 
1967
var
 
1968
  _MsiSetPropertyA: Pointer;
 
1969
 
 
1970
function MsiSetPropertyA;
 
1971
begin
 
1972
  GetProcedureAddress(_MsiSetPropertyA, msilib, 'MsiSetPropertyA');
 
1973
  asm
 
1974
        MOV     ESP, EBP
 
1975
        POP     EBP
 
1976
        JMP     [_MsiSetPropertyA]
 
1977
  end;
 
1978
end;
 
1979
 
 
1980
var
 
1981
  _MsiSetPropertyW: Pointer;
 
1982
 
 
1983
function MsiSetPropertyW;
 
1984
begin
 
1985
  GetProcedureAddress(_MsiSetPropertyW, msilib, 'MsiSetPropertyW');
 
1986
  asm
 
1987
        MOV     ESP, EBP
 
1988
        POP     EBP
 
1989
        JMP     [_MsiSetPropertyW]
 
1990
  end;
 
1991
end;
 
1992
 
 
1993
var
 
1994
  _MsiSetProperty: Pointer;
 
1995
 
 
1996
function MsiSetProperty;
 
1997
begin
 
1998
  GetProcedureAddress(_MsiSetProperty, msilib, 'MsiSetProperty' + AWSuffix);
 
1999
  asm
 
2000
        MOV     ESP, EBP
 
2001
        POP     EBP
 
2002
        JMP     [_MsiSetProperty]
 
2003
  end;
 
2004
end;
 
2005
 
 
2006
var
 
2007
  _MsiGetPropertyA: Pointer;
 
2008
 
 
2009
function MsiGetPropertyA;
 
2010
begin
 
2011
  GetProcedureAddress(_MsiGetPropertyA, msilib, 'MsiGetPropertyA');
 
2012
  asm
 
2013
        MOV     ESP, EBP
 
2014
        POP     EBP
 
2015
        JMP     [_MsiGetPropertyA]
 
2016
  end;
 
2017
end;
 
2018
 
 
2019
var
 
2020
  _MsiGetPropertyW: Pointer;
 
2021
 
 
2022
function MsiGetPropertyW;
 
2023
begin
 
2024
  GetProcedureAddress(_MsiGetPropertyW, msilib, 'MsiGetPropertyW');
 
2025
  asm
 
2026
        MOV     ESP, EBP
 
2027
        POP     EBP
 
2028
        JMP     [_MsiGetPropertyW]
 
2029
  end;
 
2030
end;
 
2031
 
 
2032
var
 
2033
  _MsiGetProperty: Pointer;
 
2034
 
 
2035
function MsiGetProperty;
 
2036
begin
 
2037
  GetProcedureAddress(_MsiGetProperty, msilib, 'MsiGetProperty' + AWSuffix);
 
2038
  asm
 
2039
        MOV     ESP, EBP
 
2040
        POP     EBP
 
2041
        JMP     [_MsiGetProperty]
 
2042
  end;
 
2043
end;
 
2044
 
 
2045
var
 
2046
  _MsiGetLanguage: Pointer;
 
2047
 
 
2048
function MsiGetLanguage;
 
2049
begin
 
2050
  GetProcedureAddress(_MsiGetLanguage, msilib, 'MsiGetLanguage');
 
2051
  asm
 
2052
        MOV     ESP, EBP
 
2053
        POP     EBP
 
2054
        JMP     [_MsiGetLanguage]
 
2055
  end;
 
2056
end;
 
2057
 
 
2058
var
 
2059
  _MsiGetMode: Pointer;
 
2060
 
 
2061
function MsiGetMode;
 
2062
begin
 
2063
  GetProcedureAddress(_MsiGetMode, msilib, 'MsiGetMode');
 
2064
  asm
 
2065
        MOV     ESP, EBP
 
2066
        POP     EBP
 
2067
        JMP     [_MsiGetMode]
 
2068
  end;
 
2069
end;
 
2070
 
 
2071
var
 
2072
  _MsiSetMode: Pointer;
 
2073
 
 
2074
function MsiSetMode;
 
2075
begin
 
2076
  GetProcedureAddress(_MsiSetMode, msilib, 'MsiSetMode');
 
2077
  asm
 
2078
        MOV     ESP, EBP
 
2079
        POP     EBP
 
2080
        JMP     [_MsiSetMode]
 
2081
  end;
 
2082
end;
 
2083
 
 
2084
var
 
2085
  _MsiFormatRecordA: Pointer;
 
2086
 
 
2087
function MsiFormatRecordA;
 
2088
begin
 
2089
  GetProcedureAddress(_MsiFormatRecordA, msilib, 'MsiFormatRecordA');
 
2090
  asm
 
2091
        MOV     ESP, EBP
 
2092
        POP     EBP
 
2093
        JMP     [_MsiFormatRecordA]
 
2094
  end;
 
2095
end;
 
2096
 
 
2097
var
 
2098
  _MsiFormatRecordW: Pointer;
 
2099
 
 
2100
function MsiFormatRecordW;
 
2101
begin
 
2102
  GetProcedureAddress(_MsiFormatRecordW, msilib, 'MsiFormatRecordW');
 
2103
  asm
 
2104
        MOV     ESP, EBP
 
2105
        POP     EBP
 
2106
        JMP     [_MsiFormatRecordW]
 
2107
  end;
 
2108
end;
 
2109
 
 
2110
var
 
2111
  _MsiFormatRecord: Pointer;
 
2112
 
 
2113
function MsiFormatRecord;
 
2114
begin
 
2115
  GetProcedureAddress(_MsiFormatRecord, msilib, 'MsiFormatRecord' + AWSuffix);
 
2116
  asm
 
2117
        MOV     ESP, EBP
 
2118
        POP     EBP
 
2119
        JMP     [_MsiFormatRecord]
 
2120
  end;
 
2121
end;
 
2122
 
 
2123
var
 
2124
  _MsiDoActionA: Pointer;
 
2125
 
 
2126
function MsiDoActionA;
 
2127
begin
 
2128
  GetProcedureAddress(_MsiDoActionA, msilib, 'MsiDoActionA');
 
2129
  asm
 
2130
        MOV     ESP, EBP
 
2131
        POP     EBP
 
2132
        JMP     [_MsiDoActionA]
 
2133
  end;
 
2134
end;
 
2135
 
 
2136
var
 
2137
  _MsiDoActionW: Pointer;
 
2138
 
 
2139
function MsiDoActionW;
 
2140
begin
 
2141
  GetProcedureAddress(_MsiDoActionW, msilib, 'MsiDoActionW');
 
2142
  asm
 
2143
        MOV     ESP, EBP
 
2144
        POP     EBP
 
2145
        JMP     [_MsiDoActionW]
 
2146
  end;
 
2147
end;
 
2148
 
 
2149
var
 
2150
  _MsiDoAction: Pointer;
 
2151
 
 
2152
function MsiDoAction;
 
2153
begin
 
2154
  GetProcedureAddress(_MsiDoAction, msilib, 'MsiDoAction' + AWSuffix);
 
2155
  asm
 
2156
        MOV     ESP, EBP
 
2157
        POP     EBP
 
2158
        JMP     [_MsiDoAction]
 
2159
  end;
 
2160
end;
 
2161
 
 
2162
var
 
2163
  _MsiSequenceA: Pointer;
 
2164
 
 
2165
function MsiSequenceA;
 
2166
begin
 
2167
  GetProcedureAddress(_MsiSequenceA, msilib, 'MsiSequenceA');
 
2168
  asm
 
2169
        MOV     ESP, EBP
 
2170
        POP     EBP
 
2171
        JMP     [_MsiSequenceA]
 
2172
  end;
 
2173
end;
 
2174
 
 
2175
var
 
2176
  _MsiSequenceW: Pointer;
 
2177
 
 
2178
function MsiSequenceW;
 
2179
begin
 
2180
  GetProcedureAddress(_MsiSequenceW, msilib, 'MsiSequenceW');
 
2181
  asm
 
2182
        MOV     ESP, EBP
 
2183
        POP     EBP
 
2184
        JMP     [_MsiSequenceW]
 
2185
  end;
 
2186
end;
 
2187
 
 
2188
var
 
2189
  _MsiSequence: Pointer;
 
2190
 
 
2191
function MsiSequence;
 
2192
begin
 
2193
  GetProcedureAddress(_MsiSequence, msilib, 'MsiSequence' + AWSuffix);
 
2194
  asm
 
2195
        MOV     ESP, EBP
 
2196
        POP     EBP
 
2197
        JMP     [_MsiSequence]
 
2198
  end;
 
2199
end;
 
2200
 
 
2201
var
 
2202
  _MsiProcessMessage: Pointer;
 
2203
 
 
2204
function MsiProcessMessage;
 
2205
begin
 
2206
  GetProcedureAddress(_MsiProcessMessage, msilib, 'MsiProcessMessage');
 
2207
  asm
 
2208
        MOV     ESP, EBP
 
2209
        POP     EBP
 
2210
        JMP     [_MsiProcessMessage]
 
2211
  end;
 
2212
end;
 
2213
 
 
2214
var
 
2215
  _MsiEvaluateConditionA: Pointer;
 
2216
 
 
2217
function MsiEvaluateConditionA;
 
2218
begin
 
2219
  GetProcedureAddress(_MsiEvaluateConditionA, msilib, 'MsiEvaluateConditionA');
 
2220
  asm
 
2221
        MOV     ESP, EBP
 
2222
        POP     EBP
 
2223
        JMP     [_MsiEvaluateConditionA]
 
2224
  end;
 
2225
end;
 
2226
 
 
2227
var
 
2228
  _MsiEvaluateConditionW: Pointer;
 
2229
 
 
2230
function MsiEvaluateConditionW;
 
2231
begin
 
2232
  GetProcedureAddress(_MsiEvaluateConditionW, msilib, 'MsiEvaluateConditionW');
 
2233
  asm
 
2234
        MOV     ESP, EBP
 
2235
        POP     EBP
 
2236
        JMP     [_MsiEvaluateConditionW]
 
2237
  end;
 
2238
end;
 
2239
 
 
2240
var
 
2241
  _MsiEvaluateCondition: Pointer;
 
2242
 
 
2243
function MsiEvaluateCondition;
 
2244
begin
 
2245
  GetProcedureAddress(_MsiEvaluateCondition, msilib, 'MsiEvaluateCondition' + AWSuffix);
 
2246
  asm
 
2247
        MOV     ESP, EBP
 
2248
        POP     EBP
 
2249
        JMP     [_MsiEvaluateCondition]
 
2250
  end;
 
2251
end;
 
2252
 
 
2253
var
 
2254
  _MsiGetFeatureStateA: Pointer;
 
2255
 
 
2256
function MsiGetFeatureStateA;
 
2257
begin
 
2258
  GetProcedureAddress(_MsiGetFeatureStateA, msilib, 'MsiGetFeatureStateA');
 
2259
  asm
 
2260
        MOV     ESP, EBP
 
2261
        POP     EBP
 
2262
        JMP     [_MsiGetFeatureStateA]
 
2263
  end;
 
2264
end;
 
2265
 
 
2266
var
 
2267
  _MsiGetFeatureStateW: Pointer;
 
2268
 
 
2269
function MsiGetFeatureStateW;
 
2270
begin
 
2271
  GetProcedureAddress(_MsiGetFeatureStateW, msilib, 'MsiGetFeatureStateW');
 
2272
  asm
 
2273
        MOV     ESP, EBP
 
2274
        POP     EBP
 
2275
        JMP     [_MsiGetFeatureStateW]
 
2276
  end;
 
2277
end;
 
2278
 
 
2279
var
 
2280
  _MsiGetFeatureState: Pointer;
 
2281
 
 
2282
function MsiGetFeatureState;
 
2283
begin
 
2284
  GetProcedureAddress(_MsiGetFeatureState, msilib, 'MsiGetFeatureState' + AWSuffix);
 
2285
  asm
 
2286
        MOV     ESP, EBP
 
2287
        POP     EBP
 
2288
        JMP     [_MsiGetFeatureState]
 
2289
  end;
 
2290
end;
 
2291
 
 
2292
var
 
2293
  _MsiSetFeatureStateA: Pointer;
 
2294
 
 
2295
function MsiSetFeatureStateA;
 
2296
begin
 
2297
  GetProcedureAddress(_MsiSetFeatureStateA, msilib, 'MsiSetFeatureStateA');
 
2298
  asm
 
2299
        MOV     ESP, EBP
 
2300
        POP     EBP
 
2301
        JMP     [_MsiSetFeatureStateA]
 
2302
  end;
 
2303
end;
 
2304
 
 
2305
var
 
2306
  _MsiSetFeatureStateW: Pointer;
 
2307
 
 
2308
function MsiSetFeatureStateW;
 
2309
begin
 
2310
  GetProcedureAddress(_MsiSetFeatureStateW, msilib, 'MsiSetFeatureStateW');
 
2311
  asm
 
2312
        MOV     ESP, EBP
 
2313
        POP     EBP
 
2314
        JMP     [_MsiSetFeatureStateW]
 
2315
  end;
 
2316
end;
 
2317
 
 
2318
var
 
2319
  _MsiSetFeatureState: Pointer;
 
2320
 
 
2321
function MsiSetFeatureState;
 
2322
begin
 
2323
  GetProcedureAddress(_MsiSetFeatureState, msilib, 'MsiSetFeatureState' + AWSuffix);
 
2324
  asm
 
2325
        MOV     ESP, EBP
 
2326
        POP     EBP
 
2327
        JMP     [_MsiSetFeatureState]
 
2328
  end;
 
2329
end;
 
2330
 
 
2331
var
 
2332
  _MsiSetFeatureAttributesA: Pointer;
 
2333
 
 
2334
function MsiSetFeatureAttributesA;
 
2335
begin
 
2336
  GetProcedureAddress(_MsiSetFeatureAttributesA, msilib, 'MsiSetFeatureAttributesA');
 
2337
  asm
 
2338
        MOV     ESP, EBP
 
2339
        POP     EBP
 
2340
        JMP     [_MsiSetFeatureAttributesA]
 
2341
  end;
 
2342
end;
 
2343
 
 
2344
var
 
2345
  _MsiSetFeatureAttributesW: Pointer;
 
2346
 
 
2347
function MsiSetFeatureAttributesW;
 
2348
begin
 
2349
  GetProcedureAddress(_MsiSetFeatureAttributesW, msilib, 'MsiSetFeatureAttributesW');
 
2350
  asm
 
2351
        MOV     ESP, EBP
 
2352
        POP     EBP
 
2353
        JMP     [_MsiSetFeatureAttributesW]
 
2354
  end;
 
2355
end;
 
2356
 
 
2357
var
 
2358
  _MsiSetFeatureAttributes: Pointer;
 
2359
 
 
2360
function MsiSetFeatureAttributes;
 
2361
begin
 
2362
  GetProcedureAddress(_MsiSetFeatureAttributes, msilib, 'MsiSetFeatureAttributes' + AWSuffix);
 
2363
  asm
 
2364
        MOV     ESP, EBP
 
2365
        POP     EBP
 
2366
        JMP     [_MsiSetFeatureAttributes]
 
2367
  end;
 
2368
end;
 
2369
 
 
2370
var
 
2371
  _MsiGetComponentStateA: Pointer;
 
2372
 
 
2373
function MsiGetComponentStateA;
 
2374
begin
 
2375
  GetProcedureAddress(_MsiGetComponentStateA, msilib, 'MsiGetComponentStateA');
 
2376
  asm
 
2377
        MOV     ESP, EBP
 
2378
        POP     EBP
 
2379
        JMP     [_MsiGetComponentStateA]
 
2380
  end;
 
2381
end;
 
2382
 
 
2383
var
 
2384
  _MsiGetComponentStateW: Pointer;
 
2385
 
 
2386
function MsiGetComponentStateW;
 
2387
begin
 
2388
  GetProcedureAddress(_MsiGetComponentStateW, msilib, 'MsiGetComponentStateW');
 
2389
  asm
 
2390
        MOV     ESP, EBP
 
2391
        POP     EBP
 
2392
        JMP     [_MsiGetComponentStateW]
 
2393
  end;
 
2394
end;
 
2395
 
 
2396
var
 
2397
  _MsiGetComponentState: Pointer;
 
2398
 
 
2399
function MsiGetComponentState;
 
2400
begin
 
2401
  GetProcedureAddress(_MsiGetComponentState, msilib, 'MsiGetComponentState' + AWSuffix);
 
2402
  asm
 
2403
        MOV     ESP, EBP
 
2404
        POP     EBP
 
2405
        JMP     [_MsiGetComponentState]
 
2406
  end;
 
2407
end;
 
2408
 
 
2409
var
 
2410
  _MsiSetComponentStateA: Pointer;
 
2411
 
 
2412
function MsiSetComponentStateA;
 
2413
begin
 
2414
  GetProcedureAddress(_MsiSetComponentStateA, msilib, 'MsiSetComponentStateA');
 
2415
  asm
 
2416
        MOV     ESP, EBP
 
2417
        POP     EBP
 
2418
        JMP     [_MsiSetComponentStateA]
 
2419
  end;
 
2420
end;
 
2421
 
 
2422
var
 
2423
  _MsiSetComponentStateW: Pointer;
 
2424
 
 
2425
function MsiSetComponentStateW;
 
2426
begin
 
2427
  GetProcedureAddress(_MsiSetComponentStateW, msilib, 'MsiSetComponentStateW');
 
2428
  asm
 
2429
        MOV     ESP, EBP
 
2430
        POP     EBP
 
2431
        JMP     [_MsiSetComponentStateW]
 
2432
  end;
 
2433
end;
 
2434
 
 
2435
var
 
2436
  _MsiSetComponentState: Pointer;
 
2437
 
 
2438
function MsiSetComponentState;
 
2439
begin
 
2440
  GetProcedureAddress(_MsiSetComponentState, msilib, 'MsiSetComponentState' + AWSuffix);
 
2441
  asm
 
2442
        MOV     ESP, EBP
 
2443
        POP     EBP
 
2444
        JMP     [_MsiSetComponentState]
 
2445
  end;
 
2446
end;
 
2447
 
 
2448
var
 
2449
  _MsiGetFeatureCostA: Pointer;
 
2450
 
 
2451
function MsiGetFeatureCostA;
 
2452
begin
 
2453
  GetProcedureAddress(_MsiGetFeatureCostA, msilib, 'MsiGetFeatureCostA');
 
2454
  asm
 
2455
        MOV     ESP, EBP
 
2456
        POP     EBP
 
2457
        JMP     [_MsiGetFeatureCostA]
 
2458
  end;
 
2459
end;
 
2460
 
 
2461
var
 
2462
  _MsiGetFeatureCostW: Pointer;
 
2463
 
 
2464
function MsiGetFeatureCostW;
 
2465
begin
 
2466
  GetProcedureAddress(_MsiGetFeatureCostW, msilib, 'MsiGetFeatureCostW');
 
2467
  asm
 
2468
        MOV     ESP, EBP
 
2469
        POP     EBP
 
2470
        JMP     [_MsiGetFeatureCostW]
 
2471
  end;
 
2472
end;
 
2473
 
 
2474
var
 
2475
  _MsiGetFeatureCost: Pointer;
 
2476
 
 
2477
function MsiGetFeatureCost;
 
2478
begin
 
2479
  GetProcedureAddress(_MsiGetFeatureCost, msilib, 'MsiGetFeatureCost' + AWSuffix);
 
2480
  asm
 
2481
        MOV     ESP, EBP
 
2482
        POP     EBP
 
2483
        JMP     [_MsiGetFeatureCost]
 
2484
  end;
 
2485
end;
 
2486
 
 
2487
var
 
2488
  _MsiEnumComponentCostsA: Pointer;
 
2489
 
 
2490
function MsiEnumComponentCostsA;
 
2491
begin
 
2492
  GetProcedureAddress(_MsiEnumComponentCostsA, msilib, 'MsiEnumComponentCostsA');
 
2493
  asm
 
2494
        MOV     ESP, EBP
 
2495
        POP     EBP
 
2496
        JMP     [_MsiEnumComponentCostsA]
 
2497
  end;
 
2498
end;
 
2499
 
 
2500
var
 
2501
  _MsiEnumComponentCostsW: Pointer;
 
2502
 
 
2503
function MsiEnumComponentCostsW;
 
2504
begin
 
2505
  GetProcedureAddress(_MsiEnumComponentCostsW, msilib, 'MsiEnumComponentCostsW');
 
2506
  asm
 
2507
        MOV     ESP, EBP
 
2508
        POP     EBP
 
2509
        JMP     [_MsiEnumComponentCostsW]
 
2510
  end;
 
2511
end;
 
2512
 
 
2513
var
 
2514
  _MsiEnumComponentCosts: Pointer;
 
2515
 
 
2516
function MsiEnumComponentCosts;
 
2517
begin
 
2518
  GetProcedureAddress(_MsiEnumComponentCosts, msilib, 'MsiEnumComponentCosts' + AWSuffix);
 
2519
  asm
 
2520
        MOV     ESP, EBP
 
2521
        POP     EBP
 
2522
        JMP     [_MsiEnumComponentCosts]
 
2523
  end;
 
2524
end;
 
2525
 
 
2526
var
 
2527
  _MsiSetInstallLevel: Pointer;
 
2528
 
 
2529
function MsiSetInstallLevel;
 
2530
begin
 
2531
  GetProcedureAddress(_MsiSetInstallLevel, msilib, 'MsiSetInstallLevel');
 
2532
  asm
 
2533
        MOV     ESP, EBP
 
2534
        POP     EBP
 
2535
        JMP     [_MsiSetInstallLevel]
 
2536
  end;
 
2537
end;
 
2538
 
 
2539
var
 
2540
  _MsiGetFeatureValidStatesA: Pointer;
 
2541
 
 
2542
function MsiGetFeatureValidStatesA;
 
2543
begin
 
2544
  GetProcedureAddress(_MsiGetFeatureValidStatesA, msilib, 'MsiGetFeatureValidStatesA');
 
2545
  asm
 
2546
        MOV     ESP, EBP
 
2547
        POP     EBP
 
2548
        JMP     [_MsiGetFeatureValidStatesA]
 
2549
  end;
 
2550
end;
 
2551
 
 
2552
var
 
2553
  _MsiGetFeatureValidStatesW: Pointer;
 
2554
 
 
2555
function MsiGetFeatureValidStatesW;
 
2556
begin
 
2557
  GetProcedureAddress(_MsiGetFeatureValidStatesW, msilib, 'MsiGetFeatureValidStatesW');
 
2558
  asm
 
2559
        MOV     ESP, EBP
 
2560
        POP     EBP
 
2561
        JMP     [_MsiGetFeatureValidStatesW]
 
2562
  end;
 
2563
end;
 
2564
 
 
2565
var
 
2566
  _MsiGetFeatureValidStates: Pointer;
 
2567
 
 
2568
function MsiGetFeatureValidStates;
 
2569
begin
 
2570
  GetProcedureAddress(_MsiGetFeatureValidStates, msilib, 'MsiGetFeatureValidStates' + AWSuffix);
 
2571
  asm
 
2572
        MOV     ESP, EBP
 
2573
        POP     EBP
 
2574
        JMP     [_MsiGetFeatureValidStates]
 
2575
  end;
 
2576
end;
 
2577
 
 
2578
var
 
2579
  _MsiGetSourcePathA: Pointer;
 
2580
 
 
2581
function MsiGetSourcePathA;
 
2582
begin
 
2583
  GetProcedureAddress(_MsiGetSourcePathA, msilib, 'MsiGetSourcePathA');
 
2584
  asm
 
2585
        MOV     ESP, EBP
 
2586
        POP     EBP
 
2587
        JMP     [_MsiGetSourcePathA]
 
2588
  end;
 
2589
end;
 
2590
 
 
2591
var
 
2592
  _MsiGetSourcePathW: Pointer;
 
2593
 
 
2594
function MsiGetSourcePathW;
 
2595
begin
 
2596
  GetProcedureAddress(_MsiGetSourcePathW, msilib, 'MsiGetSourcePathW');
 
2597
  asm
 
2598
        MOV     ESP, EBP
 
2599
        POP     EBP
 
2600
        JMP     [_MsiGetSourcePathW]
 
2601
  end;
 
2602
end;
 
2603
 
 
2604
var
 
2605
  _MsiGetSourcePath: Pointer;
 
2606
 
 
2607
function MsiGetSourcePath;
 
2608
begin
 
2609
  GetProcedureAddress(_MsiGetSourcePath, msilib, 'MsiGetSourcePath' + AWSuffix);
 
2610
  asm
 
2611
        MOV     ESP, EBP
 
2612
        POP     EBP
 
2613
        JMP     [_MsiGetSourcePath]
 
2614
  end;
 
2615
end;
 
2616
 
 
2617
var
 
2618
  _MsiGetTargetPathA: Pointer;
 
2619
 
 
2620
function MsiGetTargetPathA;
 
2621
begin
 
2622
  GetProcedureAddress(_MsiGetTargetPathA, msilib, 'MsiGetTargetPathA');
 
2623
  asm
 
2624
        MOV     ESP, EBP
 
2625
        POP     EBP
 
2626
        JMP     [_MsiGetTargetPathA]
 
2627
  end;
 
2628
end;
 
2629
 
 
2630
var
 
2631
  _MsiGetTargetPathW: Pointer;
 
2632
 
 
2633
function MsiGetTargetPathW;
 
2634
begin
 
2635
  GetProcedureAddress(_MsiGetTargetPathW, msilib, 'MsiGetTargetPathW');
 
2636
  asm
 
2637
        MOV     ESP, EBP
 
2638
        POP     EBP
 
2639
        JMP     [_MsiGetTargetPathW]
 
2640
  end;
 
2641
end;
 
2642
 
 
2643
var
 
2644
  _MsiGetTargetPath: Pointer;
 
2645
 
 
2646
function MsiGetTargetPath;
 
2647
begin
 
2648
  GetProcedureAddress(_MsiGetTargetPath, msilib, 'MsiGetTargetPath' + AWSuffix);
 
2649
  asm
 
2650
        MOV     ESP, EBP
 
2651
        POP     EBP
 
2652
        JMP     [_MsiGetTargetPath]
 
2653
  end;
 
2654
end;
 
2655
 
 
2656
var
 
2657
  _MsiSetTargetPathA: Pointer;
 
2658
 
 
2659
function MsiSetTargetPathA;
 
2660
begin
 
2661
  GetProcedureAddress(_MsiSetTargetPathA, msilib, 'MsiSetTargetPathA');
 
2662
  asm
 
2663
        MOV     ESP, EBP
 
2664
        POP     EBP
 
2665
        JMP     [_MsiSetTargetPathA]
 
2666
  end;
 
2667
end;
 
2668
 
 
2669
var
 
2670
  _MsiSetTargetPathW: Pointer;
 
2671
 
 
2672
function MsiSetTargetPathW;
 
2673
begin
 
2674
  GetProcedureAddress(_MsiSetTargetPathW, msilib, 'MsiSetTargetPathW');
 
2675
  asm
 
2676
        MOV     ESP, EBP
 
2677
        POP     EBP
 
2678
        JMP     [_MsiSetTargetPathW]
 
2679
  end;
 
2680
end;
 
2681
 
 
2682
var
 
2683
  _MsiSetTargetPath: Pointer;
 
2684
 
 
2685
function MsiSetTargetPath;
 
2686
begin
 
2687
  GetProcedureAddress(_MsiSetTargetPath, msilib, 'MsiSetTargetPath' + AWSuffix);
 
2688
  asm
 
2689
        MOV     ESP, EBP
 
2690
        POP     EBP
 
2691
        JMP     [_MsiSetTargetPath]
 
2692
  end;
 
2693
end;
 
2694
 
 
2695
var
 
2696
  _MsiVerifyDiskSpace: Pointer;
 
2697
 
 
2698
function MsiVerifyDiskSpace;
 
2699
begin
 
2700
  GetProcedureAddress(_MsiVerifyDiskSpace, msilib, 'MsiVerifyDiskSpace');
 
2701
  asm
 
2702
        MOV     ESP, EBP
 
2703
        POP     EBP
 
2704
        JMP     [_MsiVerifyDiskSpace]
 
2705
  end;
 
2706
end;
 
2707
 
 
2708
var
 
2709
  _MsiEnableUIPreview: Pointer;
 
2710
 
 
2711
function MsiEnableUIPreview;
 
2712
begin
 
2713
  GetProcedureAddress(_MsiEnableUIPreview, msilib, 'MsiEnableUIPreview');
 
2714
  asm
 
2715
        MOV     ESP, EBP
 
2716
        POP     EBP
 
2717
        JMP     [_MsiEnableUIPreview]
 
2718
  end;
 
2719
end;
 
2720
 
 
2721
var
 
2722
  _MsiPreviewDialogA: Pointer;
 
2723
 
 
2724
function MsiPreviewDialogA;
 
2725
begin
 
2726
  GetProcedureAddress(_MsiPreviewDialogA, msilib, 'MsiPreviewDialogA');
 
2727
  asm
 
2728
        MOV     ESP, EBP
 
2729
        POP     EBP
 
2730
        JMP     [_MsiPreviewDialogA]
 
2731
  end;
 
2732
end;
 
2733
 
 
2734
var
 
2735
  _MsiPreviewDialogW: Pointer;
 
2736
 
 
2737
function MsiPreviewDialogW;
 
2738
begin
 
2739
  GetProcedureAddress(_MsiPreviewDialogW, msilib, 'MsiPreviewDialogW');
 
2740
  asm
 
2741
        MOV     ESP, EBP
 
2742
        POP     EBP
 
2743
        JMP     [_MsiPreviewDialogW]
 
2744
  end;
 
2745
end;
 
2746
 
 
2747
var
 
2748
  _MsiPreviewDialog: Pointer;
 
2749
 
 
2750
function MsiPreviewDialog;
 
2751
begin
 
2752
  GetProcedureAddress(_MsiPreviewDialog, msilib, 'MsiPreviewDialog' + AWSuffix);
 
2753
  asm
 
2754
        MOV     ESP, EBP
 
2755
        POP     EBP
 
2756
        JMP     [_MsiPreviewDialog]
 
2757
  end;
 
2758
end;
 
2759
 
 
2760
var
 
2761
  _MsiPreviewBillboardA: Pointer;
 
2762
 
 
2763
function MsiPreviewBillboardA;
 
2764
begin
 
2765
  GetProcedureAddress(_MsiPreviewBillboardA, msilib, 'MsiPreviewBillboardA');
 
2766
  asm
 
2767
        MOV     ESP, EBP
 
2768
        POP     EBP
 
2769
        JMP     [_MsiPreviewBillboardA]
 
2770
  end;
 
2771
end;
 
2772
 
 
2773
var
 
2774
  _MsiPreviewBillboardW: Pointer;
 
2775
 
 
2776
function MsiPreviewBillboardW;
 
2777
begin
 
2778
  GetProcedureAddress(_MsiPreviewBillboardW, msilib, 'MsiPreviewBillboardW');
 
2779
  asm
 
2780
        MOV     ESP, EBP
 
2781
        POP     EBP
 
2782
        JMP     [_MsiPreviewBillboardW]
 
2783
  end;
 
2784
end;
 
2785
 
 
2786
var
 
2787
  _MsiPreviewBillboard: Pointer;
 
2788
 
 
2789
function MsiPreviewBillboard;
 
2790
begin
 
2791
  GetProcedureAddress(_MsiPreviewBillboard, msilib, 'MsiPreviewBillboard' + AWSuffix);
 
2792
  asm
 
2793
        MOV     ESP, EBP
 
2794
        POP     EBP
 
2795
        JMP     [_MsiPreviewBillboard]
 
2796
  end;
 
2797
end;
 
2798
 
 
2799
var
 
2800
  _MsiGetLastErrorRecord: Pointer;
 
2801
 
 
2802
function MsiGetLastErrorRecord;
 
2803
begin
 
2804
  GetProcedureAddress(_MsiGetLastErrorRecord, msilib, 'MsiGetLastErrorRecord');
 
2805
  asm
 
2806
        MOV     ESP, EBP
 
2807
        POP     EBP
 
2808
        JMP     [_MsiGetLastErrorRecord]
 
2809
  end;
 
2810
end;
 
2811
 
 
2812
{$ELSE}
 
2813
 
 
2814
function MsiDatabaseOpenViewA; external msilib name 'MsiDatabaseOpenViewA';
 
2815
function MsiDatabaseOpenViewW; external msilib name 'MsiDatabaseOpenViewW';
 
2816
function MsiDatabaseOpenView; external msilib name 'MsiDatabaseOpenView' + AWSuffix;
 
2817
function MsiViewGetErrorA; external msilib name 'MsiViewGetErrorA';
 
2818
function MsiViewGetErrorW; external msilib name 'MsiViewGetErrorW';
 
2819
function MsiViewGetError; external msilib name 'MsiViewGetError' + AWSuffix;
 
2820
function MsiViewExecute; external msilib name 'MsiViewExecute';
 
2821
function MsiViewFetch; external msilib name 'MsiViewFetch';
 
2822
function MsiViewModify; external msilib name 'MsiViewModify';
 
2823
function MsiViewGetColumnInfo; external msilib name 'MsiViewGetColumnInfo';
 
2824
function MsiViewClose; external msilib name 'MsiViewClose';
 
2825
function MsiDatabaseGetPrimaryKeysA; external msilib name 'MsiDatabaseGetPrimaryKeysA';
 
2826
function MsiDatabaseGetPrimaryKeysW; external msilib name 'MsiDatabaseGetPrimaryKeysW';
 
2827
function MsiDatabaseGetPrimaryKeys; external msilib name 'MsiDatabaseGetPrimaryKeys' + AWSuffix;
 
2828
function MsiDatabaseIsTablePersistentA; external msilib name 'MsiDatabaseIsTablePersistentA';
 
2829
function MsiDatabaseIsTablePersistentW; external msilib name 'MsiDatabaseIsTablePersistentW';
 
2830
function MsiDatabaseIsTablePersistent; external msilib name 'MsiDatabaseIsTablePersistent' + AWSuffix;
 
2831
function MsiGetSummaryInformationA; external msilib name 'MsiGetSummaryInformationA';
 
2832
function MsiGetSummaryInformationW; external msilib name 'MsiGetSummaryInformationW';
 
2833
function MsiGetSummaryInformation; external msilib name 'MsiGetSummaryInformation' + AWSuffix;
 
2834
function MsiSummaryInfoGetPropertyCount; external msilib name 'MsiSummaryInfoGetPropertyCount';
 
2835
function MsiSummaryInfoSetPropertyA; external msilib name 'MsiSummaryInfoSetPropertyA';
 
2836
function MsiSummaryInfoSetPropertyW; external msilib name 'MsiSummaryInfoSetPropertyW';
 
2837
function MsiSummaryInfoSetProperty; external msilib name 'MsiSummaryInfoSetProperty' + AWSuffix;
 
2838
function MsiSummaryInfoGetPropertyA; external msilib name 'MsiSummaryInfoGetPropertyA';
 
2839
function MsiSummaryInfoGetPropertyW; external msilib name 'MsiSummaryInfoGetPropertyW';
 
2840
function MsiSummaryInfoGetProperty; external msilib name 'MsiSummaryInfoGetProperty' + AWSuffix;
 
2841
function MsiSummaryInfoPersist; external msilib name 'MsiSummaryInfoPersist';
 
2842
function MsiOpenDatabaseA; external msilib name 'MsiOpenDatabaseA';
 
2843
function MsiOpenDatabaseW; external msilib name 'MsiOpenDatabaseW';
 
2844
function MsiOpenDatabase; external msilib name 'MsiOpenDatabase' + AWSuffix;
 
2845
function MsiDatabaseImportA; external msilib name 'MsiDatabaseImportA';
 
2846
function MsiDatabaseImportW; external msilib name 'MsiDatabaseImportW';
 
2847
function MsiDatabaseImport; external msilib name 'MsiDatabaseImport' + AWSuffix;
 
2848
function MsiDatabaseExportA; external msilib name 'MsiDatabaseExportA';
 
2849
function MsiDatabaseExportW; external msilib name 'MsiDatabaseExportW';
 
2850
function MsiDatabaseExport; external msilib name 'MsiDatabaseExport' + AWSuffix;
 
2851
function MsiDatabaseMergeA; external msilib name 'MsiDatabaseMergeA';
 
2852
function MsiDatabaseMergeW; external msilib name 'MsiDatabaseMergeW';
 
2853
function MsiDatabaseMerge; external msilib name 'MsiDatabaseMerge' + AWSuffix;
 
2854
function MsiDatabaseGenerateTransformA; external msilib name 'MsiDatabaseGenerateTransformA';
 
2855
function MsiDatabaseGenerateTransformW; external msilib name 'MsiDatabaseGenerateTransformW';
 
2856
function MsiDatabaseGenerateTransform; external msilib name 'MsiDatabaseGenerateTransform' + AWSuffix;
 
2857
function MsiDatabaseApplyTransformA; external msilib name 'MsiDatabaseApplyTransformA';
 
2858
function MsiDatabaseApplyTransformW; external msilib name 'MsiDatabaseApplyTransformW';
 
2859
function MsiDatabaseApplyTransform; external msilib name 'MsiDatabaseApplyTransform' + AWSuffix;
 
2860
function MsiCreateTransformSummaryInfoA; external msilib name 'MsiCreateTransformSummaryInfoA';
 
2861
function MsiCreateTransformSummaryInfoW; external msilib name 'MsiCreateTransformSummaryInfoW';
 
2862
function MsiCreateTransformSummaryInfo; external msilib name 'MsiCreateTransformSummaryInfo' + AWSuffix;
 
2863
function MsiDatabaseCommit; external msilib name 'MsiDatabaseCommit';
 
2864
function MsiGetDatabaseState; external msilib name 'MsiGetDatabaseState';
 
2865
function MsiCreateRecord; external msilib name 'MsiCreateRecord';
 
2866
function MsiRecordIsNull; external msilib name 'MsiRecordIsNull';
 
2867
function MsiRecordDataSize; external msilib name 'MsiRecordDataSize';
 
2868
function MsiRecordSetInteger; external msilib name 'MsiRecordSetInteger';
 
2869
function MsiRecordSetStringA; external msilib name 'MsiRecordSetStringA';
 
2870
function MsiRecordSetStringW; external msilib name 'MsiRecordSetStringW';
 
2871
function MsiRecordSetString; external msilib name 'MsiRecordSetString' + AWSuffix;
 
2872
function MsiRecordGetInteger; external msilib name 'MsiRecordGetInteger';
 
2873
function MsiRecordGetStringA; external msilib name 'MsiRecordGetStringA';
 
2874
function MsiRecordGetStringW; external msilib name 'MsiRecordGetStringW';
 
2875
function MsiRecordGetString; external msilib name 'MsiRecordGetString' + AWSuffix;
 
2876
function MsiRecordGetFieldCount; external msilib name 'MsiRecordGetFieldCount';
 
2877
function MsiRecordSetStreamA; external msilib name 'MsiRecordSetStreamA';
 
2878
function MsiRecordSetStreamW; external msilib name 'MsiRecordSetStreamW';
 
2879
function MsiRecordSetStream; external msilib name 'MsiRecordSetStream' + AWSuffix;
 
2880
function MsiRecordReadStream; external msilib name 'MsiRecordReadStream';
 
2881
function MsiRecordClearData; external msilib name 'MsiRecordClearData';
 
2882
function MsiGetActiveDatabase; external msilib name 'MsiGetActiveDatabase';
 
2883
function MsiSetPropertyA; external msilib name 'MsiSetPropertyA';
 
2884
function MsiSetPropertyW; external msilib name 'MsiSetPropertyW';
 
2885
function MsiSetProperty; external msilib name 'MsiSetProperty' + AWSuffix;
 
2886
function MsiGetPropertyA; external msilib name 'MsiGetPropertyA';
 
2887
function MsiGetPropertyW; external msilib name 'MsiGetPropertyW';
 
2888
function MsiGetProperty; external msilib name 'MsiGetProperty' + AWSuffix;
 
2889
function MsiGetLanguage; external msilib name 'MsiGetLanguage';
 
2890
function MsiGetMode; external msilib name 'MsiGetMode';
 
2891
function MsiSetMode; external msilib name 'MsiSetMode';
 
2892
function MsiFormatRecordA; external msilib name 'MsiFormatRecordA';
 
2893
function MsiFormatRecordW; external msilib name 'MsiFormatRecordW';
 
2894
function MsiFormatRecord; external msilib name 'MsiFormatRecord' + AWSuffix;
 
2895
function MsiDoActionA; external msilib name 'MsiDoActionA';
 
2896
function MsiDoActionW; external msilib name 'MsiDoActionW';
 
2897
function MsiDoAction; external msilib name 'MsiDoAction' + AWSuffix;
 
2898
function MsiSequenceA; external msilib name 'MsiSequenceA';
 
2899
function MsiSequenceW; external msilib name 'MsiSequenceW';
 
2900
function MsiSequence; external msilib name 'MsiSequence' + AWSuffix;
 
2901
function MsiProcessMessage; external msilib name 'MsiProcessMessage';
 
2902
function MsiEvaluateConditionA; external msilib name 'MsiEvaluateConditionA';
 
2903
function MsiEvaluateConditionW; external msilib name 'MsiEvaluateConditionW';
 
2904
function MsiEvaluateCondition; external msilib name 'MsiEvaluateCondition' + AWSuffix;
 
2905
function MsiGetFeatureStateA; external msilib name 'MsiGetFeatureStateA';
 
2906
function MsiGetFeatureStateW; external msilib name 'MsiGetFeatureStateW';
 
2907
function MsiGetFeatureState; external msilib name 'MsiGetFeatureState' + AWSuffix;
 
2908
function MsiSetFeatureStateA; external msilib name 'MsiSetFeatureStateA';
 
2909
function MsiSetFeatureStateW; external msilib name 'MsiSetFeatureStateW';
 
2910
function MsiSetFeatureState; external msilib name 'MsiSetFeatureState' + AWSuffix;
 
2911
function MsiSetFeatureAttributesA; external msilib name 'MsiSetFeatureAttributesA';
 
2912
function MsiSetFeatureAttributesW; external msilib name 'MsiSetFeatureAttributesW';
 
2913
function MsiSetFeatureAttributes; external msilib name 'MsiSetFeatureAttributes' + AWSuffix;
 
2914
function MsiGetComponentStateA; external msilib name 'MsiGetComponentStateA';
 
2915
function MsiGetComponentStateW; external msilib name 'MsiGetComponentStateW';
 
2916
function MsiGetComponentState; external msilib name 'MsiGetComponentState' + AWSuffix;
 
2917
function MsiSetComponentStateA; external msilib name 'MsiSetComponentStateA';
 
2918
function MsiSetComponentStateW; external msilib name 'MsiSetComponentStateW';
 
2919
function MsiSetComponentState; external msilib name 'MsiSetComponentState' + AWSuffix;
 
2920
function MsiGetFeatureCostA; external msilib name 'MsiGetFeatureCostA';
 
2921
function MsiGetFeatureCostW; external msilib name 'MsiGetFeatureCostW';
 
2922
function MsiGetFeatureCost; external msilib name 'MsiGetFeatureCost' + AWSuffix;
 
2923
function MsiEnumComponentCostsA; external msilib name 'MsiEnumComponentCostsA';
 
2924
function MsiEnumComponentCostsW; external msilib name 'MsiEnumComponentCostsW';
 
2925
function MsiEnumComponentCosts; external msilib name 'MsiEnumComponentCosts' + AWSuffix;
 
2926
function MsiSetInstallLevel; external msilib name 'MsiSetInstallLevel';
 
2927
function MsiGetFeatureValidStatesA; external msilib name 'MsiGetFeatureValidStatesA';
 
2928
function MsiGetFeatureValidStatesW; external msilib name 'MsiGetFeatureValidStatesW';
 
2929
function MsiGetFeatureValidStates; external msilib name 'MsiGetFeatureValidStates' + AWSuffix;
 
2930
function MsiGetSourcePathA; external msilib name 'MsiGetSourcePathA';
 
2931
function MsiGetSourcePathW; external msilib name 'MsiGetSourcePathW';
 
2932
function MsiGetSourcePath; external msilib name 'MsiGetSourcePath' + AWSuffix;
 
2933
function MsiGetTargetPathA; external msilib name 'MsiGetTargetPathA';
 
2934
function MsiGetTargetPathW; external msilib name 'MsiGetTargetPathW';
 
2935
function MsiGetTargetPath; external msilib name 'MsiGetTargetPath' + AWSuffix;
 
2936
function MsiSetTargetPathA; external msilib name 'MsiSetTargetPathA';
 
2937
function MsiSetTargetPathW; external msilib name 'MsiSetTargetPathW';
 
2938
function MsiSetTargetPath; external msilib name 'MsiSetTargetPath' + AWSuffix;
 
2939
function MsiVerifyDiskSpace; external msilib name 'MsiVerifyDiskSpace';
 
2940
function MsiEnableUIPreview; external msilib name 'MsiEnableUIPreview';
 
2941
function MsiPreviewDialogA; external msilib name 'MsiPreviewDialogA';
 
2942
function MsiPreviewDialogW; external msilib name 'MsiPreviewDialogW';
 
2943
function MsiPreviewDialog; external msilib name 'MsiPreviewDialog' + AWSuffix;
 
2944
function MsiPreviewBillboardA; external msilib name 'MsiPreviewBillboardA';
 
2945
function MsiPreviewBillboardW; external msilib name 'MsiPreviewBillboardW';
 
2946
function MsiPreviewBillboard; external msilib name 'MsiPreviewBillboard' + AWSuffix;
 
2947
function MsiGetLastErrorRecord; external msilib name 'MsiGetLastErrorRecord';
 
2948
 
 
2949
{$ENDIF DYNAMIC_LINK}
 
2950
 
 
2951
end.