📄 jwapatchwiz.pas
字号:
{******************************************************************************}
{ }
{ 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@chello.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 home }
{ page, located at http://delphi-jedi.org or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ 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 }
{ }
{******************************************************************************}
unit JwaPatchWiz;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "PatchWiz.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinType;
(* 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}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -