Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > by-pkgid > 9b65cc73b9e5bfa8556c0f8c11988684 > files > 17

regutils-0.8-1mdk.i586.rpm

					Last updated: Dec 7, 1998 (version 0.8)

Regutils is a collection of programs to help in installing dos/windows
software for diskless machines served by a unix machine.  They are also
useful for applying user and machine specific customizations on the
fly as users log in, or as machines are booted.  This package has been
created out of a larger set of scripts that together allow windows 95 to
be served disklessly, entirely from unix servers.  Being a subset,
there are likely some things in the way these programs operate which seem
odd or out of place (esp gen-app-changes and apply-app-changes).  In the
future, our entire setup will be made available and things will then
make more sense (perhaps).  In the interim, these programs (such as regedit)
may be of use to people in other contexts, so I'm putting them out now.

Enhancements and bug fixes may be mailed to michael@cs.mun.ca; the current
version is available from http://www.cs.mun.ca/~michael/regutils/ and
from ftp://ftp.cs.mun.ca/pub/regutils/.

The package contains the following programs:
    Utilities to manipulate .ini files:
	inicat - cat dos/windows .ini files to standard output.
	inidiff - generate the differences between two dos/windows .ini files.
	iniedit - edit (or patch) a dos/windows .ini file.
	inifilter - filter a dos/windows .ini file by making substitutions
		    and deletions to keys and entries.

    Utilities to manipulate windows 9x registries and dumps there of:
	regdiff - generate the differences between two windows 9x registries.
	regedit - dump or edit a binary windows 9x registry file.
	regfilter - filter a windows 9x registry dump by making substitutions
		    and deletions to keys and entries.
	reghexprint - prints hex entries in registry dumps as characters.
	regsort - sorts a dump of a windows 9x registry.

    Utilities to generate and apply lists of changes resulting from
    the installation of a software package:
    [currently undocumented]
	gen-app-changes - generate a catagorized, filtered and generally munged
			set of differences which are (almost) suitable
			for automatic application by apply-app-changes
	apply-app-changes - apply a set of changes to the shared windows files
			as well as to the client (machine) and user profile
			files.
	fix-w9x-lnk - fix the paths and flags in a .lnk file (very crude).


To understand why this package exists, one must know how software is installed
on diskless windows 9x machines (this is a pretty offal process):

    One begins by setting up a diskful machine so it has user profiles
    enabled(and any other set details that are important) and you take
    a snapshot of the disk.  You then install a software package (or many,
    if you prefer), configure it, etc. so its the way you want it, then
    (after a couple of reboots, to allow new dlls to be installed and old ones
    to be completely removed) you compare the contents of the disk to
    what it was like before the installation.  These changes (including
    new files, changed old files, changed .ini files, changes in the
    system, default user and user registries), are then munged to correct
    path names (which are typically quite different in a diskless situation)
    and to do other miscellaneous tweaks, and are applied to the diskless
    environment (ie, put in the common `share', the client share, and in
    the user's profile).

[the reason for doing this instead of a `network install' is that it works
(most install programs die when they can't find a hard disk, others die
for other random reasons); also it allows the system and user registry
changes to be isolated so that they can be replicated to other machines
and users and so conflicts with other installed packages can be discovered
and resolved]

Obviously, sorting out what has changed from what hasn't is a fair amount
of messing around, especially when you have a pile of packages to install.
So, the natural thing to do is to automate the process as much as possible.  
The gen-app-changes script does a recursive diff of the before and after
images (ie, directory trees) and sorts out the changes into three
categories:
    sbs:	the common share used by all diskless clients (has most of the
		windows/ directory, plus lots of other stuff).  This is
		generally mounted read-only.
    clients:	the computer specific things and the stuff that needs to
		be changed.
    profile:	things that go in the user's profile (eg, start menu items,
		user registry changes, user config files, etc.).
In each of these categories, certain files are treated specially:
    .ini files:	changes to existing ini files are generated using inidiff
    registries:	changes to system.dat and user.dat are handled by regdiff
    text files:	handled by diff -c
    binaries:	handled by saving the new or modified version.
The contents of ini and registry diffs may be modified by pre-configured
`filters' (applied by inifilter and regfilter programs) to do common
substitutions such as changing paths referring to the windows directory, etc.

Once the differences have been noted, sorted and munged by gen-app-changes,
the user gets to look things over and tweak things further (esp, the registry
changes and any application specific files).  The changes can be integrated
into the diskless server using the apply-app-changes script - this script
is used in two ways: first, it can be used to check for conflicts between
the existing system and the changes that are to be applied (this is pretty
painful at the moment, as it just lists the problems and doesn't sort them
out for you - it could be alot smarter); second, it can be used to actually
apply the changes (obviously).  Then you're ready to test the newly
installed software to see if it actually works.


Open questions (if you happen to know the answer to these, let me know):
    * Registry patch files (aka REGEDIT4 files): anyone know the format
      of these?  In particular,
	  - is there a comment character?
	  - how does one delete a key?
	  - how does one delete an entry?
    * Registry files:
	- what do all the bits in the flag fields of the various headers mean? 
    * .lnk files:
	- what is the format of these?