Copied the sources from the distutils CVS repository.
Changed the MSVC project file to create the exe in the lib/distutils/command directory, bdist_wininst.py must still be changed to use it. Also changed to use the same zlib as the zlib module - this has the nice sideeffect that now the buggy 1.1.3 version is no longer used. Most of the source files now conform to PEP 7, except for the maximum line length. Windows api programming in 78 character lines =:(. README.txt is a new file, but still empty except for placeholders.
This commit is contained in:
parent
8bec48316b
commit
bb4b7d2d68
|
@ -0,0 +1,4 @@
|
||||||
|
temp-debug
|
||||||
|
temp-release
|
||||||
|
wininst.ncb
|
||||||
|
wininst.plg
|
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
XXX Write description
|
||||||
|
XXX Dont't forget to mention upx
|
||||||
|
|
||||||
|
XXX Add pointer to this file into PC/README.txt
|
|
@ -0,0 +1,96 @@
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
/* zip-archive headers
|
||||||
|
* See: http://www.pkware.com/appnote.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct eof_cdir {
|
||||||
|
long tag; /* must be 0x06054b50 */
|
||||||
|
short disknum;
|
||||||
|
short firstdisk;
|
||||||
|
short nTotalCDirThis;
|
||||||
|
short nTotalCDir;
|
||||||
|
long nBytesCDir;
|
||||||
|
long ofsCDir;
|
||||||
|
short commentlen;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct cdir {
|
||||||
|
long tag; /* must be 0x02014b50 */
|
||||||
|
short version_made;
|
||||||
|
short version_extract;
|
||||||
|
short gp_bitflag;
|
||||||
|
short comp_method;
|
||||||
|
short last_mod_file_time;
|
||||||
|
short last_mod_file_date;
|
||||||
|
long crc32;
|
||||||
|
long comp_size;
|
||||||
|
long uncomp_size;
|
||||||
|
short fname_length;
|
||||||
|
short extra_length;
|
||||||
|
short comment_length;
|
||||||
|
short disknum_start;
|
||||||
|
short int_file_attr;
|
||||||
|
long ext_file_attr;
|
||||||
|
long ofs_local_header;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct fhdr {
|
||||||
|
long tag; /* must be 0x04034b50 */
|
||||||
|
short version_needed;
|
||||||
|
short flags;
|
||||||
|
short method;
|
||||||
|
short last_mod_file_time;
|
||||||
|
short last_mod_file_date;
|
||||||
|
long crc32;
|
||||||
|
long comp_size;
|
||||||
|
long uncomp_size;
|
||||||
|
short fname_length;
|
||||||
|
short extra_length;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct meta_data_hdr {
|
||||||
|
int tag;
|
||||||
|
int uncomp_size;
|
||||||
|
int bitmap_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
/* installation scheme */
|
||||||
|
|
||||||
|
typedef struct tagSCHEME {
|
||||||
|
char *name;
|
||||||
|
char *prefix;
|
||||||
|
} SCHEME;
|
||||||
|
|
||||||
|
typedef int (*NOTIFYPROC)(int code, LPSTR text, ...);
|
||||||
|
|
||||||
|
extern BOOL
|
||||||
|
extract_file(char *dst, char *src, int method, int comp_size,
|
||||||
|
int uncomp_size, NOTIFYPROC notify);
|
||||||
|
|
||||||
|
extern BOOL
|
||||||
|
unzip_archive(SCHEME *scheme, char *dirname, char *data,
|
||||||
|
DWORD size, NOTIFYPROC notify);
|
||||||
|
|
||||||
|
extern char *
|
||||||
|
map_new_file(DWORD flags, char *filename, char
|
||||||
|
*pathname_part, int size,
|
||||||
|
WORD wFatDate, WORD wFatTime,
|
||||||
|
NOTIFYPROC callback);
|
||||||
|
|
||||||
|
extern BOOL
|
||||||
|
ensure_directory (char *pathname, char *new_part,
|
||||||
|
NOTIFYPROC callback);
|
||||||
|
|
||||||
|
/* codes for NOITIFYPROC */
|
||||||
|
#define DIR_CREATED 1
|
||||||
|
#define CAN_OVERWRITE 2
|
||||||
|
#define FILE_CREATED 3
|
||||||
|
#define ZLIB_ERROR 4
|
||||||
|
#define SYSTEM_ERROR 5
|
||||||
|
#define NUM_FILES 6
|
||||||
|
#define FILE_OVERWRITTEN 7
|
||||||
|
|
|
@ -0,0 +1,312 @@
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#include "zlib.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "archive.h"
|
||||||
|
|
||||||
|
/* Convert unix-path to dos-path */
|
||||||
|
static void normpath(char *path)
|
||||||
|
{
|
||||||
|
while (path && *path) {
|
||||||
|
if (*path == '/')
|
||||||
|
*path = '\\';
|
||||||
|
++path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL ensure_directory(char *pathname, char *new_part, NOTIFYPROC notify)
|
||||||
|
{
|
||||||
|
while (new_part && *new_part && (new_part = strchr(new_part, '\\'))) {
|
||||||
|
DWORD attr;
|
||||||
|
*new_part = '\0';
|
||||||
|
attr = GetFileAttributes(pathname);
|
||||||
|
if (attr == -1) {
|
||||||
|
/* nothing found */
|
||||||
|
if (!CreateDirectory(pathname, NULL) && notify)
|
||||||
|
notify(SYSTEM_ERROR,
|
||||||
|
"CreateDirectory (%s)", pathname);
|
||||||
|
else
|
||||||
|
notify(DIR_CREATED, pathname);
|
||||||
|
}
|
||||||
|
if (attr & FILE_ATTRIBUTE_DIRECTORY) {
|
||||||
|
;
|
||||||
|
} else {
|
||||||
|
SetLastError(183);
|
||||||
|
if (notify)
|
||||||
|
notify(SYSTEM_ERROR,
|
||||||
|
"CreateDirectory (%s)", pathname);
|
||||||
|
}
|
||||||
|
*new_part = '\\';
|
||||||
|
++new_part;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX Should better explicitely specify
|
||||||
|
* uncomp_size and file_times instead of pfhdr!
|
||||||
|
*/
|
||||||
|
char *map_new_file(DWORD flags, char *filename,
|
||||||
|
char *pathname_part, int size,
|
||||||
|
WORD wFatDate, WORD wFatTime,
|
||||||
|
NOTIFYPROC notify)
|
||||||
|
{
|
||||||
|
HANDLE hFile, hFileMapping;
|
||||||
|
char *dst;
|
||||||
|
FILETIME ft;
|
||||||
|
|
||||||
|
try_again:
|
||||||
|
if (!flags)
|
||||||
|
flags = CREATE_NEW;
|
||||||
|
hFile = CreateFile(filename,
|
||||||
|
GENERIC_WRITE | GENERIC_READ,
|
||||||
|
0, NULL,
|
||||||
|
flags,
|
||||||
|
FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
if (hFile == INVALID_HANDLE_VALUE) {
|
||||||
|
DWORD x = GetLastError();
|
||||||
|
switch (x) {
|
||||||
|
case ERROR_FILE_EXISTS:
|
||||||
|
if (notify && notify(CAN_OVERWRITE, filename))
|
||||||
|
hFile = CreateFile(filename,
|
||||||
|
GENERIC_WRITE|GENERIC_READ,
|
||||||
|
0, NULL,
|
||||||
|
CREATE_ALWAYS,
|
||||||
|
FILE_ATTRIBUTE_NORMAL,
|
||||||
|
NULL);
|
||||||
|
else {
|
||||||
|
if (notify)
|
||||||
|
notify(FILE_OVERWRITTEN, filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ERROR_PATH_NOT_FOUND:
|
||||||
|
if (ensure_directory(filename, pathname_part, notify))
|
||||||
|
goto try_again;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SetLastError(x);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hFile == INVALID_HANDLE_VALUE) {
|
||||||
|
if (notify)
|
||||||
|
notify (SYSTEM_ERROR, "CreateFile (%s)", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (notify)
|
||||||
|
notify(FILE_CREATED, filename);
|
||||||
|
|
||||||
|
DosDateTimeToFileTime(wFatDate, wFatTime, &ft);
|
||||||
|
SetFileTime(hFile, &ft, &ft, &ft);
|
||||||
|
|
||||||
|
|
||||||
|
if (size == 0) {
|
||||||
|
/* We cannot map a zero-length file (Also it makes
|
||||||
|
no sense */
|
||||||
|
CloseHandle(hFile);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
hFileMapping = CreateFileMapping(hFile,
|
||||||
|
NULL, PAGE_READWRITE, 0, size, NULL);
|
||||||
|
|
||||||
|
CloseHandle(hFile);
|
||||||
|
|
||||||
|
if (hFileMapping == INVALID_HANDLE_VALUE) {
|
||||||
|
if (notify)
|
||||||
|
notify(SYSTEM_ERROR,
|
||||||
|
"CreateFileMapping (%s)", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
dst = MapViewOfFile(hFileMapping,
|
||||||
|
FILE_MAP_WRITE, 0, 0, 0);
|
||||||
|
|
||||||
|
CloseHandle(hFileMapping);
|
||||||
|
|
||||||
|
if (!dst) {
|
||||||
|
if (notify)
|
||||||
|
notify(SYSTEM_ERROR, "MapViewOfFile (%s)", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
extract_file(char *dst, char *src, int method, int comp_size,
|
||||||
|
int uncomp_size, NOTIFYPROC notify)
|
||||||
|
{
|
||||||
|
z_stream zstream;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
if (method == Z_DEFLATED) {
|
||||||
|
int x;
|
||||||
|
memset(&zstream, 0, sizeof(zstream));
|
||||||
|
zstream.next_in = src;
|
||||||
|
zstream.avail_in = comp_size+1;
|
||||||
|
zstream.next_out = dst;
|
||||||
|
zstream.avail_out = uncomp_size;
|
||||||
|
|
||||||
|
/* Apparently an undocumented feature of zlib: Set windowsize
|
||||||
|
to negative values to supress the gzip header and be compatible with
|
||||||
|
zip! */
|
||||||
|
result = TRUE;
|
||||||
|
if (Z_OK != (x = inflateInit2(&zstream, -15))) {
|
||||||
|
if (notify)
|
||||||
|
notify(ZLIB_ERROR,
|
||||||
|
"inflateInit2 returns %d", x);
|
||||||
|
result = FALSE;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (Z_STREAM_END != (x = inflate(&zstream, Z_FINISH))) {
|
||||||
|
if (notify)
|
||||||
|
notify(ZLIB_ERROR,
|
||||||
|
"inflate returns %d", x);
|
||||||
|
result = FALSE;
|
||||||
|
}
|
||||||
|
cleanup:
|
||||||
|
if (Z_OK != (x = inflateEnd(&zstream))) {
|
||||||
|
if (notify)
|
||||||
|
notify (ZLIB_ERROR,
|
||||||
|
"inflateEnd returns %d", x);
|
||||||
|
result = FALSE;
|
||||||
|
}
|
||||||
|
} else if (method == 0) {
|
||||||
|
memcpy(dst, src, uncomp_size);
|
||||||
|
result = TRUE;
|
||||||
|
} else
|
||||||
|
result = FALSE;
|
||||||
|
UnmapViewOfFile(dst);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open a zip-compatible archive and extract all files
|
||||||
|
* into the specified directory (which is assumed to exist)
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
unzip_archive(SCHEME *scheme, char *dirname, char *data, DWORD size,
|
||||||
|
NOTIFYPROC notify)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
char pathname[MAX_PATH];
|
||||||
|
char *new_part;
|
||||||
|
|
||||||
|
/* read the end of central directory record */
|
||||||
|
struct eof_cdir *pe = (struct eof_cdir *)&data[size - sizeof
|
||||||
|
(struct eof_cdir)];
|
||||||
|
|
||||||
|
int arc_start = size - sizeof (struct eof_cdir) - pe->nBytesCDir -
|
||||||
|
pe->ofsCDir;
|
||||||
|
|
||||||
|
/* set position to start of central directory */
|
||||||
|
int pos = arc_start + pe->ofsCDir;
|
||||||
|
|
||||||
|
/* make sure this is a zip file */
|
||||||
|
if (pe->tag != 0x06054b50)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* Loop through the central directory, reading all entries */
|
||||||
|
for (n = 0; n < pe->nTotalCDir; ++n) {
|
||||||
|
int i;
|
||||||
|
char *fname;
|
||||||
|
char *pcomp;
|
||||||
|
char *dst;
|
||||||
|
struct cdir *pcdir;
|
||||||
|
struct fhdr *pfhdr;
|
||||||
|
|
||||||
|
pcdir = (struct cdir *)&data[pos];
|
||||||
|
pfhdr = (struct fhdr *)&data[pcdir->ofs_local_header +
|
||||||
|
arc_start];
|
||||||
|
|
||||||
|
if (pcdir->tag != 0x02014b50)
|
||||||
|
return FALSE;
|
||||||
|
if (pfhdr->tag != 0x04034b50)
|
||||||
|
return FALSE;
|
||||||
|
pos += sizeof(struct cdir);
|
||||||
|
fname = (char *)&data[pos]; /* This is not null terminated! */
|
||||||
|
pos += pcdir->fname_length + pcdir->extra_length +
|
||||||
|
pcdir->comment_length;
|
||||||
|
|
||||||
|
pcomp = &data[pcdir->ofs_local_header
|
||||||
|
+ sizeof(struct fhdr)
|
||||||
|
+ arc_start
|
||||||
|
+ pfhdr->fname_length
|
||||||
|
+ pfhdr->extra_length];
|
||||||
|
|
||||||
|
/* dirname is the Python home directory (prefix) */
|
||||||
|
strcpy(pathname, dirname);
|
||||||
|
if (pathname[strlen(pathname)-1] != '\\')
|
||||||
|
strcat(pathname, "\\");
|
||||||
|
new_part = &pathname[lstrlen(pathname)];
|
||||||
|
/* we must now match the first part of the pathname
|
||||||
|
* in the archive to a component in the installation
|
||||||
|
* scheme (PURELIB, PLATLIB, HEADERS, SCRIPTS, or DATA)
|
||||||
|
* and replace this part by the one in the scheme to use
|
||||||
|
*/
|
||||||
|
for (i = 0; scheme[i].name; ++i) {
|
||||||
|
if (0 == strnicmp(scheme[i].name, fname,
|
||||||
|
strlen(scheme[i].name))) {
|
||||||
|
char *rest;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
/* length of the replaced part */
|
||||||
|
int namelen = strlen(scheme[i].name);
|
||||||
|
|
||||||
|
strcat(pathname, scheme[i].prefix);
|
||||||
|
|
||||||
|
rest = fname + namelen;
|
||||||
|
len = pfhdr->fname_length - namelen;
|
||||||
|
|
||||||
|
if ((pathname[strlen(pathname)-1] != '\\')
|
||||||
|
&& (pathname[strlen(pathname)-1] != '/'))
|
||||||
|
strcat(pathname, "\\");
|
||||||
|
/* Now that pathname ends with a separator,
|
||||||
|
* we must make sure rest does not start with
|
||||||
|
* an additional one.
|
||||||
|
*/
|
||||||
|
if ((rest[0] == '\\') || (rest[0] == '/')) {
|
||||||
|
++rest;
|
||||||
|
--len;
|
||||||
|
}
|
||||||
|
|
||||||
|
strncat(pathname, rest, len);
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* no prefix to replace found, go unchanged */
|
||||||
|
strncat(pathname, fname, pfhdr->fname_length);
|
||||||
|
Done:
|
||||||
|
normpath(pathname);
|
||||||
|
if (pathname[strlen(pathname)-1] != '\\') {
|
||||||
|
/*
|
||||||
|
* The local file header (pfhdr) does not always
|
||||||
|
* contain the compressed and uncompressed sizes of
|
||||||
|
* the data depending on bit 3 of the flags field. So
|
||||||
|
* it seems better to use the data from the central
|
||||||
|
* directory (pcdir).
|
||||||
|
*/
|
||||||
|
dst = map_new_file(0, pathname, new_part,
|
||||||
|
pcdir->uncomp_size,
|
||||||
|
pcdir->last_mod_file_date,
|
||||||
|
pcdir->last_mod_file_time, notify);
|
||||||
|
if (dst) {
|
||||||
|
if (!extract_file(dst, pcomp, pfhdr->method,
|
||||||
|
pcdir->comp_size,
|
||||||
|
pcdir->uncomp_size,
|
||||||
|
notify))
|
||||||
|
return FALSE;
|
||||||
|
} /* else ??? */
|
||||||
|
}
|
||||||
|
if (notify)
|
||||||
|
notify(NUM_FILES, new_part, (int)pe->nTotalCDir,
|
||||||
|
(int)n+1);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,220 @@
|
||||||
|
//Microsoft Developer Studio generated resource script.
|
||||||
|
//
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
|
//
|
||||||
|
#include "afxres.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Neutral resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Bitmap
|
||||||
|
//
|
||||||
|
|
||||||
|
IDB_BITMAP BITMAP DISCARDABLE "PythonPowered.bmp"
|
||||||
|
#endif // Neutral resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// German (Germany) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// TEXTINCLUDE
|
||||||
|
//
|
||||||
|
|
||||||
|
1 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"resource.h\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
2 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"#include ""afxres.h""\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
3 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
#endif // German (Germany) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// English (U.S.) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Dialog
|
||||||
|
//
|
||||||
|
|
||||||
|
IDD_INTRO DIALOGEX 0, 0, 379, 178
|
||||||
|
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||||
|
CAPTION "Setup"
|
||||||
|
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
LTEXT "This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.",
|
||||||
|
IDC_TITLE,125,10,247,20,NOT WS_GROUP
|
||||||
|
EDITTEXT IDC_INTRO_TEXT,125,31,247,131,ES_MULTILINE | ES_READONLY |
|
||||||
|
WS_VSCROLL | WS_HSCROLL | NOT WS_TABSTOP
|
||||||
|
CONTROL 110,IDC_BITMAP,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
|
||||||
|
104,163,WS_EX_CLIENTEDGE
|
||||||
|
LTEXT "",IDC_BUILD_INFO,125,163,247,8
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_SELECTPYTHON DIALOGEX 0, 0, 379, 178
|
||||||
|
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||||
|
CAPTION "Setup"
|
||||||
|
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Select python installation to use:",IDC_TITLE,125,10,
|
||||||
|
247,12,NOT WS_GROUP
|
||||||
|
EDITTEXT IDC_PATH,191,136,181,14,ES_AUTOHSCROLL | ES_READONLY
|
||||||
|
LTEXT "Python Directory:",IDC_STATIC,125,137,55,8
|
||||||
|
LISTBOX IDC_VERSIONS_LIST,125,24,247,106,LBS_SORT |
|
||||||
|
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||||
|
CONTROL 110,IDC_BITMAP,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
|
||||||
|
104,163,WS_EX_CLIENTEDGE
|
||||||
|
EDITTEXT IDC_INSTALL_PATH,191,157,181,14,ES_AUTOHSCROLL |
|
||||||
|
ES_READONLY
|
||||||
|
LTEXT "Installation Directory:",IDC_STATIC,125,158,66,8
|
||||||
|
PUSHBUTTON "Find other ...",IDC_OTHERPYTHON,322,7,50,14,NOT
|
||||||
|
WS_VISIBLE
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_INSTALLFILES DIALOGEX 0, 0, 379, 178
|
||||||
|
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||||
|
CAPTION "Setup"
|
||||||
|
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.",
|
||||||
|
IDC_TITLE,125,10,246,31,NOT WS_GROUP
|
||||||
|
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
|
||||||
|
125,157,246,14
|
||||||
|
CTEXT "Installation progress:",IDC_INFO,125,137,246,8
|
||||||
|
CONTROL 110,IDC_BITMAP,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
|
||||||
|
104,163,WS_EX_CLIENTEDGE
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_FINISHED DIALOGEX 0, 0, 379, 178
|
||||||
|
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||||
|
CAPTION "Setup"
|
||||||
|
FONT 8, "MS Sans Serif"
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Click the Finish button to exit the Setup wizard.",
|
||||||
|
IDC_TITLE,125,10,247,31,NOT WS_GROUP
|
||||||
|
CONTROL 110,IDC_BITMAP,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
|
||||||
|
104,163,WS_EX_CLIENTEDGE
|
||||||
|
EDITTEXT IDC_INFO,125,40,247,131,ES_MULTILINE | ES_READONLY |
|
||||||
|
WS_VSCROLL | WS_HSCROLL | NOT WS_TABSTOP
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// DESIGNINFO
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
GUIDELINES DESIGNINFO DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDD_INTRO, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 372
|
||||||
|
VERTGUIDE, 125
|
||||||
|
VERTGUIDE, 372
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 171
|
||||||
|
HORZGUIDE, 8
|
||||||
|
HORZGUIDE, 31
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_SELECTPYTHON, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 372
|
||||||
|
VERTGUIDE, 125
|
||||||
|
VERTGUIDE, 372
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 171
|
||||||
|
HORZGUIDE, 8
|
||||||
|
HORZGUIDE, 41
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_INSTALLFILES, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 372
|
||||||
|
VERTGUIDE, 125
|
||||||
|
VERTGUIDE, 371
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 171
|
||||||
|
HORZGUIDE, 8
|
||||||
|
HORZGUIDE, 41
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_FINISHED, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 6
|
||||||
|
RIGHTMARGIN, 372
|
||||||
|
VERTGUIDE, 125
|
||||||
|
VERTGUIDE, 372
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 171
|
||||||
|
HORZGUIDE, 8
|
||||||
|
HORZGUIDE, 41
|
||||||
|
END
|
||||||
|
END
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
#endif // English (U.S.) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#endif // not APSTUDIO_INVOKED
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
//{{NO_DEPENDENCIES}}
|
||||||
|
// Microsoft Developer Studio generated include file.
|
||||||
|
// Used by install.rc
|
||||||
|
//
|
||||||
|
#define IDD_DIALOG1 101
|
||||||
|
#define IDB_BITMAP1 103
|
||||||
|
#define IDD_INTRO 107
|
||||||
|
#define IDD_SELECTPYTHON 108
|
||||||
|
#define IDD_INSTALLFILES 109
|
||||||
|
#define IDD_FINISHED 110
|
||||||
|
#define IDB_BITMAP 110
|
||||||
|
#define IDC_EDIT1 1000
|
||||||
|
#define IDC_TITLE 1000
|
||||||
|
#define IDC_START 1001
|
||||||
|
#define IDC_PROGRESS 1003
|
||||||
|
#define IDC_INFO 1004
|
||||||
|
#define IDC_PYTHON15 1006
|
||||||
|
#define IDC_PATH 1007
|
||||||
|
#define IDC_PYTHON16 1008
|
||||||
|
#define IDC_INSTALL_PATH 1008
|
||||||
|
#define IDC_PYTHON20 1009
|
||||||
|
#define IDC_BROWSE 1010
|
||||||
|
#define IDC_INTRO_TEXT 1021
|
||||||
|
#define IDC_VERSIONS_LIST 1022
|
||||||
|
#define IDC_BUILD_INFO 1024
|
||||||
|
#define IDC_BITMAP 1025
|
||||||
|
#define IDC_OTHERPYTHON 1026
|
||||||
|
|
||||||
|
// Next default values for new objects
|
||||||
|
//
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
#define _APS_NEXT_RESOURCE_VALUE 112
|
||||||
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
|
#define _APS_NEXT_CONTROL_VALUE 1028
|
||||||
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
#endif
|
||||||
|
#endif
|
|
@ -0,0 +1,127 @@
|
||||||
|
# Microsoft Developer Studio Project File - Name="wininst" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||||
|
|
||||||
|
CFG=wininst - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "wininst.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "wininst.mak" CFG="wininst - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "wininst - Win32 Release" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE "wininst - Win32 Debug" (based on "Win32 (x86) Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
MTL=midl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "wininst - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "."
|
||||||
|
# PROP Intermediate_Dir "temp-release"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /O1 /I "zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
|
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||||
|
# ADD RSC /l 0x407 /d "NDEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||||
|
# ADD LINK32 imagehlp.lib comdlg32.lib ole32.lib zlibstat.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"LIBC" /libpath:"zlib\static32"
|
||||||
|
# Begin Special Build Tool
|
||||||
|
SOURCE="$(InputPath)"
|
||||||
|
PostBuild_Cmds=c:\util\upx.exe --best wininst.exe
|
||||||
|
# End Special Build Tool
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "wininst - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "."
|
||||||
|
# PROP Intermediate_Dir "temp-debug"
|
||||||
|
# PROP Ignore_Export_Lib 0
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /Z7 /Od /I "zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /FD /c
|
||||||
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
|
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
||||||
|
# ADD RSC /l 0x407 /d "_DEBUG"
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||||
|
# ADD LINK32 imagehlp.lib comdlg32.lib ole32.lib zlibstat.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"LIBC" /out:"./wininst_d.exe" /libpath:"zlib\static32"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "wininst - Win32 Release"
|
||||||
|
# Name "wininst - Win32 Debug"
|
||||||
|
# Begin Group "Source Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\extract.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\install.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\install.rc
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Header Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\archive.h
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Resource Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\PythonPowered.bmp
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# End Target
|
||||||
|
# End Project
|
|
@ -0,0 +1,29 @@
|
||||||
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "wininst"=.\wininst.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
Loading…
Reference in New Issue