Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.2 KiB

GENERATE SELF-EXTRACTING EXECUTABLE
-----------------------------------
This documents describes the files necessary for performing the generation
of the self-extracting-executable. The main entry-point is GenerateCAB(),
which in turn manipulates INF and CDF objects,
gencab - CAB control module.
geninf - INF object methods.
gencdf - CDF object methods.
files:
-----
gencab.cxx, gencab.h - Cab generation control.
gencdf.cxx, gencdf.h - Cdf object for IExpress file.
geninf.cxx, geninf.h - Inf object for Setup file.
gendbg.cxx, gendbg.h - Internel debug logging.
genmem.cxx, genmem.h - Memory routines, tracks corruption.
genglobl.cxx, genglobl.h - Global variables used in gen routines
genpch.h - Common header includes gen*.h
This design has seperated responsibilities of the various components into
object-type modules. For example, anything which has to do with an INF-file
is handled in the (geninf.c/geninf.h) modules. Likewise, the CDF routines
use an INF interface to obtain information concerning the INF. Previous
implementations of which this code was derived, utilized a monolithic approach
where the CDF, INF and CAB routines had integral knowledge of each others
functionality.
We diverged from this approach to a more object-oriented design which we
believe is more maintainable and somewhat self-documenting.
Structure/Flow:
cab:
if (Create INF Object) {
if (Create CDF Object) {
query CDF, INF objects for pertinent information.
if (CDF newer than CAB) {
Execute IExpress to generate new cab.
} else {
utilize cached cabname.
}
Free CDF Object.
}
Free INF Object.
}
return cabname.
Issues:
-------
1) How do we determine op-sys versioning and archetecture? We need this
to determine where to pull our INF driver-files. This should be passed
in at GenerateCAB() time.
2) Generating an INF (to be or not to be)...although not huge, this could
change our implementating of caching of the CDF/CAB files. Currently,
we will generate a layout-file (sort of).