1
{******************************************************************************}
3
{ MSI Patch Wizard API interface Unit for Object Pascal }
5
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
6
{ Corporation. All Rights Reserved. }
8
{ The original file is: patchwiz.h, released August 2001. The original Pascal }
9
{ code is: PatchWiz.pas, released December 2001. The initial developer of the }
10
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
12
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
13
{ Marcel van Brakel. All Rights Reserved. }
15
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
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 }
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 }
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. }
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. }
39
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
41
{******************************************************************************}
43
// $Id: jwapatchwiz.pas,v 1.1 2005/04/04 07:56:10 marco Exp $
50
{$HPPEMIT '#include "PatchWiz.h"'}
60
(* PATCHWIZ.H - public header file for PATCHWIZ.DLL *)
63
** UINT WINAPI UiCreatePatchPackage ( LPTSTR szPcpPath,
64
** LPTSTR szPatchPath, LPTSTR szLogPath, HWND hwndStatus,
65
** LPTSTR szTempFolder, BOOL fRemoveTempFolderIfPresent );
68
** szPcpPath - full absolute path to Windows Installer database
69
** (PCP file) that contains appropriate tables of input-data for
70
** Patch creation process such as Properties and TargetImages.
71
** szPatchPath - optional, full absolute path to Patching Package
72
** file (MSP file) to create and stuff with output. If this
73
** NULL or an empty string, the api will try to use
74
** Properties.Value where Properties.Name = PatchOutputPath
76
** szLogPath - optional, full absolute path to text log file to
77
** append to. Caller should truncate file if wanted.
78
** hwndStatus - optional, window handle to display status text.
79
** More details to come later.
80
** szTempFolder - optional location to use for temp files.
81
** Default is %TEMP%\~pcw_tmp.tmp\.
82
** fRemoveTempFolderIfPresent - remove temp folder (and all its
83
** contents) if present. If FALSE and folder is present, api
86
** Return Values: ERROR_SUCCESS, plus ERROR_PCW_* that follow.
90
ERROR_PCW_BASE = DWORD($C00E5101);
91
{$EXTERNALSYM ERROR_PCW_BASE}
93
ERROR_PCW_PCP_DOESNT_EXIST = ERROR_PCW_BASE + $00;
94
{$EXTERNALSYM ERROR_PCW_PCP_DOESNT_EXIST}
95
ERROR_PCW_PCP_BAD_FORMAT = ERROR_PCW_BASE + $01;
96
{$EXTERNALSYM ERROR_PCW_PCP_BAD_FORMAT}
97
ERROR_PCW_CANT_CREATE_TEMP_FOLDER = ERROR_PCW_BASE + $02;
98
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_TEMP_FOLDER}
99
ERROR_PCW_MISSING_PATCH_PATH = ERROR_PCW_BASE + $03;
100
{$EXTERNALSYM ERROR_PCW_MISSING_PATCH_PATH}
101
ERROR_PCW_CANT_OVERWRITE_PATCH = ERROR_PCW_BASE + $04;
102
{$EXTERNALSYM ERROR_PCW_CANT_OVERWRITE_PATCH}
103
ERROR_PCW_CANT_CREATE_PATCH_FILE = ERROR_PCW_BASE + $05;
104
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_PATCH_FILE}
105
ERROR_PCW_MISSING_PATCH_GUID = ERROR_PCW_BASE + $06;
106
{$EXTERNALSYM ERROR_PCW_MISSING_PATCH_GUID}
107
ERROR_PCW_BAD_PATCH_GUID = ERROR_PCW_BASE + $07;
108
{$EXTERNALSYM ERROR_PCW_BAD_PATCH_GUID}
109
ERROR_PCW_BAD_GUIDS_TO_REPLACE = ERROR_PCW_BASE + $08;
110
{$EXTERNALSYM ERROR_PCW_BAD_GUIDS_TO_REPLACE}
111
ERROR_PCW_BAD_TARGET_PRODUCT_CODE_LIST = ERROR_PCW_BASE + $09;
112
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_PRODUCT_CODE_LIST}
113
ERROR_PCW_NO_UPGRADED_IMAGES_TO_PATCH = ERROR_PCW_BASE + $0a;
114
{$EXTERNALSYM ERROR_PCW_NO_UPGRADED_IMAGES_TO_PATCH}
115
//#define ERROR_PCW_BAD_API_PATCHING_OPTION_FLAGS (ERROR_PCW_BASE + 0x0b) -- obsolete
116
ERROR_PCW_BAD_API_PATCHING_SYMBOL_FLAGS = ERROR_PCW_BASE + $0c;
117
{$EXTERNALSYM ERROR_PCW_BAD_API_PATCHING_SYMBOL_FLAGS}
118
ERROR_PCW_OODS_COPYING_MSI = ERROR_PCW_BASE + $0d;
119
{$EXTERNALSYM ERROR_PCW_OODS_COPYING_MSI}
120
ERROR_PCW_UPGRADED_IMAGE_NAME_TOO_LONG = ERROR_PCW_BASE + $0e;
121
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_NAME_TOO_LONG}
122
ERROR_PCW_BAD_UPGRADED_IMAGE_NAME = ERROR_PCW_BASE + $0f;
123
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_NAME}
125
ERROR_PCW_DUP_UPGRADED_IMAGE_NAME = ERROR_PCW_BASE + $10;
126
{$EXTERNALSYM ERROR_PCW_DUP_UPGRADED_IMAGE_NAME}
127
ERROR_PCW_UPGRADED_IMAGE_PATH_TOO_LONG = ERROR_PCW_BASE + $11;
128
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_TOO_LONG}
129
ERROR_PCW_UPGRADED_IMAGE_PATH_EMPTY = ERROR_PCW_BASE + $12;
130
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_EMPTY}
131
ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_EXIST = ERROR_PCW_BASE + $13;
132
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_EXIST}
133
ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_MSI = ERROR_PCW_BASE + $14;
134
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_MSI}
135
ERROR_PCW_UPGRADED_IMAGE_COMPRESSED = ERROR_PCW_BASE + $15;
136
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_COMPRESSED}
137
ERROR_PCW_TARGET_IMAGE_NAME_TOO_LONG = ERROR_PCW_BASE + $16;
138
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_NAME_TOO_LONG}
139
ERROR_PCW_BAD_TARGET_IMAGE_NAME = ERROR_PCW_BASE + $17;
140
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_NAME}
141
ERROR_PCW_DUP_TARGET_IMAGE_NAME = ERROR_PCW_BASE + $18;
142
{$EXTERNALSYM ERROR_PCW_DUP_TARGET_IMAGE_NAME}
143
ERROR_PCW_TARGET_IMAGE_PATH_TOO_LONG = ERROR_PCW_BASE + $19;
144
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_TOO_LONG}
145
ERROR_PCW_TARGET_IMAGE_PATH_EMPTY = ERROR_PCW_BASE + $1a;
146
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_EMPTY}
147
ERROR_PCW_TARGET_IMAGE_PATH_NOT_EXIST = ERROR_PCW_BASE + $1b;
148
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_NOT_EXIST}
149
ERROR_PCW_TARGET_IMAGE_PATH_NOT_MSI = ERROR_PCW_BASE + $1c;
150
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_NOT_MSI}
151
ERROR_PCW_TARGET_IMAGE_COMPRESSED = ERROR_PCW_BASE + $1d;
152
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_COMPRESSED}
153
ERROR_PCW_TARGET_BAD_PROD_VALIDATE = ERROR_PCW_BASE + $1e;
154
{$EXTERNALSYM ERROR_PCW_TARGET_BAD_PROD_VALIDATE}
155
ERROR_PCW_TARGET_BAD_PROD_CODE_VAL = ERROR_PCW_BASE + $1f;
156
{$EXTERNALSYM ERROR_PCW_TARGET_BAD_PROD_CODE_VAL}
158
ERROR_PCW_UPGRADED_MISSING_SRC_FILES = ERROR_PCW_BASE + $20;
159
{$EXTERNALSYM ERROR_PCW_UPGRADED_MISSING_SRC_FILES}
160
ERROR_PCW_TARGET_MISSING_SRC_FILES = ERROR_PCW_BASE + $21;
161
{$EXTERNALSYM ERROR_PCW_TARGET_MISSING_SRC_FILES}
162
ERROR_PCW_IMAGE_FAMILY_NAME_TOO_LONG = ERROR_PCW_BASE + $22;
163
{$EXTERNALSYM ERROR_PCW_IMAGE_FAMILY_NAME_TOO_LONG}
164
ERROR_PCW_BAD_IMAGE_FAMILY_NAME = ERROR_PCW_BASE + $23;
165
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_NAME}
166
ERROR_PCW_DUP_IMAGE_FAMILY_NAME = ERROR_PCW_BASE + $24;
167
{$EXTERNALSYM ERROR_PCW_DUP_IMAGE_FAMILY_NAME}
168
ERROR_PCW_BAD_IMAGE_FAMILY_SRC_PROP = ERROR_PCW_BASE + $25;
169
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_SRC_PROP}
170
ERROR_PCW_UFILEDATA_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $26;
171
{$EXTERNALSYM ERROR_PCW_UFILEDATA_LONG_FILE_TABLE_KEY}
172
ERROR_PCW_UFILEDATA_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $27;
173
{$EXTERNALSYM ERROR_PCW_UFILEDATA_BLANK_FILE_TABLE_KEY}
174
ERROR_PCW_UFILEDATA_MISSING_FILE_TABLE_KEY = ERROR_PCW_BASE + $28;
175
{$EXTERNALSYM ERROR_PCW_UFILEDATA_MISSING_FILE_TABLE_KEY}
176
ERROR_PCW_EXTFILE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $29;
177
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_FILE_TABLE_KEY}
178
ERROR_PCW_EXTFILE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $2a;
179
{$EXTERNALSYM ERROR_PCW_EXTFILE_BLANK_FILE_TABLE_KEY}
180
ERROR_PCW_EXTFILE_BAD_FAMILY_FIELD = ERROR_PCW_BASE + $2b;
181
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_FAMILY_FIELD}
182
ERROR_PCW_EXTFILE_LONG_PATH_TO_FILE = ERROR_PCW_BASE + $2c;
183
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_PATH_TO_FILE}
184
ERROR_PCW_EXTFILE_BLANK_PATH_TO_FILE = ERROR_PCW_BASE + $2d;
185
{$EXTERNALSYM ERROR_PCW_EXTFILE_BLANK_PATH_TO_FILE}
186
ERROR_PCW_EXTFILE_MISSING_FILE = ERROR_PCW_BASE + $2e;
187
{$EXTERNALSYM ERROR_PCW_EXTFILE_MISSING_FILE}
188
//#define ERROR_PCW_FILERANGE_LONG_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x2f) -- obsolete
190
//#define ERROR_PCW_FILERANGE_BLANK_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x30) -- obsolete
191
//#define ERROR_PCW_FILERANGE_MISSING_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x31) -- obsolete
192
//#define ERROR_PCW_FILERANGE_LONG_PATH_TO_FILE (ERROR_PCW_BASE + 0x32) -- obsolete
193
//#define ERROR_PCW_FILERANGE_MISSING_FILE (ERROR_PCW_BASE + 0x33) -- obsolete
194
//#define ERROR_PCW_FILERANGE_INVALID_OFFSET (ERROR_PCW_BASE + 0x34) -- obsolete
195
//#define ERROR_PCW_FILERANGE_INVALID_SIZE (ERROR_PCW_BASE + 0x35) -- obsolete
196
//#define ERROR_PCW_FILERANGE_INVALID_RETAIN (ERROR_PCW_BASE + 0x36) -- obsolete
197
//#define ERROR_PCW_BAD_MEDIA_SRC_PROP_NAME (ERROR_PCW_BASE + 0x37) -- obsolete
198
//#define ERROR_PCW_BAD_MEDIA_DISK_ID (ERROR_PCW_BASE + 0x38) -- obsolete
199
ERROR_PCW_BAD_FILE_SEQUENCE_START = ERROR_PCW_BASE + $39;
200
{$EXTERNALSYM ERROR_PCW_BAD_FILE_SEQUENCE_START}
201
ERROR_PCW_CANT_COPY_FILE_TO_TEMP_FOLDER = ERROR_PCW_BASE + $3a;
202
{$EXTERNALSYM ERROR_PCW_CANT_COPY_FILE_TO_TEMP_FOLDER}
203
ERROR_PCW_CANT_CREATE_ONE_PATCH_FILE = ERROR_PCW_BASE + $3b;
204
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_ONE_PATCH_FILE}
205
ERROR_PCW_BAD_IMAGE_FAMILY_DISKID = ERROR_PCW_BASE + $3c;
206
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_DISKID}
207
ERROR_PCW_BAD_IMAGE_FAMILY_FILESEQSTART = ERROR_PCW_BASE + $3d;
208
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_FILESEQSTART}
209
ERROR_PCW_BAD_UPGRADED_IMAGE_FAMILY = ERROR_PCW_BASE + $3e;
210
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_FAMILY}
211
ERROR_PCW_BAD_TARGET_IMAGE_UPGRADED = ERROR_PCW_BASE + $3f;
212
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_UPGRADED}
214
ERROR_PCW_DUP_TARGET_IMAGE_PACKCODE = ERROR_PCW_BASE + $40;
215
{$EXTERNALSYM ERROR_PCW_DUP_TARGET_IMAGE_PACKCODE}
216
ERROR_PCW_UFILEDATA_BAD_UPGRADED_FIELD = ERROR_PCW_BASE + $41;
217
{$EXTERNALSYM ERROR_PCW_UFILEDATA_BAD_UPGRADED_FIELD}
218
ERROR_PCW_MISMATCHED_PRODUCT_CODES = ERROR_PCW_BASE + $42;
219
{$EXTERNALSYM ERROR_PCW_MISMATCHED_PRODUCT_CODES}
220
ERROR_PCW_MISMATCHED_PRODUCT_VERSIONS = ERROR_PCW_BASE + $43;
221
{$EXTERNALSYM ERROR_PCW_MISMATCHED_PRODUCT_VERSIONS}
222
ERROR_PCW_CANNOT_WRITE_DDF = ERROR_PCW_BASE + $44;
223
{$EXTERNALSYM ERROR_PCW_CANNOT_WRITE_DDF}
224
ERROR_PCW_CANNOT_RUN_MAKECAB = ERROR_PCW_BASE + $45;
225
{$EXTERNALSYM ERROR_PCW_CANNOT_RUN_MAKECAB}
226
//#define ERROR_PCW_CANNOT_CREATE_STORAGE (ERROR_PCW_BASE + 0x46) -- obsolete
227
//#define ERROR_PCW_CANNOT_CREATE_STREAM (ERROR_PCW_BASE + 0x47) -- obsolete
228
//#define ERROR_PCW_CANNOT_WRITE_STREAM (ERROR_PCW_BASE + 0x48) -- obsolete
229
//#define ERROR_PCW_CANNOT_READ_CABINET (ERROR_PCW_BASE + 0x49) -- obsolete
230
ERROR_PCW_WRITE_SUMMARY_PROPERTIES = ERROR_PCW_BASE + $4a;
231
{$EXTERNALSYM ERROR_PCW_WRITE_SUMMARY_PROPERTIES}
232
ERROR_PCW_TFILEDATA_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $4b;
233
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_FILE_TABLE_KEY}
234
ERROR_PCW_TFILEDATA_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $4c;
235
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BLANK_FILE_TABLE_KEY}
236
ERROR_PCW_TFILEDATA_MISSING_FILE_TABLE_KEY = ERROR_PCW_BASE + $4d;
237
{$EXTERNALSYM ERROR_PCW_TFILEDATA_MISSING_FILE_TABLE_KEY}
238
ERROR_PCW_TFILEDATA_BAD_TARGET_FIELD = ERROR_PCW_BASE + $4e;
239
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_TARGET_FIELD}
240
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_TOO_LONG = ERROR_PCW_BASE + $4f;
241
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_TOO_LONG}
243
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_EXIST = ERROR_PCW_BASE + $50;
244
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_EXIST}
245
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_MSI = ERROR_PCW_BASE + $51;
246
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_MSI}
247
ERROR_PCW_DUP_UPGRADED_IMAGE_PACKCODE = ERROR_PCW_BASE + $52;
248
{$EXTERNALSYM ERROR_PCW_DUP_UPGRADED_IMAGE_PACKCODE}
249
ERROR_PCW_UFILEIGNORE_BAD_UPGRADED_FIELD = ERROR_PCW_BASE + $53;
250
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BAD_UPGRADED_FIELD}
251
ERROR_PCW_UFILEIGNORE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $54;
252
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_LONG_FILE_TABLE_KEY}
253
ERROR_PCW_UFILEIGNORE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $55;
254
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BLANK_FILE_TABLE_KEY}
255
ERROR_PCW_UFILEIGNORE_BAD_FILE_TABLE_KEY = ERROR_PCW_BASE + $56;
256
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BAD_FILE_TABLE_KEY}
257
ERROR_PCW_FAMILY_RANGE_NAME_TOO_LONG = ERROR_PCW_BASE + $57;
258
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_NAME_TOO_LONG}
259
ERROR_PCW_BAD_FAMILY_RANGE_NAME = ERROR_PCW_BASE + $58;
260
{$EXTERNALSYM ERROR_PCW_BAD_FAMILY_RANGE_NAME}
261
ERROR_PCW_FAMILY_RANGE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $59;
262
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_FILE_TABLE_KEY}
263
ERROR_PCW_FAMILY_RANGE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $5a;
264
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_FILE_TABLE_KEY}
265
ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $5b;
266
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_OFFSETS}
267
ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_OFFSETS = ERROR_PCW_BASE + $5c;
268
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_OFFSETS}
269
ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $5d;
270
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_OFFSETS}
271
ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_LENGTHS = ERROR_PCW_BASE + $5e;
272
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_LENGTHS}
273
ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_LENGTHS = ERROR_PCW_BASE + $5f;
274
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_LENGTHS}
276
ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_LENGTHS = ERROR_PCW_BASE + $60;
277
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_LENGTHS}
278
ERROR_PCW_FAMILY_RANGE_COUNT_MISMATCH = ERROR_PCW_BASE + $61;
279
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_COUNT_MISMATCH}
280
ERROR_PCW_EXTFILE_LONG_IGNORE_OFFSETS = ERROR_PCW_BASE + $62;
281
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_IGNORE_OFFSETS}
282
ERROR_PCW_EXTFILE_BAD_IGNORE_OFFSETS = ERROR_PCW_BASE + $63;
283
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_IGNORE_OFFSETS}
284
ERROR_PCW_EXTFILE_LONG_IGNORE_LENGTHS = ERROR_PCW_BASE + $64;
285
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_IGNORE_LENGTHS}
286
ERROR_PCW_EXTFILE_BAD_IGNORE_LENGTHS = ERROR_PCW_BASE + $65;
287
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_IGNORE_LENGTHS}
288
ERROR_PCW_EXTFILE_IGNORE_COUNT_MISMATCH = ERROR_PCW_BASE + $66;
289
{$EXTERNALSYM ERROR_PCW_EXTFILE_IGNORE_COUNT_MISMATCH}
290
ERROR_PCW_EXTFILE_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $67;
291
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_RETAIN_OFFSETS}
292
ERROR_PCW_EXTFILE_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $68;
293
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_RETAIN_OFFSETS}
294
//#define ERROR_PCW_EXTFILE_RETAIN_COUNT_MISMATCH (ERROR_PCW_BASE + 0x69) -- obsolete
295
ERROR_PCW_TFILEDATA_LONG_IGNORE_OFFSETS = ERROR_PCW_BASE + $6a;
296
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_IGNORE_OFFSETS}
297
ERROR_PCW_TFILEDATA_BAD_IGNORE_OFFSETS = ERROR_PCW_BASE + $6b;
298
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_IGNORE_OFFSETS}
299
ERROR_PCW_TFILEDATA_LONG_IGNORE_LENGTHS = ERROR_PCW_BASE + $6c;
300
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_IGNORE_LENGTHS}
301
ERROR_PCW_TFILEDATA_BAD_IGNORE_LENGTHS = ERROR_PCW_BASE + $6d;
302
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_IGNORE_LENGTHS}
303
ERROR_PCW_TFILEDATA_IGNORE_COUNT_MISMATCH = ERROR_PCW_BASE + $6e;
304
{$EXTERNALSYM ERROR_PCW_TFILEDATA_IGNORE_COUNT_MISMATCH}
305
ERROR_PCW_TFILEDATA_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $6f;
306
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_RETAIN_OFFSETS}
308
ERROR_PCW_TFILEDATA_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $70;
309
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_RETAIN_OFFSETS}
310
//#define ERROR_PCW_TFILEDATA_RETAIN_COUNT_MISMATCH (ERROR_PCW_BASE + 0x71) -- obsolete
311
ERROR_PCW_CANT_GENERATE_TRANSFORM = ERROR_PCW_BASE + $72;
312
{$EXTERNALSYM ERROR_PCW_CANT_GENERATE_TRANSFORM}
313
ERROR_PCW_CANT_CREATE_SUMMARY_INFO = ERROR_PCW_BASE + $73;
314
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_SUMMARY_INFO}
315
ERROR_PCW_CANT_GENERATE_TRANSFORM_POUND = ERROR_PCW_BASE + $74;
316
{$EXTERNALSYM ERROR_PCW_CANT_GENERATE_TRANSFORM_POUND}
317
ERROR_PCW_CANT_CREATE_SUMMARY_INFO_POUND = ERROR_PCW_BASE + $75;
318
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_SUMMARY_INFO_POUND}
319
ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_CODE = ERROR_PCW_BASE + $76;
320
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_CODE}
321
ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_VERSION = ERROR_PCW_BASE + $77;
322
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_VERSION}
323
ERROR_PCW_BAD_UPGRADED_IMAGE_UPGRADE_CODE = ERROR_PCW_BASE + $78;
324
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_UPGRADE_CODE}
325
ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_CODE = ERROR_PCW_BASE + $79;
326
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_CODE}
327
ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_VERSION = ERROR_PCW_BASE + $7a;
328
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_VERSION}
329
ERROR_PCW_BAD_TARGET_IMAGE_UPGRADE_CODE = ERROR_PCW_BASE + $7b;
330
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_UPGRADE_CODE}
331
ERROR_PCW_MATCHED_PRODUCT_VERSIONS = ERROR_PCW_BASE + $7c;
332
{$EXTERNALSYM ERROR_PCW_MATCHED_PRODUCT_VERSIONS}
333
ERROR_PCW_NEXTxd = ERROR_PCW_BASE + $7d;
334
{$EXTERNALSYM ERROR_PCW_NEXTxd}
335
ERROR_PCW_NEXTxe = ERROR_PCW_BASE + $7e;
336
{$EXTERNALSYM ERROR_PCW_NEXTxe}
337
ERROR_PCW_NEXTxf = ERROR_PCW_BASE + $7f;
338
{$EXTERNALSYM ERROR_PCW_NEXTxf}
341
#define ERROR_PCW_NEXTx0 (ERROR_PCW_BASE + 0x80)
342
#define ERROR_PCW_NEXTx1 (ERROR_PCW_BASE + 0x81)
343
#define ERROR_PCW_NEXTx2 (ERROR_PCW_BASE + 0x82)
344
#define ERROR_PCW_NEXTx3 (ERROR_PCW_BASE + 0x83)
345
#define ERROR_PCW_NEXTx4 (ERROR_PCW_BASE + 0x84)
346
#define ERROR_PCW_NEXTx5 (ERROR_PCW_BASE + 0x85)
347
#define ERROR_PCW_NEXTx6 (ERROR_PCW_BASE + 0x86)
348
#define ERROR_PCW_NEXTx7 (ERROR_PCW_BASE + 0x87)
349
#define ERROR_PCW_NEXTx8 (ERROR_PCW_BASE + 0x88)
350
#define ERROR_PCW_NEXTx9 (ERROR_PCW_BASE + 0x89)
351
#define ERROR_PCW_NEXTxa (ERROR_PCW_BASE + 0x8a)
352
#define ERROR_PCW_NEXTxb (ERROR_PCW_BASE + 0x8b)
353
#define ERROR_PCW_NEXTxc (ERROR_PCW_BASE + 0x8c)
354
#define ERROR_PCW_NEXTxd (ERROR_PCW_BASE + 0x8d)
355
#define ERROR_PCW_NEXTxe (ERROR_PCW_BASE + 0x8e)
356
#define ERROR_PCW_NEXTxf (ERROR_PCW_BASE + 0x8f)
359
// Control IDs for hwndStatus child Text controls; title is required
361
IDC_STATUS_TITLE = $1cf0;
362
{$EXTERNALSYM IDC_STATUS_TITLE}
363
IDC_STATUS_DATA1 = $1cf1;
364
{$EXTERNALSYM IDC_STATUS_DATA1}
365
IDC_STATUS_DATA2 = $1cf2;
366
{$EXTERNALSYM IDC_STATUS_DATA2}
368
function UiCreatePatchPackageA(szaPcpPath, szaPatchPath, szaLogPath: LPSTR; hwndStatus: HWND; szaTempFolder: LPSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
369
{$EXTERNALSYM UiCreatePatchPackageA}
370
function UiCreatePatchPackageW(szwPcpPath, szwPatchPath, szwLogPath: LPWSTR; hwndStatus: HWND; szwTempFolder: LPWSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
371
{$EXTERNALSYM UiCreatePatchPackageW}
372
function UiCreatePatchPackage(szwPcpPath, szwPatchPath, szwLogPath: LPTSTR; hwndStatus: HWND; szwTempFolder: LPTSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
373
{$EXTERNALSYM UiCreatePatchPackage}
378
patchwiz = 'patchwiz.dll'; // mvb Installed in Samples\SysMgmt\Msi\Patching
385
{$IFDEF DYNAMIC_LINK}
388
_UiCreatePatchPackageA: Pointer;
390
function UiCreatePatchPackageA;
392
GetProcedureAddress(_UiCreatePatchPackageA, patchwiz, 'UiCreatePatchPackageA');
396
JMP [_UiCreatePatchPackageA]
401
_UiCreatePatchPackageW: Pointer;
403
function UiCreatePatchPackageW;
405
GetProcedureAddress(_UiCreatePatchPackageW, patchwiz, 'UiCreatePatchPackageW');
409
JMP [_UiCreatePatchPackageW]
414
_UiCreatePatchPackage: Pointer;
416
function UiCreatePatchPackage;
418
GetProcedureAddress(_UiCreatePatchPackage, patchwiz, 'UiCreatePatchPackage' + AWSuffix);
422
JMP [_UiCreatePatchPackage]
428
function UiCreatePatchPackageA; external patchwiz name 'UiCreatePatchPackageA';
429
function UiCreatePatchPackageW; external patchwiz name 'UiCreatePatchPackageW';
430
function UiCreatePatchPackage; external patchwiz name 'UiCreatePatchPackage' + AWSuffix;
432
{$ENDIF DYNAMIC_LINK}
1
{******************************************************************************}
3
{ MSI Patch Wizard API interface Unit for Object Pascal }
5
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
6
{ Corporation. All Rights Reserved. }
8
{ The original file is: patchwiz.h, released August 2001. The original Pascal }
9
{ code is: PatchWiz.pas, released December 2001. The initial developer of the }
10
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
12
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
13
{ Marcel van Brakel. All Rights Reserved. }
15
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
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 }
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 }
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. }
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. }
39
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
41
{******************************************************************************}
49
{$HPPEMIT '#include "PatchWiz.h"'}
59
(* PATCHWIZ.H - public header file for PATCHWIZ.DLL *)
62
** UINT WINAPI UiCreatePatchPackage ( LPTSTR szPcpPath,
63
** LPTSTR szPatchPath, LPTSTR szLogPath, HWND hwndStatus,
64
** LPTSTR szTempFolder, BOOL fRemoveTempFolderIfPresent );
67
** szPcpPath - full absolute path to Windows Installer database
68
** (PCP file) that contains appropriate tables of input-data for
69
** Patch creation process such as Properties and TargetImages.
70
** szPatchPath - optional, full absolute path to Patching Package
71
** file (MSP file) to create and stuff with output. If this
72
** NULL or an empty string, the api will try to use
73
** Properties.Value where Properties.Name = PatchOutputPath
75
** szLogPath - optional, full absolute path to text log file to
76
** append to. Caller should truncate file if wanted.
77
** hwndStatus - optional, window handle to display status text.
78
** More details to come later.
79
** szTempFolder - optional location to use for temp files.
80
** Default is %TEMP%\~pcw_tmp.tmp\.
81
** fRemoveTempFolderIfPresent - remove temp folder (and all its
82
** contents) if present. If FALSE and folder is present, api
85
** Return Values: ERROR_SUCCESS, plus ERROR_PCW_* that follow.
89
ERROR_PCW_BASE = DWORD($C00E5101);
90
{$EXTERNALSYM ERROR_PCW_BASE}
92
ERROR_PCW_PCP_DOESNT_EXIST = ERROR_PCW_BASE + $00;
93
{$EXTERNALSYM ERROR_PCW_PCP_DOESNT_EXIST}
94
ERROR_PCW_PCP_BAD_FORMAT = ERROR_PCW_BASE + $01;
95
{$EXTERNALSYM ERROR_PCW_PCP_BAD_FORMAT}
96
ERROR_PCW_CANT_CREATE_TEMP_FOLDER = ERROR_PCW_BASE + $02;
97
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_TEMP_FOLDER}
98
ERROR_PCW_MISSING_PATCH_PATH = ERROR_PCW_BASE + $03;
99
{$EXTERNALSYM ERROR_PCW_MISSING_PATCH_PATH}
100
ERROR_PCW_CANT_OVERWRITE_PATCH = ERROR_PCW_BASE + $04;
101
{$EXTERNALSYM ERROR_PCW_CANT_OVERWRITE_PATCH}
102
ERROR_PCW_CANT_CREATE_PATCH_FILE = ERROR_PCW_BASE + $05;
103
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_PATCH_FILE}
104
ERROR_PCW_MISSING_PATCH_GUID = ERROR_PCW_BASE + $06;
105
{$EXTERNALSYM ERROR_PCW_MISSING_PATCH_GUID}
106
ERROR_PCW_BAD_PATCH_GUID = ERROR_PCW_BASE + $07;
107
{$EXTERNALSYM ERROR_PCW_BAD_PATCH_GUID}
108
ERROR_PCW_BAD_GUIDS_TO_REPLACE = ERROR_PCW_BASE + $08;
109
{$EXTERNALSYM ERROR_PCW_BAD_GUIDS_TO_REPLACE}
110
ERROR_PCW_BAD_TARGET_PRODUCT_CODE_LIST = ERROR_PCW_BASE + $09;
111
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_PRODUCT_CODE_LIST}
112
ERROR_PCW_NO_UPGRADED_IMAGES_TO_PATCH = ERROR_PCW_BASE + $0a;
113
{$EXTERNALSYM ERROR_PCW_NO_UPGRADED_IMAGES_TO_PATCH}
114
//#define ERROR_PCW_BAD_API_PATCHING_OPTION_FLAGS (ERROR_PCW_BASE + 0x0b) -- obsolete
115
ERROR_PCW_BAD_API_PATCHING_SYMBOL_FLAGS = ERROR_PCW_BASE + $0c;
116
{$EXTERNALSYM ERROR_PCW_BAD_API_PATCHING_SYMBOL_FLAGS}
117
ERROR_PCW_OODS_COPYING_MSI = ERROR_PCW_BASE + $0d;
118
{$EXTERNALSYM ERROR_PCW_OODS_COPYING_MSI}
119
ERROR_PCW_UPGRADED_IMAGE_NAME_TOO_LONG = ERROR_PCW_BASE + $0e;
120
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_NAME_TOO_LONG}
121
ERROR_PCW_BAD_UPGRADED_IMAGE_NAME = ERROR_PCW_BASE + $0f;
122
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_NAME}
124
ERROR_PCW_DUP_UPGRADED_IMAGE_NAME = ERROR_PCW_BASE + $10;
125
{$EXTERNALSYM ERROR_PCW_DUP_UPGRADED_IMAGE_NAME}
126
ERROR_PCW_UPGRADED_IMAGE_PATH_TOO_LONG = ERROR_PCW_BASE + $11;
127
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_TOO_LONG}
128
ERROR_PCW_UPGRADED_IMAGE_PATH_EMPTY = ERROR_PCW_BASE + $12;
129
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_EMPTY}
130
ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_EXIST = ERROR_PCW_BASE + $13;
131
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_EXIST}
132
ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_MSI = ERROR_PCW_BASE + $14;
133
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_MSI}
134
ERROR_PCW_UPGRADED_IMAGE_COMPRESSED = ERROR_PCW_BASE + $15;
135
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_COMPRESSED}
136
ERROR_PCW_TARGET_IMAGE_NAME_TOO_LONG = ERROR_PCW_BASE + $16;
137
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_NAME_TOO_LONG}
138
ERROR_PCW_BAD_TARGET_IMAGE_NAME = ERROR_PCW_BASE + $17;
139
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_NAME}
140
ERROR_PCW_DUP_TARGET_IMAGE_NAME = ERROR_PCW_BASE + $18;
141
{$EXTERNALSYM ERROR_PCW_DUP_TARGET_IMAGE_NAME}
142
ERROR_PCW_TARGET_IMAGE_PATH_TOO_LONG = ERROR_PCW_BASE + $19;
143
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_TOO_LONG}
144
ERROR_PCW_TARGET_IMAGE_PATH_EMPTY = ERROR_PCW_BASE + $1a;
145
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_EMPTY}
146
ERROR_PCW_TARGET_IMAGE_PATH_NOT_EXIST = ERROR_PCW_BASE + $1b;
147
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_NOT_EXIST}
148
ERROR_PCW_TARGET_IMAGE_PATH_NOT_MSI = ERROR_PCW_BASE + $1c;
149
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_NOT_MSI}
150
ERROR_PCW_TARGET_IMAGE_COMPRESSED = ERROR_PCW_BASE + $1d;
151
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_COMPRESSED}
152
ERROR_PCW_TARGET_BAD_PROD_VALIDATE = ERROR_PCW_BASE + $1e;
153
{$EXTERNALSYM ERROR_PCW_TARGET_BAD_PROD_VALIDATE}
154
ERROR_PCW_TARGET_BAD_PROD_CODE_VAL = ERROR_PCW_BASE + $1f;
155
{$EXTERNALSYM ERROR_PCW_TARGET_BAD_PROD_CODE_VAL}
157
ERROR_PCW_UPGRADED_MISSING_SRC_FILES = ERROR_PCW_BASE + $20;
158
{$EXTERNALSYM ERROR_PCW_UPGRADED_MISSING_SRC_FILES}
159
ERROR_PCW_TARGET_MISSING_SRC_FILES = ERROR_PCW_BASE + $21;
160
{$EXTERNALSYM ERROR_PCW_TARGET_MISSING_SRC_FILES}
161
ERROR_PCW_IMAGE_FAMILY_NAME_TOO_LONG = ERROR_PCW_BASE + $22;
162
{$EXTERNALSYM ERROR_PCW_IMAGE_FAMILY_NAME_TOO_LONG}
163
ERROR_PCW_BAD_IMAGE_FAMILY_NAME = ERROR_PCW_BASE + $23;
164
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_NAME}
165
ERROR_PCW_DUP_IMAGE_FAMILY_NAME = ERROR_PCW_BASE + $24;
166
{$EXTERNALSYM ERROR_PCW_DUP_IMAGE_FAMILY_NAME}
167
ERROR_PCW_BAD_IMAGE_FAMILY_SRC_PROP = ERROR_PCW_BASE + $25;
168
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_SRC_PROP}
169
ERROR_PCW_UFILEDATA_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $26;
170
{$EXTERNALSYM ERROR_PCW_UFILEDATA_LONG_FILE_TABLE_KEY}
171
ERROR_PCW_UFILEDATA_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $27;
172
{$EXTERNALSYM ERROR_PCW_UFILEDATA_BLANK_FILE_TABLE_KEY}
173
ERROR_PCW_UFILEDATA_MISSING_FILE_TABLE_KEY = ERROR_PCW_BASE + $28;
174
{$EXTERNALSYM ERROR_PCW_UFILEDATA_MISSING_FILE_TABLE_KEY}
175
ERROR_PCW_EXTFILE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $29;
176
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_FILE_TABLE_KEY}
177
ERROR_PCW_EXTFILE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $2a;
178
{$EXTERNALSYM ERROR_PCW_EXTFILE_BLANK_FILE_TABLE_KEY}
179
ERROR_PCW_EXTFILE_BAD_FAMILY_FIELD = ERROR_PCW_BASE + $2b;
180
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_FAMILY_FIELD}
181
ERROR_PCW_EXTFILE_LONG_PATH_TO_FILE = ERROR_PCW_BASE + $2c;
182
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_PATH_TO_FILE}
183
ERROR_PCW_EXTFILE_BLANK_PATH_TO_FILE = ERROR_PCW_BASE + $2d;
184
{$EXTERNALSYM ERROR_PCW_EXTFILE_BLANK_PATH_TO_FILE}
185
ERROR_PCW_EXTFILE_MISSING_FILE = ERROR_PCW_BASE + $2e;
186
{$EXTERNALSYM ERROR_PCW_EXTFILE_MISSING_FILE}
187
//#define ERROR_PCW_FILERANGE_LONG_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x2f) -- obsolete
189
//#define ERROR_PCW_FILERANGE_BLANK_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x30) -- obsolete
190
//#define ERROR_PCW_FILERANGE_MISSING_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x31) -- obsolete
191
//#define ERROR_PCW_FILERANGE_LONG_PATH_TO_FILE (ERROR_PCW_BASE + 0x32) -- obsolete
192
//#define ERROR_PCW_FILERANGE_MISSING_FILE (ERROR_PCW_BASE + 0x33) -- obsolete
193
//#define ERROR_PCW_FILERANGE_INVALID_OFFSET (ERROR_PCW_BASE + 0x34) -- obsolete
194
//#define ERROR_PCW_FILERANGE_INVALID_SIZE (ERROR_PCW_BASE + 0x35) -- obsolete
195
//#define ERROR_PCW_FILERANGE_INVALID_RETAIN (ERROR_PCW_BASE + 0x36) -- obsolete
196
//#define ERROR_PCW_BAD_MEDIA_SRC_PROP_NAME (ERROR_PCW_BASE + 0x37) -- obsolete
197
//#define ERROR_PCW_BAD_MEDIA_DISK_ID (ERROR_PCW_BASE + 0x38) -- obsolete
198
ERROR_PCW_BAD_FILE_SEQUENCE_START = ERROR_PCW_BASE + $39;
199
{$EXTERNALSYM ERROR_PCW_BAD_FILE_SEQUENCE_START}
200
ERROR_PCW_CANT_COPY_FILE_TO_TEMP_FOLDER = ERROR_PCW_BASE + $3a;
201
{$EXTERNALSYM ERROR_PCW_CANT_COPY_FILE_TO_TEMP_FOLDER}
202
ERROR_PCW_CANT_CREATE_ONE_PATCH_FILE = ERROR_PCW_BASE + $3b;
203
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_ONE_PATCH_FILE}
204
ERROR_PCW_BAD_IMAGE_FAMILY_DISKID = ERROR_PCW_BASE + $3c;
205
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_DISKID}
206
ERROR_PCW_BAD_IMAGE_FAMILY_FILESEQSTART = ERROR_PCW_BASE + $3d;
207
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_FILESEQSTART}
208
ERROR_PCW_BAD_UPGRADED_IMAGE_FAMILY = ERROR_PCW_BASE + $3e;
209
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_FAMILY}
210
ERROR_PCW_BAD_TARGET_IMAGE_UPGRADED = ERROR_PCW_BASE + $3f;
211
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_UPGRADED}
213
ERROR_PCW_DUP_TARGET_IMAGE_PACKCODE = ERROR_PCW_BASE + $40;
214
{$EXTERNALSYM ERROR_PCW_DUP_TARGET_IMAGE_PACKCODE}
215
ERROR_PCW_UFILEDATA_BAD_UPGRADED_FIELD = ERROR_PCW_BASE + $41;
216
{$EXTERNALSYM ERROR_PCW_UFILEDATA_BAD_UPGRADED_FIELD}
217
ERROR_PCW_MISMATCHED_PRODUCT_CODES = ERROR_PCW_BASE + $42;
218
{$EXTERNALSYM ERROR_PCW_MISMATCHED_PRODUCT_CODES}
219
ERROR_PCW_MISMATCHED_PRODUCT_VERSIONS = ERROR_PCW_BASE + $43;
220
{$EXTERNALSYM ERROR_PCW_MISMATCHED_PRODUCT_VERSIONS}
221
ERROR_PCW_CANNOT_WRITE_DDF = ERROR_PCW_BASE + $44;
222
{$EXTERNALSYM ERROR_PCW_CANNOT_WRITE_DDF}
223
ERROR_PCW_CANNOT_RUN_MAKECAB = ERROR_PCW_BASE + $45;
224
{$EXTERNALSYM ERROR_PCW_CANNOT_RUN_MAKECAB}
225
//#define ERROR_PCW_CANNOT_CREATE_STORAGE (ERROR_PCW_BASE + 0x46) -- obsolete
226
//#define ERROR_PCW_CANNOT_CREATE_STREAM (ERROR_PCW_BASE + 0x47) -- obsolete
227
//#define ERROR_PCW_CANNOT_WRITE_STREAM (ERROR_PCW_BASE + 0x48) -- obsolete
228
//#define ERROR_PCW_CANNOT_READ_CABINET (ERROR_PCW_BASE + 0x49) -- obsolete
229
ERROR_PCW_WRITE_SUMMARY_PROPERTIES = ERROR_PCW_BASE + $4a;
230
{$EXTERNALSYM ERROR_PCW_WRITE_SUMMARY_PROPERTIES}
231
ERROR_PCW_TFILEDATA_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $4b;
232
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_FILE_TABLE_KEY}
233
ERROR_PCW_TFILEDATA_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $4c;
234
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BLANK_FILE_TABLE_KEY}
235
ERROR_PCW_TFILEDATA_MISSING_FILE_TABLE_KEY = ERROR_PCW_BASE + $4d;
236
{$EXTERNALSYM ERROR_PCW_TFILEDATA_MISSING_FILE_TABLE_KEY}
237
ERROR_PCW_TFILEDATA_BAD_TARGET_FIELD = ERROR_PCW_BASE + $4e;
238
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_TARGET_FIELD}
239
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_TOO_LONG = ERROR_PCW_BASE + $4f;
240
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_TOO_LONG}
242
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_EXIST = ERROR_PCW_BASE + $50;
243
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_EXIST}
244
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_MSI = ERROR_PCW_BASE + $51;
245
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_MSI}
246
ERROR_PCW_DUP_UPGRADED_IMAGE_PACKCODE = ERROR_PCW_BASE + $52;
247
{$EXTERNALSYM ERROR_PCW_DUP_UPGRADED_IMAGE_PACKCODE}
248
ERROR_PCW_UFILEIGNORE_BAD_UPGRADED_FIELD = ERROR_PCW_BASE + $53;
249
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BAD_UPGRADED_FIELD}
250
ERROR_PCW_UFILEIGNORE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $54;
251
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_LONG_FILE_TABLE_KEY}
252
ERROR_PCW_UFILEIGNORE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $55;
253
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BLANK_FILE_TABLE_KEY}
254
ERROR_PCW_UFILEIGNORE_BAD_FILE_TABLE_KEY = ERROR_PCW_BASE + $56;
255
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BAD_FILE_TABLE_KEY}
256
ERROR_PCW_FAMILY_RANGE_NAME_TOO_LONG = ERROR_PCW_BASE + $57;
257
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_NAME_TOO_LONG}
258
ERROR_PCW_BAD_FAMILY_RANGE_NAME = ERROR_PCW_BASE + $58;
259
{$EXTERNALSYM ERROR_PCW_BAD_FAMILY_RANGE_NAME}
260
ERROR_PCW_FAMILY_RANGE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $59;
261
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_FILE_TABLE_KEY}
262
ERROR_PCW_FAMILY_RANGE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $5a;
263
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_FILE_TABLE_KEY}
264
ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $5b;
265
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_OFFSETS}
266
ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_OFFSETS = ERROR_PCW_BASE + $5c;
267
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_OFFSETS}
268
ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $5d;
269
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_OFFSETS}
270
ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_LENGTHS = ERROR_PCW_BASE + $5e;
271
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_LENGTHS}
272
ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_LENGTHS = ERROR_PCW_BASE + $5f;
273
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_LENGTHS}
275
ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_LENGTHS = ERROR_PCW_BASE + $60;
276
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_LENGTHS}
277
ERROR_PCW_FAMILY_RANGE_COUNT_MISMATCH = ERROR_PCW_BASE + $61;
278
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_COUNT_MISMATCH}
279
ERROR_PCW_EXTFILE_LONG_IGNORE_OFFSETS = ERROR_PCW_BASE + $62;
280
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_IGNORE_OFFSETS}
281
ERROR_PCW_EXTFILE_BAD_IGNORE_OFFSETS = ERROR_PCW_BASE + $63;
282
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_IGNORE_OFFSETS}
283
ERROR_PCW_EXTFILE_LONG_IGNORE_LENGTHS = ERROR_PCW_BASE + $64;
284
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_IGNORE_LENGTHS}
285
ERROR_PCW_EXTFILE_BAD_IGNORE_LENGTHS = ERROR_PCW_BASE + $65;
286
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_IGNORE_LENGTHS}
287
ERROR_PCW_EXTFILE_IGNORE_COUNT_MISMATCH = ERROR_PCW_BASE + $66;
288
{$EXTERNALSYM ERROR_PCW_EXTFILE_IGNORE_COUNT_MISMATCH}
289
ERROR_PCW_EXTFILE_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $67;
290
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_RETAIN_OFFSETS}
291
ERROR_PCW_EXTFILE_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $68;
292
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_RETAIN_OFFSETS}
293
//#define ERROR_PCW_EXTFILE_RETAIN_COUNT_MISMATCH (ERROR_PCW_BASE + 0x69) -- obsolete
294
ERROR_PCW_TFILEDATA_LONG_IGNORE_OFFSETS = ERROR_PCW_BASE + $6a;
295
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_IGNORE_OFFSETS}
296
ERROR_PCW_TFILEDATA_BAD_IGNORE_OFFSETS = ERROR_PCW_BASE + $6b;
297
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_IGNORE_OFFSETS}
298
ERROR_PCW_TFILEDATA_LONG_IGNORE_LENGTHS = ERROR_PCW_BASE + $6c;
299
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_IGNORE_LENGTHS}
300
ERROR_PCW_TFILEDATA_BAD_IGNORE_LENGTHS = ERROR_PCW_BASE + $6d;
301
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_IGNORE_LENGTHS}
302
ERROR_PCW_TFILEDATA_IGNORE_COUNT_MISMATCH = ERROR_PCW_BASE + $6e;
303
{$EXTERNALSYM ERROR_PCW_TFILEDATA_IGNORE_COUNT_MISMATCH}
304
ERROR_PCW_TFILEDATA_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $6f;
305
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_RETAIN_OFFSETS}
307
ERROR_PCW_TFILEDATA_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $70;
308
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_RETAIN_OFFSETS}
309
//#define ERROR_PCW_TFILEDATA_RETAIN_COUNT_MISMATCH (ERROR_PCW_BASE + 0x71) -- obsolete
310
ERROR_PCW_CANT_GENERATE_TRANSFORM = ERROR_PCW_BASE + $72;
311
{$EXTERNALSYM ERROR_PCW_CANT_GENERATE_TRANSFORM}
312
ERROR_PCW_CANT_CREATE_SUMMARY_INFO = ERROR_PCW_BASE + $73;
313
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_SUMMARY_INFO}
314
ERROR_PCW_CANT_GENERATE_TRANSFORM_POUND = ERROR_PCW_BASE + $74;
315
{$EXTERNALSYM ERROR_PCW_CANT_GENERATE_TRANSFORM_POUND}
316
ERROR_PCW_CANT_CREATE_SUMMARY_INFO_POUND = ERROR_PCW_BASE + $75;
317
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_SUMMARY_INFO_POUND}
318
ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_CODE = ERROR_PCW_BASE + $76;
319
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_CODE}
320
ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_VERSION = ERROR_PCW_BASE + $77;
321
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_VERSION}
322
ERROR_PCW_BAD_UPGRADED_IMAGE_UPGRADE_CODE = ERROR_PCW_BASE + $78;
323
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_UPGRADE_CODE}
324
ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_CODE = ERROR_PCW_BASE + $79;
325
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_CODE}
326
ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_VERSION = ERROR_PCW_BASE + $7a;
327
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_VERSION}
328
ERROR_PCW_BAD_TARGET_IMAGE_UPGRADE_CODE = ERROR_PCW_BASE + $7b;
329
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_UPGRADE_CODE}
330
ERROR_PCW_MATCHED_PRODUCT_VERSIONS = ERROR_PCW_BASE + $7c;
331
{$EXTERNALSYM ERROR_PCW_MATCHED_PRODUCT_VERSIONS}
332
ERROR_PCW_NEXTxd = ERROR_PCW_BASE + $7d;
333
{$EXTERNALSYM ERROR_PCW_NEXTxd}
334
ERROR_PCW_NEXTxe = ERROR_PCW_BASE + $7e;
335
{$EXTERNALSYM ERROR_PCW_NEXTxe}
336
ERROR_PCW_NEXTxf = ERROR_PCW_BASE + $7f;
337
{$EXTERNALSYM ERROR_PCW_NEXTxf}
340
#define ERROR_PCW_NEXTx0 (ERROR_PCW_BASE + 0x80)
341
#define ERROR_PCW_NEXTx1 (ERROR_PCW_BASE + 0x81)
342
#define ERROR_PCW_NEXTx2 (ERROR_PCW_BASE + 0x82)
343
#define ERROR_PCW_NEXTx3 (ERROR_PCW_BASE + 0x83)
344
#define ERROR_PCW_NEXTx4 (ERROR_PCW_BASE + 0x84)
345
#define ERROR_PCW_NEXTx5 (ERROR_PCW_BASE + 0x85)
346
#define ERROR_PCW_NEXTx6 (ERROR_PCW_BASE + 0x86)
347
#define ERROR_PCW_NEXTx7 (ERROR_PCW_BASE + 0x87)
348
#define ERROR_PCW_NEXTx8 (ERROR_PCW_BASE + 0x88)
349
#define ERROR_PCW_NEXTx9 (ERROR_PCW_BASE + 0x89)
350
#define ERROR_PCW_NEXTxa (ERROR_PCW_BASE + 0x8a)
351
#define ERROR_PCW_NEXTxb (ERROR_PCW_BASE + 0x8b)
352
#define ERROR_PCW_NEXTxc (ERROR_PCW_BASE + 0x8c)
353
#define ERROR_PCW_NEXTxd (ERROR_PCW_BASE + 0x8d)
354
#define ERROR_PCW_NEXTxe (ERROR_PCW_BASE + 0x8e)
355
#define ERROR_PCW_NEXTxf (ERROR_PCW_BASE + 0x8f)
358
// Control IDs for hwndStatus child Text controls; title is required
360
IDC_STATUS_TITLE = $1cf0;
361
{$EXTERNALSYM IDC_STATUS_TITLE}
362
IDC_STATUS_DATA1 = $1cf1;
363
{$EXTERNALSYM IDC_STATUS_DATA1}
364
IDC_STATUS_DATA2 = $1cf2;
365
{$EXTERNALSYM IDC_STATUS_DATA2}
367
function UiCreatePatchPackageA(szaPcpPath, szaPatchPath, szaLogPath: LPSTR; hwndStatus: HWND; szaTempFolder: LPSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
368
{$EXTERNALSYM UiCreatePatchPackageA}
369
function UiCreatePatchPackageW(szwPcpPath, szwPatchPath, szwLogPath: LPWSTR; hwndStatus: HWND; szwTempFolder: LPWSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
370
{$EXTERNALSYM UiCreatePatchPackageW}
371
function UiCreatePatchPackage(szwPcpPath, szwPatchPath, szwLogPath: LPTSTR; hwndStatus: HWND; szwTempFolder: LPTSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
372
{$EXTERNALSYM UiCreatePatchPackage}
377
patchwiz = 'patchwiz.dll'; // mvb Installed in Samples\SysMgmt\Msi\Patching
384
{$IFDEF DYNAMIC_LINK}
387
_UiCreatePatchPackageA: Pointer;
389
function UiCreatePatchPackageA;
391
GetProcedureAddress(_UiCreatePatchPackageA, patchwiz, 'UiCreatePatchPackageA');
395
JMP [_UiCreatePatchPackageA]
400
_UiCreatePatchPackageW: Pointer;
402
function UiCreatePatchPackageW;
404
GetProcedureAddress(_UiCreatePatchPackageW, patchwiz, 'UiCreatePatchPackageW');
408
JMP [_UiCreatePatchPackageW]
413
_UiCreatePatchPackage: Pointer;
415
function UiCreatePatchPackage;
417
GetProcedureAddress(_UiCreatePatchPackage, patchwiz, 'UiCreatePatchPackage' + AWSuffix);
421
JMP [_UiCreatePatchPackage]
427
function UiCreatePatchPackageA; external patchwiz name 'UiCreatePatchPackageA';
428
function UiCreatePatchPackageW; external patchwiz name 'UiCreatePatchPackageW';
429
function UiCreatePatchPackage; external patchwiz name 'UiCreatePatchPackage' + AWSuffix;
431
{$ENDIF DYNAMIC_LINK}