[Python-checkins] CVS: distutils/misc PythonPowered.bmp,NONE,1.1 archive.h,NONE,1.1 extract.c,NONE,1.1 wininst.exe,NONE,1.1 install.c,1.1,1.2 install.rc,1.1,1.2 resource.h,1.1,1.2 wininst.dsp,1.1,1.2 wininst.dsw,1.1,1.2

Greg Ward python-dev@python.org
Fri, 25 Aug 2000 19:40:18 -0700


Update of /cvsroot/python/distutils/misc
In directory slayer.i.sourceforge.net:/tmp/cvs-serv19394/misc

Modified Files:
	install.c install.rc resource.h wininst.dsp wininst.dsw 
Added Files:
	PythonPowered.bmp archive.h extract.c wininst.exe 
Log Message:
New release of the Windows installer from Thomas Heller.
The known bug (bogus error message when an empty file is
extracted) is fixed.

Other changes:

- The target-compile and target-optimize flags of bdist_wininst
  are gone. It is no longer possible to compile the python
  files during installation.
- The zlib module is no longer required or used by bdist_wininst.

- I moved the decompression/extraction code into a separate
  file (extract.c).

- The installer stub is now compressed by UPX (see
  http://upx.tsx.org/). This reduces the size of the exe
  (and thus the overhead of the final installer program)
  from 40 kB to 16 kB.

- The installer displays a more uptodate user wizard-like
  user interface, also containing a graphic: Just's Python Powered logo.
  (I could not convince myself to use one of the BeOpen logos).
- The installation progress bar now moves correctly.


--- NEW FILE ---
BM

--- NEW FILE ---
#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;
};

#pragma pack()

typedef int (*NOTIFYPROC)(int code, LPSTR text, ...);

extern BOOL extract_file (char *dst, struct fhdr *phdr, char *src,
			  NOTIFYPROC callback);
extern BOOL unzip_archive (char *dirname, char *data, DWORD size,
			   NOTIFYPROC callback);
extern char *map_new_file (DWORD flags, char *filename, char
			   *pathname_part, struct fhdr *pfhdr,
			   NOTIFYPROC callback);
extern BOOL ensure_directory (char *pathname, char *new_part,
			      NOTIFYPROC callback);

#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

--- NEW FILE ---
#include <windows.h>
#include <commctrl.h>
#include <shlobj.h>
#include "resource.h"

#define ZLIB_DLL
#include "zlib/zlib.h"

#include <stdio.h>
#include <stdarg.h>

#include "archive.h"

