windows-nt/Source/XPSP1/NT/enduser/netmeeting/nmrk
..
res
confirm.cpp
confirm.h
controlid.h
dslist.cpp
dslist.h
dspropwnd2.cpp
dspropwnd2.h
editserver.cpp
editserver.h
filepane.cpp
filepane.h
fileparm.cpp
fileparm.h
finishdg.cpp
finishdg.h
global.cpp
global.h
makefile
nmak.cpp
nmakreg.h
nmakwiz.cpp
nmakwiz.h
nmrk.rc
poldata.cpp
poldata.h
precomp.h
proppg.cpp
proppg.h
propwnd2.cpp
propwnd2.h
pshthdr.cpp
pshthdr.h
readme.txt
resource.h
setinsht.cpp
setinsht.h
setsht.cpp
setsht.h
sources
util.cpp
util.h
welcmsht.cpp
welcmsht.h
wndprocs.cpp
wndprocs.h

-------------------------------------------------------------------------------
NMRK- NetMeeting Resource Kit wizard										  |
-------------------------------------------------------------------------------
author: ryanha																  |
-------------------------------------------------------------------------------


----------
Overview:
----------
NetMeeting can be configured via the registry.  There are several registry
keys that can be tweaked. Because of the fact that tweaking the registry is 
error-prone by nature, we do not support users directly tweaking the registry.
With prior releases of the NetMeeting Resource kit, the appropriate registry 
keys and values could be tweaked via the Policy Editor, and .POL files.  This
was not an effective solution for all of our customers, because many of them
did not use the policy functionality for a variety of reasons.  The NMRK 
wizard is the solution to this problem.  A user is able to create a custom
distributable file of NetMeeting that has the selected properties enabled
based on the information gathered in the Wizard. In short, the user enters 
information in a series of dialogs, and the wizard creates a file called
nm21c.exe.  This is a custom distributable that the users can use for 
deployment in their corporation.


---------------
Implementation
---------------

1.) Gather information from the user through a series of dialogs
2.) Find the nm21.exe original distributable
3.) Clean up our stuff from the temp directory in case we terminated
	abnormally in a previous run
4.) Create the directory %TEMP%\nmrktmp
5.) Extract the old distributable to the %TEMP%\nmrktmp directory
6.) Find the MsNetMtg.inf file in the %TEMP%\nmrktmp directory
7.) Alter the MsNetMtg.inf file to contian the new registry settings
		based on the information gathered from the wizard dialogs
8.) Copy the nm21.exe file to the output directory with the new filename, 
		this defaults to:

		<nmrk root>\output\nm21c.exe

9.) Use updfile.exe ( from <nmrk root>\tools\ ) to add the new inf file
		to the <nmrk root>\output\nm21c.exe file.
10.) Delete the files that we created in the %TEMP%\nmrktmp directory
11.) Delete the directory %TEMP%\nmrktmp
12.) MessageBox to the user that we have successfully created the custom
		distributable file.
		

//////////////////////////////////////////////////////////////////////
SEE: in file NmAkWiz.cpp: bool CNmAkWiz::_CreateNewInfFile( void )
//////////////////////////////////////////////////////////////////////
in section [DefaultInstall]
	in subsection AddReg add NetMtg.Install.Reg.NMRK section to the end
	in subsiction DelReg add NetMtg.Install.DeleteReg.NMRK

in section [DefaultInstall.NT]
	in subsection AddReg add NetMtg.Install.Reg.NMRK section to the end
	in subsiction DelReg add NetMtg.Install.DeleteReg.NMRK

create section [NetMtg.Install.Reg.NMRK]
	add the registry keys to be added here

create section [NetMtg.Install.DeleteReg.NMRK]
	add the registry keys to be deleted here


There are some keys in section [NetMtg.Install.DeleteReg.NMRK] that may
also be in an AddReg section elsewhere in the .inf file. In section 
[NetMtg.Install.Reg.PerUser], the keys that start with
	HKCU,\"%KEY_CONFERENCING%\\UI\\Directory\",\"Name"
and	HKCU,\"%KEY_CONFERENCING%\\UI\\Directory\",\"Count"

must all be deleted because we add them based on information from the 
NMRK wizard.  The keys are located in the [NetMtg.Install.Reg.NMRK] section.
In section [NetMtg.Install.Reg.PerUser].


--------------
Dependencies |
--------------
1.) The distributable is assumed to be called nm21.exe
	If there is a new version of NetMeeting that is distributed ( nm22.exe ),
	there are going to be some issues to make sure that nmrk.exe works with
	the new distributable.


2.) INF file dependencies ( See item #7 in imelplementation section above )
	To locate the keys:
	HKCU,\"%KEY_CONFERENCING%\\UI\\Directory\",\"Name"
and	HKCU,\"%KEY_CONFERENCING%\\UI\\Directory\",\"Count"
	from the default .inf file, the locations of these keys relative to
	their section is hard-coded. Also,the names of the keys is hard-coded.
	This was done in the interest of simplicity.  However, NMRK is sensitive
	to changes in the distributable .inf file. The following assumptions are
	made:

	1.) Every netmeeting setup environment executes at least one of the sections
			[DefaultInstall], or [DefaultInstall.NT]. 
	2.) The order in which the above sections appear is [DefaultInstall], 
			then [DefaultInstall.NT].
	3.) In each of the above sections, there are two subsections, AddReg and
			DelReg.
	4.) The order in which these subsections appear is AddReg, then DelReg
	5.) The default .inf file does not have sections titled 
			[NetMtg.Install.Reg.NMRK] or [NetMtg.Install.DeleteReg.NMRK]
	6.) The default .inf file uses the section [NetMtg.Install.Reg.PerUser]
			for all installtion environments.
	7.) The default .inf file has the following format for 
			section [NetMtg.Install.Reg.PerUser]:

------------------------------------------------------------------------------
// somewhere in the MsNetMtg.inf file


[NetMtg.Install.Reg.PerUser]
<WHITE SPACE>
HKCU,"%KEY_CONFERENCING%\\UI\\Directory","Count<ANYCHAR*><ENDLINE>
HKCU,"%KEY_CONFERENCING%\\UI\\Directory","Name<ANYCHAR*><ENDLINE>
HKCU,"%KEY_CONFERENCING%\\UI\\Directory","Name<ANYCHAR*><ENDLINE>
HKCU,"%KEY_CONFERENCING%\\UI\\Directory","Name<ANYCHAR*><ENDLINE>
...
[Strings]

------------------------------------------------------------------------------
// END /* somewhere in the MsNetMtg.inf file */ 


//////////////////////////////////////////////////////////////////////
SEE: in file NmAkWiz.cpp: bool CNmAkWiz::_CreateNewInfFile( void )
//////////////////////////////////////////////////////////////////////

3.) NMRK will fail if the following registry key is not there:
		HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NMRK\InstallationDirectory
		NMRK expects to find that registry key.  If it is not present, 
			NMRK will fail with a message stating that the NetMeeting
			Resource Kit was not properly installed				
4.) File locations:
		
		<nmrk root path> == 
			   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NMRK\InstallationDirectory
			
			nmrk.exe is located in this directory

		<nmrk root path>\tools
			updfile.exe is located in this directory and is used to update
				the .INF file in the custom distributable

		<nmrk root path>\output
			This is the default location for the nm21c.exe custom distributable
		
		<nmrk root path>\source
			This is the default location for the nm21.exe original dist. file
			
		%TEMP%\nmrktmp
			This directory is a temp directory that NMRK creates to extract the
			files needed to create the custom distributable