~ubuntu-branches/ubuntu/feisty/fpc/feisty

« back to all changes in this revision

Viewing changes to packages/extra/winunits/jwapatchwiz.pas

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-01-27 20:08:50 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070127200850-9mrptaqqjsx9nwa7
Tags: 2.0.4-5
* Fixed Build-Depends.
* Add myself to Uploaders in debian/control.
* Make sure that the sources are really patched before building them.
* Build unit 'libc' on powerpc too.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
{******************************************************************************}
2
 
{                                                                              }
3
 
{ MSI Patch Wizard 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: 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).               }
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: jwapatchwiz.pas,v 1.1 2005/04/04 07:56:10 marco Exp $
44
 
 
45
 
unit JwaPatchWiz;
46
 
 
47
 
{$WEAKPACKAGEUNIT}
48
 
 
49
 
{$HPPEMIT ''}
50
 
{$HPPEMIT '#include "PatchWiz.h"'}
51
 
{$HPPEMIT ''}
52
 
 
53
 
{$I jediapilib.inc}
54
 
 
55
 
interface
56
 
 
57
 
uses
58
 
  JwaWinType;
59
 
 
60
 
  (* PATCHWIZ.H - public header file for PATCHWIZ.DLL *)
61
 
 
62
 
(*
63
 
**      UINT WINAPI UiCreatePatchPackage ( LPTSTR szPcpPath,
64
 
**              LPTSTR szPatchPath, LPTSTR szLogPath, HWND hwndStatus,
65
 
**              LPTSTR szTempFolder, BOOL fRemoveTempFolderIfPresent );
66
 
**      
67
 
**      Arguments:
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
75
 
**              from the PCP file.
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
84
 
**              will fail.
85
 
**
86
 
**      Return Values: ERROR_SUCCESS, plus ERROR_PCW_* that follow.
87
 
*)
88
 
 
89
 
const
90
 
  ERROR_PCW_BASE = DWORD($C00E5101);
91
 
  {$EXTERNALSYM ERROR_PCW_BASE}
92
 
 
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}
124
 
 
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}
157
 
 
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
189
 
 
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}
213
 
 
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}
242
 
 
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}
275
 
 
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}
307
 
 
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}
339
 
 
340
 
(*
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)
357
 
*)
358
 
 
359
 
//  Control IDs for hwndStatus child Text controls; title is required
360
 
 
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}
367
 
 
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}
374
 
 
375
 
implementation
376
 
 
377
 
const
378
 
  patchwiz = 'patchwiz.dll'; // mvb Installed in Samples\SysMgmt\Msi\Patching
379
 
  {$IFDEF UNICODE}
380
 
  AWSuffix = 'W';
381
 
  {$ELSE}
382
 
  AWSuffix = 'A';
383
 
  {$ENDIF UNICODE}
384
 
 
385
 
{$IFDEF DYNAMIC_LINK}
386
 
 
387
 
var
388
 
  _UiCreatePatchPackageA: Pointer;
389
 
 
390
 
function UiCreatePatchPackageA;
391
 
begin
392
 
  GetProcedureAddress(_UiCreatePatchPackageA, patchwiz, 'UiCreatePatchPackageA');
393
 
  asm
394
 
        MOV     ESP, EBP
395
 
        POP     EBP
396
 
        JMP     [_UiCreatePatchPackageA]
397
 
  end;
398
 
end;
399
 
 
400
 
var
401
 
  _UiCreatePatchPackageW: Pointer;
402
 
 
403
 
function UiCreatePatchPackageW;
404
 
begin
405
 
  GetProcedureAddress(_UiCreatePatchPackageW, patchwiz, 'UiCreatePatchPackageW');
406
 
  asm
407
 
        MOV     ESP, EBP
408
 
        POP     EBP
409
 
        JMP     [_UiCreatePatchPackageW]
410
 
  end;
411
 
end;
412
 
 
413
 
var
414
 
  _UiCreatePatchPackage: Pointer;
415
 
 
416
 
function UiCreatePatchPackage;
417
 
begin
418
 
  GetProcedureAddress(_UiCreatePatchPackage, patchwiz, 'UiCreatePatchPackage' + AWSuffix);
419
 
  asm
420
 
        MOV     ESP, EBP
421
 
        POP     EBP
422
 
        JMP     [_UiCreatePatchPackage]
423
 
  end;
424
 
end;
425
 
 
426
 
{$ELSE}
427
 
 
428
 
function UiCreatePatchPackageA; external patchwiz name 'UiCreatePatchPackageA';
429
 
function UiCreatePatchPackageW; external patchwiz name 'UiCreatePatchPackageW';
430
 