/* Convert unix-path to dos-path */
static void fixpath (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);
	}
	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, struct fhdr *pfhdr,
		    NOTIFYPROC notify)
{
    HANDLE hFile, hFileMapping;
    char *dst;
    int size = pfhdr->uncomp_size;
    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 (pfhdr->last_mod_file_date,
			   pfhdr->last_mod_file_time, &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, struct fhdr *phdr, char *src, NOTIFYPROC notify)
{
    z_stream zstream;
    int result;

    if (phdr->method == Z_DEFLATED) {
	int x;
	long crc = 0;
        memset (&zstream, 0, sizeof (zstream));
        zstream.next_in = src;
        zstream.avail_in = phdr->comp_size+1;
	zstream.next_out = dst;
        zstream.avail_out = phdr->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 (phdr->method == 0) {
	memcpy(dst, src, phdr->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 (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) {
	char *fname;
	char *pcomp;
	char *dst;
	struct cdir *pcdir = (struct cdir *)&data[pos];
	struct fhdr *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];

	strcpy (pathname, dirname);
	strcat (pathname, "\\");
	new_part = &pathname[lstrlen (pathname)];
	strncat (pathname, fname, pfhdr->fname_length);
	fixpath (pathname);
	if (pathname[strlen(pathname)-1] != '\\') {
	    dst = map_new_file (0, pathname, new_part, pfhdr, notify);
	    if (dst) {
		if (!extract_file (dst, pfhdr, pcomp, notify))
		    return FALSE;
	    } /* else ??? */
	}
	if (notify)
	    notify (NUM_FILES, new_part, (int)pe->nTotalCDir,
		    (int)n+1);
    }
    return TRUE;
}

--- NEW FILE ---
MZ
$



*{.4
APt	Pm{/\SjUٲ.gfdu%.hT0S;Y$t
]EKfH
އ@Q{J}{3
P;u	tVjVdy=h8l<&+S*hS%v;u'64y(3m'|[8S]R!WFf=
3+L*4.+l>7.oXMP @~<
FVvT#4~썅]TlghPN\
tLP%
;V|9:@
Pk8jA!89WҚ\D};/u
WP$QVp<qJ jf
Y3h`Q
ө3g_8kl>ڶw߶
qtoHoj0llhx,a@@ @hЋVHH^Ac]p5,c89DЊuf.(v$E/ojh<%Wha3g0p-E 8=3WWu|nDBZVd[S3
tA[""P{@P"HP^xd\++KVjdgno|܋[
gtIMEtCtBj#togkc b7tIAB.^oj$hb@,^@d٠3A,t
h	d`"uA6h'=(Bz:A2!q%/owu]tjY}F}`D52
hЀV/='`xxlZiP
 wV7ÅώRPP4W;UۿO\uDH@0|3S~n7ru
F
']w-'jQ<_
GRF@S+맲}QSπWV&1:xJl4+E?@StЂtihƚ
A
XQ?'l
\Tb
la^
?&[(:$
ܶZu
?d ~:` 8~(9~$u$0j[ &'>L
x_Vωzw
@x|Y_TJRQn7Pҁ6eRV4x
AOAz[v3nfLyV',_iqSPUmw;v
>
#÷K\
ćq$0(F=I
-/5ѺEBs.tOUl-dl"P(&v]v$XNZ4Hf@v=n[{^y.6Ct{!V_6>yh %c)8b&?
kY!\uUmDm,6m"Ois3HRͶDT90g^-c䍷^JH-sI4	k7
;HB:PH7%ʉH9
\2$n͖6?9H46l3YChܲu	WgYhrjcP;Gn9HpKO7
P#g>VI %C(!	!xN0,#k;if4,p
Ds+H,\	uL@~s<Y'C
HLыcG18/r7dKwcYtlz+?AHvWH R
0Q]'v8R7<$\!4zuQ,R>P(<f9\Xq7ba]uX s,-pn?L,O=|@'"rԼ+5֋΂r38;l\1 K&&:-L*
ߵÅ|D;u#{(-t;s+ǶHWd+s5uguLAHSS47G0j֣
oL:1+IK,Fs>Uu bmrAN‹Ȥa^{v;>ؠDс-+F\%DR
K]t+x)&\h]d<A*s8WɁ2}%?% e<m[}F⍳tswH(Pao<HCnަqSF7
b-shY24ia2,NO-ѱWK+aj{gr0s!^<41i5n7 rp$
oCSQR4WmgPQ0Ll!>|Oe47v,5]{Y~<;s3J;hJXsC.͋ɵww0x#T滭4vU4skm+En;\Êq@7#t3Y%w+$;s;-0G#|wU#&VkbԐeS
ޭ;*ujX*97s

ke	Yvg@5$L$6p%4w=
=< +y;PNWlY)Hs^k<0_+8VLMQ|Ih{@tV]ٶT
;	阠
A&!Sc	OECH7^*C)*r\n`+,:-!.4p05~X*fvY1j

z\߽Ur+؂Qߢa䐳wVC9C99lCMdi+uFHu
ocwL5ں[m1][&_B?Pn=P]ÖT7j"OEPwZHu
3M:ߵ^ql@G
#gm
l(Fz,~;)+"{E\*eURv"MOUw8V2ȣ~H\g(
@F0rtluI#MT_a(fcW,MEbsD@\.0
,r}g# F-VI`kGnE+E-@ILtbDw"&@Eè 
9s'}΂BH7,`y3'LZk}MέԷr@`04Ee^0DadDnReBAC(0o~݀cku+LM7@lB#	JxVN,-6ۧu!>0;'T-)NgDi#Rr2dFFb<m@b]ca"-r^b>	#B	J>AH;PNfIa4h7

BHDpE+ct
C+"d@|3IJ	0f@#bPej+
+SVPIBe
l Qv gu	c[YuVUl7P	S RUD+zL7D_[SRGdwW
~{4]^Lt}梦[@0OX,,)ρr$WDHiLPTX\i`dhlptix|$i%62~\DDCJ9uq+_n)*ľ[x/l;C9(=AA7&vvsb+x.n9.uJ;;6,v%TQ;s\D+3x%SrofЕD^[+@yN6,J3LHIFuoFlW=

Cv\xB{MC;rWBN5!]t
q$RuǪ<(4>⏁34eC
;Io[+> ;MY`{`8,,-l8+E;&O: I˸},L;v'-,,6nA}-m+r$$ԗX;狱|36r& +z,/68?t8CL_Dؠ,ˈ1z&׋Jc[-C+;t{Ow	J(bZn	n{*ӈ=1r7)軓s҃ԕ`q  wk}1K41!/Zn$G⼴;[t6s
$@+!_a8hdN_f4U$
d4RAhRVURpEo!X`>8dgL(H8{7s;LxSVR=QKu$':
n]@@v逇@Qclk{vmqjwv,
{;Xt2  V+ՂJ0V8nT_pK<U6C<R=n͋r>bYʦj;ǿK,
u~AnѹD(
us4
[؝+9WGWV-XG0|^Z{䌊0zQaZ(R]TQr5^xYn7iQ ;q078?Q;QA9s	+R]NI1&{6%, <"IAKaGrXŢW0#Ȋ΍4;Ǎ,2Nh]+g9#k`^
|;v
X	*Z~Dmx>Ў8N	MY#l/.ux##cĺn[[25#[

i
? inflate 1.3 Copyrightf}995-8 Mark Adler K{Wco{{wk_i#+3i;CScsi%!!e
 
Wizar\wq7`lstax on yno@ c)puSr. Click Next nt.umKcelih`S}p[.No[kybNڂ<ekoSoftw e\Py3OvvsCo\IPnh? Vsi[m(fgtp)gEEDS&ERSION d~FOUNDw]XbYnЮ6}?
If#:,>vchg3Ex[y*G@cs	=gs,*oB!aaMԾwGErr`%6t Ov㣽wr/e5iPfD?

PsmJYESoALWAY	o.=,
p-NO,hPS+CANCEL\SK
6di#duy..8<opI&6sfaKdana

rgƘq_von3"Ctl([NI-FILE <9ln{eiIo3\+,ogrCkBval|	s,2g;c6Zp"Cylv
XWCFke3+_s|c| )ڲ9
k'Det
` `AA?2Ȁ@
2`X2HS;x84Qh2 ( H4
2TU +t24
d2 $2 DAl\AiTS|a<؟dl,dALdARA#rAd2db"dABdAZACzAd:dj*
dAJfAVdA

Yǐ
#Z71s:!aBWOz;K![or$
IZao%`w6#d7%[7v!IW78{-YB!olZjeCo˂
UoG:lo/tkiuqo&
kZooGQٲ1
}
Q*>Sh%u1Wz?5d
w}kl Qtmn%-oy}kr	cmu)y.u]C/ikNx>wf6)t/n]uƾQGCcl+
%9i;h+=aC.]6r)
/Nam/OutpDebug,rV,UnmHI:kQmlsBT8D+
ndA[M:[s?0At\c,s]‚x6Sn%LadcV'
qDosD{ \To!	?لCl$6UpSr;
jPnnv_of5
O9BklP!"	ObjD=ؿMBqS<idBrush4l,f_vm!pnc3u7w,_cJlf_5w~cept_hdr38
tf
SAJ4Vf	;cRSytFgKcBf3D-wsJKj6DlgI7GWR>"ܩaCMZ@BoxCrYDXGYMJb*#UpS1:
Ұ֚-YS<eek
nTr!sl?xAD߈[CursAELw@̾M9CKA
@	.rK#S{e@.&<H,lSN`'Os`m

Index: install.c
===================================================================
RCS file: /cvsroot/python/distutils/misc/install.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** install.c	2000/06/28 02:04:01	1.1
--- install.c	2000/08/26 02:40:11	1.2
***************
*** 1,993 ****
! /*
!  * Written by Thomas Heller, May 2000
!  *
!  * $Id$
!  */
! 
! /*
!  * Windows Installer program for distutils.
!  *
!  * (a kind of self-extracting zip-file)
[...1791 lines suppressed...]
!     unescape (info);
!     GetPrivateProfileString ("Setup", "target_version", "",
! 			     target_version, sizeof (target_version),
! 			     ini_file);
! 
!     GetPrivateProfileString ("metadata", "name", "",
! 			     meta_name, sizeof (meta_name),
! 			     ini_file);
! 
!     hwndMain = CreateBackground (title);
! 
!     RunWizard (hwndMain);
! 
!     /* Clean up */
!     UnmapViewOfFile (arc_data);
!     if (ini_file)
! 	DeleteFile (ini_file);
! 
!     return 0;
! }

Index: install.rc
===================================================================
RCS file: /cvsroot/python/distutils/misc/install.rc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** install.rc	2000/06/28 02:04:01	1.1
--- install.rc	2000/08/26 02:40:11	1.2
***************
*** 1,109 ****
! //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
! 
! /////////////////////////////////////////////////////////////////////////////
! // 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
! 
! /////////////////////////////////////////////////////////////////////////////
! //
! // Dialog
! //
! 
! IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 276, 223
! STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
! CAPTION "Installation"
! FONT 8, "MS Sans Serif"
! BEGIN
!     DEFPUSHBUTTON   "Start",IDC_START,84,202,50,14
!     PUSHBUTTON      "Close",IDCANCEL,142,202,50,14
!     CONTROL         "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
!                     28,184,218,14
!     CTEXT           "static",IDC_INFO,7,172,262,8
!     EDITTEXT        IDC_EDIT1,7,7,262,128,ES_MULTILINE | ES_READONLY | 
!                     WS_VSCROLL | WS_HSCROLL
!     CONTROL         "Use Python 1.5",IDC_PYTHON15,"Button",
!                     BS_AUTORADIOBUTTON,7,140,65,10
!     EDITTEXT        IDC_PATH,42,154,202,14,ES_AUTOHSCROLL
!     CONTROL         "Use Python 1.6",IDC_PYTHON16,"Button",
!                     BS_AUTORADIOBUTTON,79,140,65,10
!     LTEXT           "Directory:",IDC_STATIC,7,157,31,8
!     PUSHBUTTON      "...",IDC_BROWSE,248,154,21,14
! END
! 
! 
! /////////////////////////////////////////////////////////////////////////////
! //
! // DESIGNINFO
! //
! 
! #ifdef APSTUDIO_INVOKED
! GUIDELINES DESIGNINFO DISCARDABLE 
! BEGIN
!     IDD_DIALOG1, DIALOG
!     BEGIN
!         LEFTMARGIN, 7
!         RIGHTMARGIN, 269
!         TOPMARGIN, 7
!         BOTTOMMARGIN, 216
!     END
! END
! #endif    // APSTUDIO_INVOKED
! 
! 
! #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
! /////////////////////////////////////////////////////////////////////////////
! 
! 
! 
! #ifndef APSTUDIO_INVOKED
! /////////////////////////////////////////////////////////////////////////////
! //
! // Generated from the TEXTINCLUDE 3 resource.
! //
! 
! 
! /////////////////////////////////////////////////////////////////////////////
! #endif    // not APSTUDIO_INVOKED
! 
--- 1,215 ----
! //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, 317, 178
! STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
! CAPTION "Setup"
! FONT 8, "MS Sans Serif"
! 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,179,31,NOT WS_GROUP
!     EDITTEXT        IDC_INTRO_TEXT,125,41,179,130,ES_MULTILINE | ES_READONLY | 
!                     WS_VSCROLL | WS_HSCROLL
!     CONTROL         110,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
!                     104,163,WS_EX_CLIENTEDGE
! END
! 
! IDD_SELECTPYTHON DIALOGEX 0, 0, 317, 178
! STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
! CAPTION "Setup"
! FONT 8, "MS Sans Serif"
! BEGIN
!     LTEXT           "Select python installation to use:",IDC_TITLE,125,10,
!                     179,31,NOT WS_GROUP
!     EDITTEXT        IDC_PATH,161,157,120,14,ES_AUTOHSCROLL | ES_READONLY
!     PUSHBUTTON      "...",IDC_BROWSE,284,157,20,14,NOT WS_VISIBLE
!     LTEXT           "Directory:",IDC_STATIC,125,158,31,8
!     LISTBOX         IDC_VERSIONS_LIST,125,41,179,100,LBS_SORT | 
!                     LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
!     CONTROL         110,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
!                     104,163,WS_EX_CLIENTEDGE
! END
! 
! IDD_INSTALLFILES DIALOGEX 0, 0, 317, 178
! STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
! CAPTION "Setup"
! FONT 8, "MS Sans Serif"
! 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,179,31,NOT WS_GROUP
!     CONTROL         "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
!                     125,157,179,14
!     CTEXT           "Installation progress:",IDC_INFO,125,137,179,8
!     CONTROL         110,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
!                     104,163,WS_EX_CLIENTEDGE
! END
! 
! IDD_FINISHED DIALOGEX 0, 0, 317, 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,179,31,NOT WS_GROUP
!     CONTROL         110,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
!                     104,163,WS_EX_CLIENTEDGE
!     LTEXT           "Installation completed successfully.",IDC_INFO,125,41,
!                     179,130
! END
! 
! 
! /////////////////////////////////////////////////////////////////////////////
! //
! // DESIGNINFO
! //
! 
! #ifdef APSTUDIO_INVOKED
! GUIDELINES DESIGNINFO DISCARDABLE 
! BEGIN
!     IDD_INTRO, DIALOG
!     BEGIN
!         LEFTMARGIN, 7
!         RIGHTMARGIN, 310
!         VERTGUIDE, 125
!         VERTGUIDE, 304
!         TOPMARGIN, 7
!         BOTTOMMARGIN, 171
!         HORZGUIDE, 8
!         HORZGUIDE, 41
!     END
! 
!     IDD_SELECTPYTHON, DIALOG
!     BEGIN
!         LEFTMARGIN, 7
!         RIGHTMARGIN, 310
!         VERTGUIDE, 125
!         VERTGUIDE, 304
!         TOPMARGIN, 7
!         BOTTOMMARGIN, 171
!         HORZGUIDE, 8
!         HORZGUIDE, 41
!     END
! 
!     IDD_INSTALLFILES, DIALOG
!     BEGIN
!         LEFTMARGIN, 7
!         RIGHTMARGIN, 310
!         VERTGUIDE, 125
!         VERTGUIDE, 304
!         TOPMARGIN, 7
!         BOTTOMMARGIN, 171
!         HORZGUIDE, 8
!         HORZGUIDE, 41
!     END
! 
!     IDD_FINISHED, DIALOG
!     BEGIN
!         LEFTMARGIN, 6
!         RIGHTMARGIN, 310
!         VERTGUIDE, 125
!         VERTGUIDE, 304
!         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
! 

Index: resource.h
===================================================================
RCS file: /cvsroot/python/distutils/misc/resource.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** resource.h	2000/06/28 02:04:01	1.1
--- resource.h	2000/08/26 02:40:11	1.2
***************
*** 1,24 ****
! //{{NO_DEPENDENCIES}}
! // Microsoft Developer Studio generated include file.
! // Used by install.rc
! //
! #define IDD_DIALOG1                     101
! #define IDC_EDIT1                       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_BROWSE                      1010
! 
! // Next default values for new objects
! // 
! #ifdef APSTUDIO_INVOKED
! #ifndef APSTUDIO_READONLY_SYMBOLS
! #define _APS_NEXT_RESOURCE_VALUE        102
! #define _APS_NEXT_COMMAND_VALUE         40001
! #define _APS_NEXT_CONTROL_VALUE         1012
! #define _APS_NEXT_SYMED_VALUE           101
! #endif
! #endif
--- 1,34 ----
! //{{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_PYTHON20                    1009
! #define IDC_BROWSE                      1010
! #define IDC_INTRO_TEXT                  1021
! #define IDC_VERSIONS_LIST               1022
! 
! // 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         1024
! #define _APS_NEXT_SYMED_VALUE           101
! #endif
! #endif

Index: wininst.dsp
===================================================================
RCS file: /cvsroot/python/distutils/misc/wininst.dsp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** wininst.dsp	2000/06/28 02:04:01	1.1
--- wininst.dsp	2000/08/26 02:40:11	1.2
***************
*** 1,111 ****
! # 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 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"
! 
! !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" /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 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=.\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"
! # End Group
! # Begin Group "Resource Files"
! 
! # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
! # End Group
! # End Target
! # End Project
--- 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 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 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

Index: wininst.dsw
===================================================================
RCS file: /cvsroot/python/distutils/misc/wininst.dsw,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** wininst.dsw	2000/06/28 02:04:01	1.1
--- wininst.dsw	2000/08/26 02:40:11	1.2
***************
*** 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>
! {{{
! }}}
! 
! ###############################################################################
! 
--- 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>
! {{{
! }}}
! 
! ###############################################################################
!