mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-09 18:35:32 +00:00
458 lines
23 KiB
ObjectPascal
458 lines
23 KiB
ObjectPascal
{******************************************************************************}
|
|
{ }
|
|
{ MSI Patch Wizard API interface Unit for Object Pascal }
|
|
{ }
|
|
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
|
|
{ Corporation. All Rights Reserved. }
|
|
{ }
|
|
{ The original file is: patchwiz.h, released August 2001. The original Pascal }
|
|
{ code is: PatchWiz.pas, released December 2001. The initial developer of the }
|
|
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
|
|
{ }
|
|
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
|
|
{ Marcel van Brakel. All Rights Reserved. }
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ }
|
|
{ You may retrieve the latest version of this file at the Project JEDI }
|
|
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{******************************************************************************}
|
|
|
|
// $Id: JwaPatchWiz.pas,v 1.12 2007/09/05 11:58:51 dezipaitor Exp $
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
unit JwaPatchWiz;
|
|
|
|
{$WEAKPACKAGEUNIT}
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$HPPEMIT ''}
|
|
{$HPPEMIT '#include "PatchWiz.h"'}
|
|
{$HPPEMIT ''}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
{$I ..\Includes\JediAPILib.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
JwaWinType;
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
(* PATCHWIZ.H - public header file for PATCHWIZ.DLL *)
|
|
|
|
(*
|
|
** UINT WINAPI UiCreatePatchPackage ( LPTSTR szPcpPath,
|
|
** LPTSTR szPatchPath, LPTSTR szLogPath, HWND hwndStatus,
|
|
** LPTSTR szTempFolder, BOOL fRemoveTempFolderIfPresent );
|
|
**
|
|
** Arguments:
|
|
** szPcpPath - full absolute path to Windows Installer database
|
|
** (PCP file) that contains appropriate tables of input-data for
|
|
** Patch creation process such as Properties and TargetImages.
|
|
** szPatchPath - optional, full absolute path to Patching Package
|
|
** file (MSP file) to create and stuff with output. If this
|
|
** NULL or an empty string, the api will try to use
|
|
** Properties.Value where Properties.Name = PatchOutputPath
|
|
** from the PCP file.
|
|
** szLogPath - optional, full absolute path to text log file to
|
|
** append to. Caller should truncate file if wanted.
|
|
** hwndStatus - optional, window handle to display status text.
|
|
** More details to come later.
|
|
** szTempFolder - optional location to use for temp files.
|
|
** Default is %TEMP%\~pcw_tmp.tmp\.
|
|
** fRemoveTempFolderIfPresent - remove temp folder (and all its
|
|
** contents) if present. If FALSE and folder is present, api
|
|
** will fail.
|
|
**
|
|
** Return Values: ERROR_SUCCESS, plus ERROR_PCW_* that follow.
|
|
*)
|
|
|
|
const
|
|
ERROR_PCW_BASE = DWORD($C00E5101);
|
|
{$EXTERNALSYM ERROR_PCW_BASE}
|
|
|
|
ERROR_PCW_PCP_DOESNT_EXIST = ERROR_PCW_BASE + $00;
|
|
{$EXTERNALSYM ERROR_PCW_PCP_DOESNT_EXIST}
|
|
ERROR_PCW_PCP_BAD_FORMAT = ERROR_PCW_BASE + $01;
|
|
{$EXTERNALSYM ERROR_PCW_PCP_BAD_FORMAT}
|
|
ERROR_PCW_CANT_CREATE_TEMP_FOLDER = ERROR_PCW_BASE + $02;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_TEMP_FOLDER}
|
|
ERROR_PCW_MISSING_PATCH_PATH = ERROR_PCW_BASE + $03;
|
|
{$EXTERNALSYM ERROR_PCW_MISSING_PATCH_PATH}
|
|
ERROR_PCW_CANT_OVERWRITE_PATCH = ERROR_PCW_BASE + $04;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_OVERWRITE_PATCH}
|
|
ERROR_PCW_CANT_CREATE_PATCH_FILE = ERROR_PCW_BASE + $05;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_PATCH_FILE}
|
|
ERROR_PCW_MISSING_PATCH_GUID = ERROR_PCW_BASE + $06;
|
|
{$EXTERNALSYM ERROR_PCW_MISSING_PATCH_GUID}
|
|
ERROR_PCW_BAD_PATCH_GUID = ERROR_PCW_BASE + $07;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_PATCH_GUID}
|
|
ERROR_PCW_BAD_GUIDS_TO_REPLACE = ERROR_PCW_BASE + $08;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_GUIDS_TO_REPLACE}
|
|
ERROR_PCW_BAD_TARGET_PRODUCT_CODE_LIST = ERROR_PCW_BASE + $09;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_PRODUCT_CODE_LIST}
|
|
ERROR_PCW_NO_UPGRADED_IMAGES_TO_PATCH = ERROR_PCW_BASE + $0a;
|
|
{$EXTERNALSYM ERROR_PCW_NO_UPGRADED_IMAGES_TO_PATCH}
|
|
//#define ERROR_PCW_BAD_API_PATCHING_OPTION_FLAGS (ERROR_PCW_BASE + 0x0b) -- obsolete
|
|
ERROR_PCW_BAD_API_PATCHING_SYMBOL_FLAGS = ERROR_PCW_BASE + $0c;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_API_PATCHING_SYMBOL_FLAGS}
|
|
ERROR_PCW_OODS_COPYING_MSI = ERROR_PCW_BASE + $0d;
|
|
{$EXTERNALSYM ERROR_PCW_OODS_COPYING_MSI}
|
|
ERROR_PCW_UPGRADED_IMAGE_NAME_TOO_LONG = ERROR_PCW_BASE + $0e;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_NAME_TOO_LONG}
|
|
ERROR_PCW_BAD_UPGRADED_IMAGE_NAME = ERROR_PCW_BASE + $0f;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_NAME}
|
|
|
|
ERROR_PCW_DUP_UPGRADED_IMAGE_NAME = ERROR_PCW_BASE + $10;
|
|
{$EXTERNALSYM ERROR_PCW_DUP_UPGRADED_IMAGE_NAME}
|
|
ERROR_PCW_UPGRADED_IMAGE_PATH_TOO_LONG = ERROR_PCW_BASE + $11;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_TOO_LONG}
|
|
ERROR_PCW_UPGRADED_IMAGE_PATH_EMPTY = ERROR_PCW_BASE + $12;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_EMPTY}
|
|
ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_EXIST = ERROR_PCW_BASE + $13;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_EXIST}
|
|
ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_MSI = ERROR_PCW_BASE + $14;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATH_NOT_MSI}
|
|
ERROR_PCW_UPGRADED_IMAGE_COMPRESSED = ERROR_PCW_BASE + $15;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_COMPRESSED}
|
|
ERROR_PCW_TARGET_IMAGE_NAME_TOO_LONG = ERROR_PCW_BASE + $16;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_NAME_TOO_LONG}
|
|
ERROR_PCW_BAD_TARGET_IMAGE_NAME = ERROR_PCW_BASE + $17;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_NAME}
|
|
ERROR_PCW_DUP_TARGET_IMAGE_NAME = ERROR_PCW_BASE + $18;
|
|
{$EXTERNALSYM ERROR_PCW_DUP_TARGET_IMAGE_NAME}
|
|
ERROR_PCW_TARGET_IMAGE_PATH_TOO_LONG = ERROR_PCW_BASE + $19;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_TOO_LONG}
|
|
ERROR_PCW_TARGET_IMAGE_PATH_EMPTY = ERROR_PCW_BASE + $1a;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_EMPTY}
|
|
ERROR_PCW_TARGET_IMAGE_PATH_NOT_EXIST = ERROR_PCW_BASE + $1b;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_NOT_EXIST}
|
|
ERROR_PCW_TARGET_IMAGE_PATH_NOT_MSI = ERROR_PCW_BASE + $1c;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_PATH_NOT_MSI}
|
|
ERROR_PCW_TARGET_IMAGE_COMPRESSED = ERROR_PCW_BASE + $1d;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_IMAGE_COMPRESSED}
|
|
ERROR_PCW_TARGET_BAD_PROD_VALIDATE = ERROR_PCW_BASE + $1e;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_BAD_PROD_VALIDATE}
|
|
ERROR_PCW_TARGET_BAD_PROD_CODE_VAL = ERROR_PCW_BASE + $1f;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_BAD_PROD_CODE_VAL}
|
|
|
|
ERROR_PCW_UPGRADED_MISSING_SRC_FILES = ERROR_PCW_BASE + $20;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_MISSING_SRC_FILES}
|
|
ERROR_PCW_TARGET_MISSING_SRC_FILES = ERROR_PCW_BASE + $21;
|
|
{$EXTERNALSYM ERROR_PCW_TARGET_MISSING_SRC_FILES}
|
|
ERROR_PCW_IMAGE_FAMILY_NAME_TOO_LONG = ERROR_PCW_BASE + $22;
|
|
{$EXTERNALSYM ERROR_PCW_IMAGE_FAMILY_NAME_TOO_LONG}
|
|
ERROR_PCW_BAD_IMAGE_FAMILY_NAME = ERROR_PCW_BASE + $23;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_NAME}
|
|
ERROR_PCW_DUP_IMAGE_FAMILY_NAME = ERROR_PCW_BASE + $24;
|
|
{$EXTERNALSYM ERROR_PCW_DUP_IMAGE_FAMILY_NAME}
|
|
ERROR_PCW_BAD_IMAGE_FAMILY_SRC_PROP = ERROR_PCW_BASE + $25;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_SRC_PROP}
|
|
ERROR_PCW_UFILEDATA_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $26;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEDATA_LONG_FILE_TABLE_KEY}
|
|
ERROR_PCW_UFILEDATA_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $27;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEDATA_BLANK_FILE_TABLE_KEY}
|
|
ERROR_PCW_UFILEDATA_MISSING_FILE_TABLE_KEY = ERROR_PCW_BASE + $28;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEDATA_MISSING_FILE_TABLE_KEY}
|
|
ERROR_PCW_EXTFILE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $29;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_FILE_TABLE_KEY}
|
|
ERROR_PCW_EXTFILE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $2a;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_BLANK_FILE_TABLE_KEY}
|
|
ERROR_PCW_EXTFILE_BAD_FAMILY_FIELD = ERROR_PCW_BASE + $2b;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_FAMILY_FIELD}
|
|
ERROR_PCW_EXTFILE_LONG_PATH_TO_FILE = ERROR_PCW_BASE + $2c;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_PATH_TO_FILE}
|
|
ERROR_PCW_EXTFILE_BLANK_PATH_TO_FILE = ERROR_PCW_BASE + $2d;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_BLANK_PATH_TO_FILE}
|
|
ERROR_PCW_EXTFILE_MISSING_FILE = ERROR_PCW_BASE + $2e;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_MISSING_FILE}
|
|
//#define ERROR_PCW_FILERANGE_LONG_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x2f) -- obsolete
|
|
|
|
//#define ERROR_PCW_FILERANGE_BLANK_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x30) -- obsolete
|
|
//#define ERROR_PCW_FILERANGE_MISSING_FILE_TABLE_KEY (ERROR_PCW_BASE + 0x31) -- obsolete
|
|
//#define ERROR_PCW_FILERANGE_LONG_PATH_TO_FILE (ERROR_PCW_BASE + 0x32) -- obsolete
|
|
//#define ERROR_PCW_FILERANGE_MISSING_FILE (ERROR_PCW_BASE + 0x33) -- obsolete
|
|
//#define ERROR_PCW_FILERANGE_INVALID_OFFSET (ERROR_PCW_BASE + 0x34) -- obsolete
|
|
//#define ERROR_PCW_FILERANGE_INVALID_SIZE (ERROR_PCW_BASE + 0x35) -- obsolete
|
|
//#define ERROR_PCW_FILERANGE_INVALID_RETAIN (ERROR_PCW_BASE + 0x36) -- obsolete
|
|
//#define ERROR_PCW_BAD_MEDIA_SRC_PROP_NAME (ERROR_PCW_BASE + 0x37) -- obsolete
|
|
//#define ERROR_PCW_BAD_MEDIA_DISK_ID (ERROR_PCW_BASE + 0x38) -- obsolete
|
|
ERROR_PCW_BAD_FILE_SEQUENCE_START = ERROR_PCW_BASE + $39;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_FILE_SEQUENCE_START}
|
|
ERROR_PCW_CANT_COPY_FILE_TO_TEMP_FOLDER = ERROR_PCW_BASE + $3a;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_COPY_FILE_TO_TEMP_FOLDER}
|
|
ERROR_PCW_CANT_CREATE_ONE_PATCH_FILE = ERROR_PCW_BASE + $3b;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_ONE_PATCH_FILE}
|
|
ERROR_PCW_BAD_IMAGE_FAMILY_DISKID = ERROR_PCW_BASE + $3c;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_DISKID}
|
|
ERROR_PCW_BAD_IMAGE_FAMILY_FILESEQSTART = ERROR_PCW_BASE + $3d;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_IMAGE_FAMILY_FILESEQSTART}
|
|
ERROR_PCW_BAD_UPGRADED_IMAGE_FAMILY = ERROR_PCW_BASE + $3e;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_FAMILY}
|
|
ERROR_PCW_BAD_TARGET_IMAGE_UPGRADED = ERROR_PCW_BASE + $3f;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_UPGRADED}
|
|
|
|
ERROR_PCW_DUP_TARGET_IMAGE_PACKCODE = ERROR_PCW_BASE + $40;
|
|
{$EXTERNALSYM ERROR_PCW_DUP_TARGET_IMAGE_PACKCODE}
|
|
ERROR_PCW_UFILEDATA_BAD_UPGRADED_FIELD = ERROR_PCW_BASE + $41;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEDATA_BAD_UPGRADED_FIELD}
|
|
ERROR_PCW_MISMATCHED_PRODUCT_CODES = ERROR_PCW_BASE + $42;
|
|
{$EXTERNALSYM ERROR_PCW_MISMATCHED_PRODUCT_CODES}
|
|
ERROR_PCW_MISMATCHED_PRODUCT_VERSIONS = ERROR_PCW_BASE + $43;
|
|
{$EXTERNALSYM ERROR_PCW_MISMATCHED_PRODUCT_VERSIONS}
|
|
ERROR_PCW_CANNOT_WRITE_DDF = ERROR_PCW_BASE + $44;
|
|
{$EXTERNALSYM ERROR_PCW_CANNOT_WRITE_DDF}
|
|
ERROR_PCW_CANNOT_RUN_MAKECAB = ERROR_PCW_BASE + $45;
|
|
{$EXTERNALSYM ERROR_PCW_CANNOT_RUN_MAKECAB}
|
|
//#define ERROR_PCW_CANNOT_CREATE_STORAGE (ERROR_PCW_BASE + 0x46) -- obsolete
|
|
//#define ERROR_PCW_CANNOT_CREATE_STREAM (ERROR_PCW_BASE + 0x47) -- obsolete
|
|
//#define ERROR_PCW_CANNOT_WRITE_STREAM (ERROR_PCW_BASE + 0x48) -- obsolete
|
|
//#define ERROR_PCW_CANNOT_READ_CABINET (ERROR_PCW_BASE + 0x49) -- obsolete
|
|
ERROR_PCW_WRITE_SUMMARY_PROPERTIES = ERROR_PCW_BASE + $4a;
|
|
{$EXTERNALSYM ERROR_PCW_WRITE_SUMMARY_PROPERTIES}
|
|
ERROR_PCW_TFILEDATA_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $4b;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_FILE_TABLE_KEY}
|
|
ERROR_PCW_TFILEDATA_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $4c;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BLANK_FILE_TABLE_KEY}
|
|
ERROR_PCW_TFILEDATA_MISSING_FILE_TABLE_KEY = ERROR_PCW_BASE + $4d;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_MISSING_FILE_TABLE_KEY}
|
|
ERROR_PCW_TFILEDATA_BAD_TARGET_FIELD = ERROR_PCW_BASE + $4e;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_TARGET_FIELD}
|
|
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_TOO_LONG = ERROR_PCW_BASE + $4f;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_TOO_LONG}
|
|
|
|
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_EXIST = ERROR_PCW_BASE + $50;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_EXIST}
|
|
ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_MSI = ERROR_PCW_BASE + $51;
|
|
{$EXTERNALSYM ERROR_PCW_UPGRADED_IMAGE_PATCH_PATH_NOT_MSI}
|
|
ERROR_PCW_DUP_UPGRADED_IMAGE_PACKCODE = ERROR_PCW_BASE + $52;
|
|
{$EXTERNALSYM ERROR_PCW_DUP_UPGRADED_IMAGE_PACKCODE}
|
|
ERROR_PCW_UFILEIGNORE_BAD_UPGRADED_FIELD = ERROR_PCW_BASE + $53;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BAD_UPGRADED_FIELD}
|
|
ERROR_PCW_UFILEIGNORE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $54;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_LONG_FILE_TABLE_KEY}
|
|
ERROR_PCW_UFILEIGNORE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $55;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BLANK_FILE_TABLE_KEY}
|
|
ERROR_PCW_UFILEIGNORE_BAD_FILE_TABLE_KEY = ERROR_PCW_BASE + $56;
|
|
{$EXTERNALSYM ERROR_PCW_UFILEIGNORE_BAD_FILE_TABLE_KEY}
|
|
ERROR_PCW_FAMILY_RANGE_NAME_TOO_LONG = ERROR_PCW_BASE + $57;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_NAME_TOO_LONG}
|
|
ERROR_PCW_BAD_FAMILY_RANGE_NAME = ERROR_PCW_BASE + $58;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_FAMILY_RANGE_NAME}
|
|
ERROR_PCW_FAMILY_RANGE_LONG_FILE_TABLE_KEY = ERROR_PCW_BASE + $59;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_FILE_TABLE_KEY}
|
|
ERROR_PCW_FAMILY_RANGE_BLANK_FILE_TABLE_KEY = ERROR_PCW_BASE + $5a;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_FILE_TABLE_KEY}
|
|
ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $5b;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_OFFSETS}
|
|
ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_OFFSETS = ERROR_PCW_BASE + $5c;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_OFFSETS}
|
|
ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $5d;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_OFFSETS}
|
|
ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_LENGTHS = ERROR_PCW_BASE + $5e;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_LONG_RETAIN_LENGTHS}
|
|
ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_LENGTHS = ERROR_PCW_BASE + $5f;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BLANK_RETAIN_LENGTHS}
|
|
|
|
ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_LENGTHS = ERROR_PCW_BASE + $60;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_BAD_RETAIN_LENGTHS}
|
|
ERROR_PCW_FAMILY_RANGE_COUNT_MISMATCH = ERROR_PCW_BASE + $61;
|
|
{$EXTERNALSYM ERROR_PCW_FAMILY_RANGE_COUNT_MISMATCH}
|
|
ERROR_PCW_EXTFILE_LONG_IGNORE_OFFSETS = ERROR_PCW_BASE + $62;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_IGNORE_OFFSETS}
|
|
ERROR_PCW_EXTFILE_BAD_IGNORE_OFFSETS = ERROR_PCW_BASE + $63;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_IGNORE_OFFSETS}
|
|
ERROR_PCW_EXTFILE_LONG_IGNORE_LENGTHS = ERROR_PCW_BASE + $64;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_IGNORE_LENGTHS}
|
|
ERROR_PCW_EXTFILE_BAD_IGNORE_LENGTHS = ERROR_PCW_BASE + $65;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_IGNORE_LENGTHS}
|
|
ERROR_PCW_EXTFILE_IGNORE_COUNT_MISMATCH = ERROR_PCW_BASE + $66;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_IGNORE_COUNT_MISMATCH}
|
|
ERROR_PCW_EXTFILE_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $67;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_LONG_RETAIN_OFFSETS}
|
|
ERROR_PCW_EXTFILE_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $68;
|
|
{$EXTERNALSYM ERROR_PCW_EXTFILE_BAD_RETAIN_OFFSETS}
|
|
//#define ERROR_PCW_EXTFILE_RETAIN_COUNT_MISMATCH (ERROR_PCW_BASE + 0x69) -- obsolete
|
|
ERROR_PCW_TFILEDATA_LONG_IGNORE_OFFSETS = ERROR_PCW_BASE + $6a;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_IGNORE_OFFSETS}
|
|
ERROR_PCW_TFILEDATA_BAD_IGNORE_OFFSETS = ERROR_PCW_BASE + $6b;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_IGNORE_OFFSETS}
|
|
ERROR_PCW_TFILEDATA_LONG_IGNORE_LENGTHS = ERROR_PCW_BASE + $6c;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_IGNORE_LENGTHS}
|
|
ERROR_PCW_TFILEDATA_BAD_IGNORE_LENGTHS = ERROR_PCW_BASE + $6d;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_IGNORE_LENGTHS}
|
|
ERROR_PCW_TFILEDATA_IGNORE_COUNT_MISMATCH = ERROR_PCW_BASE + $6e;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_IGNORE_COUNT_MISMATCH}
|
|
ERROR_PCW_TFILEDATA_LONG_RETAIN_OFFSETS = ERROR_PCW_BASE + $6f;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_LONG_RETAIN_OFFSETS}
|
|
|
|
ERROR_PCW_TFILEDATA_BAD_RETAIN_OFFSETS = ERROR_PCW_BASE + $70;
|
|
{$EXTERNALSYM ERROR_PCW_TFILEDATA_BAD_RETAIN_OFFSETS}
|
|
//#define ERROR_PCW_TFILEDATA_RETAIN_COUNT_MISMATCH (ERROR_PCW_BASE + 0x71) -- obsolete
|
|
ERROR_PCW_CANT_GENERATE_TRANSFORM = ERROR_PCW_BASE + $72;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_GENERATE_TRANSFORM}
|
|
ERROR_PCW_CANT_CREATE_SUMMARY_INFO = ERROR_PCW_BASE + $73;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_SUMMARY_INFO}
|
|
ERROR_PCW_CANT_GENERATE_TRANSFORM_POUND = ERROR_PCW_BASE + $74;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_GENERATE_TRANSFORM_POUND}
|
|
ERROR_PCW_CANT_CREATE_SUMMARY_INFO_POUND = ERROR_PCW_BASE + $75;
|
|
{$EXTERNALSYM ERROR_PCW_CANT_CREATE_SUMMARY_INFO_POUND}
|
|
ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_CODE = ERROR_PCW_BASE + $76;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_CODE}
|
|
ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_VERSION = ERROR_PCW_BASE + $77;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_PRODUCT_VERSION}
|
|
ERROR_PCW_BAD_UPGRADED_IMAGE_UPGRADE_CODE = ERROR_PCW_BASE + $78;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_UPGRADED_IMAGE_UPGRADE_CODE}
|
|
ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_CODE = ERROR_PCW_BASE + $79;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_CODE}
|
|
ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_VERSION = ERROR_PCW_BASE + $7a;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_PRODUCT_VERSION}
|
|
ERROR_PCW_BAD_TARGET_IMAGE_UPGRADE_CODE = ERROR_PCW_BASE + $7b;
|
|
{$EXTERNALSYM ERROR_PCW_BAD_TARGET_IMAGE_UPGRADE_CODE}
|
|
ERROR_PCW_MATCHED_PRODUCT_VERSIONS = ERROR_PCW_BASE + $7c;
|
|
{$EXTERNALSYM ERROR_PCW_MATCHED_PRODUCT_VERSIONS}
|
|
ERROR_PCW_NEXTxd = ERROR_PCW_BASE + $7d;
|
|
{$EXTERNALSYM ERROR_PCW_NEXTxd}
|
|
ERROR_PCW_NEXTxe = ERROR_PCW_BASE + $7e;
|
|
{$EXTERNALSYM ERROR_PCW_NEXTxe}
|
|
ERROR_PCW_NEXTxf = ERROR_PCW_BASE + $7f;
|
|
{$EXTERNALSYM ERROR_PCW_NEXTxf}
|
|
|
|
(*
|
|
#define ERROR_PCW_NEXTx0 (ERROR_PCW_BASE + 0x80)
|
|
#define ERROR_PCW_NEXTx1 (ERROR_PCW_BASE + 0x81)
|
|
#define ERROR_PCW_NEXTx2 (ERROR_PCW_BASE + 0x82)
|
|
#define ERROR_PCW_NEXTx3 (ERROR_PCW_BASE + 0x83)
|
|
#define ERROR_PCW_NEXTx4 (ERROR_PCW_BASE + 0x84)
|
|
#define ERROR_PCW_NEXTx5 (ERROR_PCW_BASE + 0x85)
|
|
#define ERROR_PCW_NEXTx6 (ERROR_PCW_BASE + 0x86)
|
|
#define ERROR_PCW_NEXTx7 (ERROR_PCW_BASE + 0x87)
|
|
#define ERROR_PCW_NEXTx8 (ERROR_PCW_BASE + 0x88)
|
|
#define ERROR_PCW_NEXTx9 (ERROR_PCW_BASE + 0x89)
|
|
#define ERROR_PCW_NEXTxa (ERROR_PCW_BASE + 0x8a)
|
|
#define ERROR_PCW_NEXTxb (ERROR_PCW_BASE + 0x8b)
|
|
#define ERROR_PCW_NEXTxc (ERROR_PCW_BASE + 0x8c)
|
|
#define ERROR_PCW_NEXTxd (ERROR_PCW_BASE + 0x8d)
|
|
#define ERROR_PCW_NEXTxe (ERROR_PCW_BASE + 0x8e)
|
|
#define ERROR_PCW_NEXTxf (ERROR_PCW_BASE + 0x8f)
|
|
*)
|
|
|
|
// Control IDs for hwndStatus child Text controls; title is required
|
|
|
|
IDC_STATUS_TITLE = $1cf0;
|
|
{$EXTERNALSYM IDC_STATUS_TITLE}
|
|
IDC_STATUS_DATA1 = $1cf1;
|
|
{$EXTERNALSYM IDC_STATUS_DATA1}
|
|
IDC_STATUS_DATA2 = $1cf2;
|
|
{$EXTERNALSYM IDC_STATUS_DATA2}
|
|
|
|
function UiCreatePatchPackageA(szaPcpPath, szaPatchPath, szaLogPath: LPSTR; hwndStatus: HWND; szaTempFolder: LPSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
|
|
{$EXTERNALSYM UiCreatePatchPackageA}
|
|
function UiCreatePatchPackageW(szwPcpPath, szwPatchPath, szwLogPath: LPWSTR; hwndStatus: HWND; szwTempFolder: LPWSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
|
|
{$EXTERNALSYM UiCreatePatchPackageW}
|
|
function UiCreatePatchPackage(szwPcpPath, szwPatchPath, szwLogPath: LPTSTR; hwndStatus: HWND; szwTempFolder: LPTSTR; fRemoveTempFolderIfPresent: BOOL): UINT; stdcall;
|
|
{$EXTERNALSYM UiCreatePatchPackage}
|
|
|
|
{$ENDIF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
implementation
|
|
//uses ...
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
|
|
|
|
{$IFNDEF JWA_INTERFACESECTION}
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
const
|
|
patchwiz = 'patchwiz.dll'; // mvb Installed in Samples\SysMgmt\Msi\Patching
|
|
{$IFDEF UNICODE}
|
|
AWSuffix = 'W';
|
|
{$ELSE}
|
|
AWSuffix = 'A';
|
|
{$ENDIF UNICODE}
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
{$IFDEF DYNAMIC_LINK}
|
|
|
|
var
|
|
_UiCreatePatchPackageA: Pointer;
|
|
|
|
function UiCreatePatchPackageA;
|
|
begin
|
|
GetProcedureAddress(_UiCreatePatchPackageA, patchwiz, 'UiCreatePatchPackageA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UiCreatePatchPackageA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UiCreatePatchPackageW: Pointer;
|
|
|
|
function UiCreatePatchPackageW;
|
|
begin
|
|
GetProcedureAddress(_UiCreatePatchPackageW, patchwiz, 'UiCreatePatchPackageW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UiCreatePatchPackageW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UiCreatePatchPackage: Pointer;
|
|
|
|
function UiCreatePatchPackage;
|
|
begin
|
|
GetProcedureAddress(_UiCreatePatchPackage, patchwiz, 'UiCreatePatchPackage' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UiCreatePatchPackage]
|
|
end;
|
|
end;
|
|
|
|
{$ELSE}
|
|
|
|
function UiCreatePatchPackageA; external patchwiz name 'UiCreatePatchPackageA';
|
|
function UiCreatePatchPackageW; external patchwiz name 'UiCreatePatchPackageW';
|
|
function UiCreatePatchPackage; external patchwiz name 'UiCreatePatchPackage' + AWSuffix;
|
|
|
|
{$ENDIF DYNAMIC_LINK}
|
|
|
|
{$ENDIF JWA_INTERFACESECTION}
|
|
|
|
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
end.
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|