function UiCreatePatchPackage; external patchwiz name 'UiCreatePatchPackage' + AWSuffix;
431
 
 
432
 
{$ENDIF DYNAMIC_LINK}
433
 
 
434
 
end.
 
1
{******************************************************************************}
 
2
{                                                                              }
 
3
{ MSI Patch Wizard 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: 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).               }
 
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
 
 
44
unit JwaPatchWiz;
 
45
 
 
46
{$WEAKPACKAGEUNIT}
 
47
 
 
48
{$HPPEMIT ''}
 
49
{$HPPEMIT '#include "PatchWiz.h"'}
 
50
{$HPPEMIT ''}
 
51
 
 
52
{$I jediapilib.inc}
 
53
 
 
54
interface
 
55
 
 
56
uses
 
57
  JwaWinType;
 
58
 
 
59
  (* PATCHWIZ.H - public header file for PATCHWIZ.DLL *)
 
60
 
 
61
(*
 
62
**      UINT WINAPI UiCreatePatchPackage ( LPTSTR szPcpPath,
 
63
**              LPTSTR szPatchPath, LPTSTR szLogPath, HWND hwndStatus,
 
64
**              LPTSTR szTempFolder, BOOL fRemoveTempFolderIfPresent );
 
65
**      
 
66
**      Arguments:
 
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
 
74
**              from the PCP file.
 
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
 
83
**              will fail.
 
84
**
 
85
**      Return Values: ERROR_SUCCESS, plus ERROR_PCW_* that follow.
 
86
*)
 
87
 
 
88
const
 
89
  ERROR_PCW_BASE = DWORD($C00E5101);
 
90
  {$EXTERNALSYM ERROR_PCW_BASE}
 
91
 
 
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}
 
123
 
 
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}
 
156
 
 
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
 
188
 
 
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}
 
212
 
 
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}
 
241
 
 
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}
 
274
 
 
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}
 
306
 
 
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}
 
338
 
 
339
(*
 
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)
 
356
*)
 
357
 
 
358
//  Control IDs for hwndStatus child Text controls; title is required
 
359
 
 
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}
 
366
 
 
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}
 
373
 
 
374
implementation
 
375
 
 
376
const
 
377
  patchwiz = 'patchwiz.dll'; // mvb Installed in Samples\SysMgmt\Msi\Patching
 
378
  {$IFDEF UNICODE}
 
379
  AWSuffix = 'W';
 
380
  {$ELSE}
 
381
  AWSuffix = 'A';
 
382
  {$ENDIF UNICODE}
 
383
 
 
384
{$IFDEF DYNAMIC_LINK}
 
385
 
 
386
var
 
387
  _UiCreatePatchPackageA: Pointer;
 
388
 
 
389
function UiCreatePatchPackageA;
 
390
begin
 
391
  GetProcedureAddress(_UiCreatePatchPackageA, patchwiz, 'UiCreatePatchPackageA');
 
392
  asm
 
393
        MOV     ESP, EBP
 
394
        POP     EBP
 
395
        JMP     [_UiCreatePatchPackageA]
 
396
  end;
 
397
end;
 
398
 
 
399
var
 
400
  _UiCreatePatchPackageW: Pointer;
 
401
 
 
402
function UiCreatePatchPackageW;
 
403
begin
 
404
  GetProcedureAddress(_UiCreatePatchPackageW, patchwiz, 'UiCreatePatchPackageW');
 
405
  asm
 
406
        MOV     ESP, EBP
 
407
        POP     EBP
 
408
        JMP     [_UiCreatePatchPackageW]
 
409
  end;
 
410
end;
 
411
 
 
412
var
 
413
  _UiCreatePatchPackage: Pointer;
 
414
 
 
415
function UiCreatePatchPackage;
 
416
begin
 
417
  GetProcedureAddress(_UiCreatePatchPackage, patchwiz, 'UiCreatePatchPackage' + AWSuffix);
 
418
  asm
 
419
        MOV     ESP, EBP
 
420
        POP     EBP
 
421
        JMP     [_UiCreatePatchPackage]
 
422
  end;
 
423
end;
 
424
 
 
425
{$ELSE}
 
426
 
 
427
function UiCreatePatchPackageA; external patchwiz name 'UiCreatePatchPackageA';
 
428
function UiCreatePatchPackageW; external patchwiz name 'UiCreatePatchPackageW';
 
429
function UiCreatePatchPackage; external patchwiz name 'UiCreatePatchPackage' + AWSuffix;
 
430
 
 
431
{$ENDIF DYNAMIC_LINK}
 
432
 
 
433
end.