1 | /*
|
---|
2 | IMPORTANT NOTE: IF THIS FILE IS CHANGED, WININST-6.EXE MUST BE RECOMPILED
|
---|
3 | WITH THE MSVC6 WININST.DSW WORKSPACE FILE MANUALLY, AND WININST-7.1.EXE MUST
|
---|
4 | BE RECOMPILED WITH THE MSVC 2003.NET WININST-7.1.VCPROJ FILE MANUALLY.
|
---|
5 |
|
---|
6 | IF CHANGES TO THIS FILE ARE CHECKED INTO PYTHON CVS, THE RECOMPILED BINARIES
|
---|
7 | MUST BE CHECKED IN AS WELL!
|
---|
8 | */
|
---|
9 |
|
---|
10 | #pragma pack(1)
|
---|
11 |
|
---|
12 | /* zip-archive headers
|
---|
13 | * See: http://www.pkware.com/appnote.html
|
---|
14 | */
|
---|
15 |
|
---|
16 | struct eof_cdir {
|
---|
17 | long tag; /* must be 0x06054b50 */
|
---|
18 | short disknum;
|
---|
19 | short firstdisk;
|
---|
20 | short nTotalCDirThis;
|
---|
21 | short nTotalCDir;
|
---|
22 | long nBytesCDir;
|
---|
23 | long ofsCDir;
|
---|
24 | short commentlen;
|
---|
25 | };
|
---|
26 |
|
---|
27 | struct cdir {
|
---|
28 | long tag; /* must be 0x02014b50 */
|
---|
29 | short version_made;
|
---|
30 | short version_extract;
|
---|
31 | short gp_bitflag;
|
---|
32 | short comp_method;
|
---|
33 | short last_mod_file_time;
|
---|
34 | short last_mod_file_date;
|
---|
35 | long crc32;
|
---|
36 | long comp_size;
|
---|
37 | long uncomp_size;
|
---|
38 | short fname_length;
|
---|
39 | short extra_length;
|
---|
40 | short comment_length;
|
---|
41 | short disknum_start;
|
---|
42 | short int_file_attr;
|
---|
43 | long ext_file_attr;
|
---|
44 | long ofs_local_header;
|
---|
45 | };
|
---|
46 |
|
---|
47 | struct fhdr {
|
---|
48 | long tag; /* must be 0x04034b50 */
|
---|
49 | short version_needed;
|
---|
50 | short flags;
|
---|
51 | short method;
|
---|
52 | short last_mod_file_time;
|
---|
53 | short last_mod_file_date;
|
---|
54 | long crc32;
|
---|
55 | long comp_size;
|
---|
56 | long uncomp_size;
|
---|
57 | short fname_length;
|
---|
58 | short extra_length;
|
---|
59 | };
|
---|
60 |
|
---|
61 |
|
---|
62 | struct meta_data_hdr {
|
---|
63 | int tag;
|
---|
64 | int uncomp_size;
|
---|
65 | int bitmap_size;
|
---|
66 | };
|
---|
67 |
|
---|
68 | #pragma pack()
|
---|
69 |
|
---|
70 | /* installation scheme */
|
---|
71 |
|
---|
72 | typedef struct tagSCHEME {
|
---|
73 | char *name;
|
---|
74 | char *prefix;
|
---|
75 | } SCHEME;
|
---|
76 |
|
---|
77 | typedef int (*NOTIFYPROC)(int code, LPSTR text, ...);
|
---|
78 |
|
---|
79 | extern BOOL
|
---|
80 | extract_file(char *dst, char *src, int method, int comp_size,
|
---|
81 | int uncomp_size, NOTIFYPROC notify);
|
---|
82 |
|
---|
83 | extern BOOL
|
---|
84 | unzip_archive(SCHEME *scheme, char *dirname, char *data,
|
---|
85 | DWORD size, NOTIFYPROC notify);
|
---|
86 |
|
---|
87 | extern char *
|
---|
88 | map_new_file(DWORD flags, char *filename, char
|
---|
89 | *pathname_part, int size,
|
---|
90 | WORD wFatDate, WORD wFatTime,
|
---|
91 | NOTIFYPROC callback);
|
---|
92 |
|
---|
93 | extern BOOL
|
---|
94 | ensure_directory (char *pathname, char *new_part,
|
---|
95 | NOTIFYPROC callback);
|
---|
96 |
|
---|
97 | /* codes for NOITIFYPROC */
|
---|
98 | #define DIR_CREATED 1
|
---|
99 | #define CAN_OVERWRITE 2
|
---|
100 | #define FILE_CREATED 3
|
---|
101 | #define ZLIB_ERROR 4
|
---|
102 | #define SYSTEM_ERROR 5
|
---|
103 | #define NUM_FILES 6
|
---|
104 | #define FILE_OVERWRITTEN 7
|
---|
105 |
|
---|