X-Setup Version 1.0 
- German 
- 3'000 LOC (Lines of Code) 
- 30 settings (hua!) 


X-Setup Version 2.0 
- Translated into English 
- 35 settings (still hua!) 


X-Setup Version 2.1 
- Internal Release - never published 


X-Setup Version 3.0 
- Rewritten the entire program from scratch 
- Developed the HBLL (Hack Better and Live Longer) engine 
- Plug-in technique using Windows Scripting with VBScript 


X-Setup Version 3.1 
- Fixed two major problems with the HBLL engine 


X-Setup Version 3.2 
- Fixed problems with the X-Setup UI 


X-Setup Version 4.0 
- Added support for wizards (XWZ) 
- Added a bunch full of new plug-ins 


X-Setup Version 4.01 
- Fixed problems with five 4.0 plug-ins 
- No changes to EXE files; just plug-in update 


X-Setup Version 5.0 
- Extreme Update! 
- 12'000 LOC (7'000 UI, 5'000 Engine) 
- > 300 settings  
- PLUG-IN: GetModeRemote(), GetModeRecord(), InputWindow() and Logoff() functions added 
- PLUG-IN: Able to access REG_EXPAND_SZ with RegReadValue() and RegWriteValue() (DataType = 4) 
- PLUG-IN: Fixed problems with writing REG_BINARY values 
- PLUG-IN: New property VERSION 
- PLUG-IN: New property WARNING  (=1 -> Default Warning; =TEXT -> Display TEXT to user) 
- PLUG-IN: DESCRIPTION and COMMENT extended to support up to 20 lines 
- WIZARD: WELCOME and COMMENT extended to support up to 20 lines 
- USER: Record Mode implemented 
- USER: Button in "Information" to copy plug-in or wizard filename to clipboard 
- USER: Code View for plug-ins in "Information" 
- USER: Better looking Wizard picture (somehow ;-) 
- USER: Accelerated start-up plug-in search (5 - 10% gain) 
- USER: Changed and extended plug-in loader (XQXSetupLoader.EXE) 
- USER: optimized display structure of plug-ins for nearly all plug-ins (more sub folders etc.), together with a lot of plug-in filenames 
- USER: fixed TONS of spelling errors 
- MISC: Settings now stored below "Xteq Systems\X-Setup\CurrentVersion" 


X-Setup Version 5.5
- Small Extreme Update :-)
- FIX: fixed bug that caused a GPF if X-Setup tried to instance an reboot or logoff on Windows 95/98 machines. However, the "Restart" command on Windows NT machines does still not work (the SE_SHUTDOWN_NAME privilege is not set) 
- FIX: fixed bug that caused X-Setup to restore incorrectly when exited in "Maximized" mode 
- FIX: fixed bug that displayed the wrong count of tools (old version also counted empty items, new version only counts items that have programs assigned) 
- FIX: activated ToolTips in toolbar 
- FIX: corrected wrong tab-order between TreeView, Plug-in and "Apply" button 
- FIX: if a registry value is queried (e.g. with RegReadValue()), the key for this values is now opened with KEY_QUERY_VALUE and KEY_ENUMERATE_SUB_KEYS instead of KEY_ALL_ACCESS. This allows non-admin accounts to "see" the actual values even if they only have "read" access to it. 
- FIX: corrected bug that caused the selected item to lost focus inside Options -> Tools list 
- FIX: if "Record Mode" is activated and X-Setup is about to be ended, it will now display a warning message about this issue  
- PLUG-IN: support for Windows 2000 (GetWinVer() returns "4" in this case)   
- UI: changed color for system critical plug-ins from yellow to dark orange (user demand) 
- UI: display of plug-in name in title (user demand) 
- UI: plug-in list now behaves more "Internet"-like 
- UI: added "Read all (no cache)" option to force X-Setup not to use cache even if it's turned on - useful for plug-in developers 
- UI: the "Wizards" menu is now sorted (based on UIPath property) 
- UI: added icons to menu and pop-up menu for better usage   
- ENGINE: added plug-in cache (%TEMP%\XQ_XSET_Cache_XPL_1) no cache: 23 seconds, with cache: 2 seconds 
- ENGINE added wizard cache (%TEMP%\XQ_XSET_Cache_XWZ_1) no cache: 3 seconds, with cache: 1 second (OK, this isn't THAT big difference...) 
- ENGINE: added logfile (%TEMP%\XQ_XSET_Logfile.txt) that logs all applied plug-ins and wizards. Useful for trouble-shooting. 
- ENGINE: added 60 (!) plug-ins compared to X-Setup 5.0 and fixed at about 30 (mainly spelling errors) 
- ENGINE: cached value of GetWinVer() because this function is used very often - faster execution 
- ENGINE: support for "1 byte Plug-ins and Wizards" that can be used to replace older items so "Ghost Entries" are avoided 
- ENGINE: internal changes (NeedRestart(), NeedLogoff(), Plugin/Wizard enumeration) results in less memory and faster execution [NOTE: no changes for plug-ins required] 
- ENGINE: detailed error message if MS Script control is not registered - not just "Class not registered" anymore 
- ENGINE: already include code to manage new "OSVersion" property (6.0) 
- MISC: support for different users on the same machine. If X-Setup can't find a configuration for the current user, a default configuration will be applied (using REGEDIT.EXE)  
- MISC: according to the new Windows 2000 app spec, X-Setup does no longer install anything to the \WINDOWS or \SYSTEM directory. The only exception to this is "XQXSetup.CPL" because it must be installed to \SYSTEM to appear inside the Control Panel 
- MISC: added \Network folder with information and batch files for chain installation of X-Setup 
- MISC: added FAQ to help (finally!) 
 

X-Setup Version 5.6
- Major update to support user requests
- FIX: clicking on a button inside a wizard had no effect at all
- FIX: clicking inside the empty space of the tree view caused the last item to be activated again
- FIX: About Dialog Box displays "Xteq Common DLL %1"
- FIX: "Start Menu Tidy" is only included in Plus! 98 not in the standard Windows 98 package
- FIX: Changing the last item inside Options/Tools resulted in a GPF
- FIX: Automatic restart did not work on NT/2000
- XQCommon: Added "Previous" button to "Tip of the day" Window
- UI: if a plug-in had an error, the icon is no longer reset to "normal" 
- UI: added "Edit" command to context menu of plug-ins
- UI: three icons are now used inside the tree view to distinguish normal, critical and the current plug-in
- UI: added "Reset config" button to Options window (Troubleshooting)
- UI: added "Copy path and name to clipboard" button to "Info" dialog 
- UI: added lockergnome.com to Help Menu
- UI: added configurable font to options - FINALLY! 
- UI: added version.ini that contains the current release of XSET (displayed in About Window). This file can easily be updated by a patch. 
- ENGINE: if no path for a plug-in or wizard is specified, the common dir is automatically appended
- ENGINE: if an error occurs inside a plug-in or wizard, the filename is now also displayed
- ENGINE: Split all commands a plug-ins can use in different objects to improve stability (Note: To maximize performance, make sure that "Safe Mode" and "Record Mode" are off plus deactivate the option "note all actions to logfile")
- ENGINE: added option to log all actions X-Setup performs to logfile
- ENGINE: Added support for deleting registry values and paths when using "Record Mode". Thanks to MLL (http://mll2.free.fr) for pointing us to AXCEL216's (axcel216@aol.com) site that has found this trick.
- ENGINE: Wizards and Plug-ins now use a dedicated object (XQPlugin) that should speed up loading of the files to memory a little bit
- ENGINE: The "Tools" menu is now built by the file TOOLS.INI (\bin path) which is easier to update and also easier to maintence in case XSET is installed on a network share
- ENGINE: Each item inside the Tools menu can now include on which OS these tools are available. All items that don't match the current OS are automatically hidden
- ENGINE: Added search feature ("File"->"Search...") to locate plug-ins easily 
- MISC: New installation, does no longer install anything to your \WINDOWS or \SYSTEM folder except "XQXSetup.CPL" to support the X-Setup icon inside Control Panel 
- MISC: Moved all DLL, EXE etc. files to \bin subfolder. Also created *.EXE.LOCAL which will force Windows 2000 to load all these files directly from this folder, avoiding "DLL HELL" at all cost :)
- MISC: Created XQXSetupStart.exe as ONLY app that start directly to force various checks when launching X-Setup
- MISC: XQXSetupStart.exe now automatically fixes the ";" MSDOS.SYS bug in Windows 98. You original MSDOS.SYS will be saved MSDOS.SYS.FIXED
- MISC: X-Setup Wizards (*.XWZ) can now be imported to your \wizards dir by simply double-clicking them in the Explorer
- MISC: Updated NET_INST\remove.bat, registry entries of XSET are now also removed


X-Setup Version 5.7
- Update to fix bugs and support Windows ME
- FIX: Fixed "slow scrolling" bug inside Team Window
- FIX: Fixed spelling error in plug-in warning
- FIX: Corrected the form how XSET writes " chars to the REG file (Record Mode) - thanks to EM H [mailto:eivind_magnus@hotmail.com]
- FIX: Corrected the @ char for REG files (Record Mode)
- FIX: Corrected "VERSION never displayed" error inside X-Setup and X-Setup Loader
- FIX: Fixed error when MSDOS.SYS did not exist on Win 9x. 
- FIX: Fixed error that XSET might activate the wrong plug-in when using Search feature
- MISC: Added more questions to FAQ list
- ENGINE: Support for Windows ME (GetWinVer() returns 5). Windows ME information: http://www.microsoft.com/windowsme/
- ENGINE: XSET now support values bigger than 2.147.483.648 (max is now 4.294.967.295) when reading or writing values to the registry using REG_DWORD
- MISC: Added desktop.ini to program folder
- ENGINE: Path where logfile (XQ_XSET_Logfile.txt) should be stored can now be configured


X-Setup Version 6.0
- Extreme Update! 
- FIX: Fixed problem that external Programs (Tools) on Windows 98 and Windows 2000 appear in the background. Thanks to Peter van den Boogert (pcboog@xs4all.nl) for his very useful website (http://www.xs4all.nl/~pcboog/hobbies.html) to get the needed code for AllowSetForegroundWindow() and LockSetForegroundWindow()
- FIX: Fixed "too fast" scrolling bug inside Team Window (yep, opposite error to the one fixed in 5.7... :-) 
- FIX: Hopefully fixed bug in Win98/WinME that sometimes caused 8+3 names to be used if a plug-in or wizard is double-clicked. XSET will now transfer all filenames to LFN by using GetLongFilename() from the Windows API. As this function does NOT exist in Windows 95, the bug might still appear in W95!
- FIX: Fixed a bug that RegValueExists() always returns FALSE for (Default) values on Win 9x machines
- FIX: Corrected bug that XSET always used TAHOMA font even if not installed on the current system
- MISC: Create X-Update for X-Setup, an application to update your plug-ins and wizards library from the internet
- MISC: Changed NET_INST\setup.bat and remove.bat as Windows 9x OSes don't like the %0 parameter
- MISC: Added link to allows users to download updated Lockergnome TIP File
- UI: Renamed "Tools" to "Programs"
- UI: Create application to access only Wizards (XQXSetupWiz.exe) and removed "Wizards" menu from default UI (XQXSetupUI.exe)
- UI: Made UI window bigger
- UI: Added "OS Version" to Item Information
- UI: Added File/View logfile option to view logfile
- UI: Changed layout of start.exe
- UI: Added "Delete Wizard" command to XQXSetupWiz.exe
- UI: Added File/View Statistics to menu
- UI: Added Overall version numbers to statistics (thanks to Robert M. Cohen [mailto:robertmcohen@hotmail.com] for the idea)
- UI: The Control Panel icon now starts "X-Setup Welcome" 
- UI: Added message if plug-in was found using "Search" but could not be loaded because of the current configuration
- UI: Added feature to move to next plug-in using F8/CTRL+F8
- UI: Added "Extra" menu to XQXSetupUI.exe to get "File" menu smaller
- ENGINE: Create XQXSetupGlobal.exe which does now serve all options for any X-Setup client
- ENGINE: Moved Programs to XQXSetupGlobal.exe
- ENGINE: Logfile (XQ_XSET_Logfile.txt) is now stored inside X-Setup folder (c:\program files\x-setup\logs\) by default
- ENGINE: Included option to hide all system critical plug-ins (dummy mode :-)
- ENGINE: Finally supported "OSVersion"= property! (Plug-in is automatically disabled if OSVersion does not match)
- ENGINE: Added GetUIElementsCount() function; returns the "COUNT" property (useful for dynamic plug-ins)
- ENGINE: Added FileBackup() function: can be used by plug-ins to create backup; path is configurable by user; fails if file does not exist or can't be copied. FileBackup() will use the \TEMP drive PLUS it might use a different filename than displayed in Logfile or Safe Mode if Network Client is used.
- ENGINE: Added FolderCreate(Path) function to create a new folder (does not return an error if folder already exists)
- ENGINE: Added FolderDelete(Path) function to delete a folder (fails if directory is not empty or does not exist)
- ENGINE: Added FolderExists(Path) function that returns if a folder exists or not (Thanks to [totalxs@hotmail.com] for the FolderXXX commands idea)
- ENGINE: Changed function to generate logfile, logfile is no longer open EXCLUSIVE
- ENGINE: Added functions to retrieve all files in a folder - FileEnum(PathAndPattern) and FileEnumElement(Index)
- ENGINE: Added functions to retrieve all folders in a given folder - FolderEnum(Path) and FolderEnumElement(Index)
- ENGINE: Added check for XQXSetupGlobal.exe to start.exe
- ENGINE: Added RegValueExists(RegPath) function - returns TRUE if the RegValue exists
- ENGINE: Added RegValueType(RegPath) - returns the type of a registry value (same format as used by RegWriteValue() [1=String, 2=DWord, 3=Binary, 4=REG_EXPAND_SZ])
- ENGINE: Added more security checks for FolderXXX() and FileXXX() commands
- ENGINE: Added function: TxtOpen(FileName) -> open a file and returns how many lines have been read
- ENGINE: Added function: TxtClose() -> closes the file, does *NOT* save anything
- ENGINE: Added function: TxtSave() -> saves the file (can be called several times). 
- ENGINE: Added function: TxtSaveAs(NewFileName) -> saves the file as a new file
- ENGINE: Added function: TxtGetLineCount() -> returns the current count of the loaded file (lines)
- ENGINE: Added function: TxtInsertLine(LineNumber,NewContent)-> insert a line with NewContent before the item LineNumber (e.g. "1" will insert it before anything else)
- ENGINE: Added function: TxtDeleteLine(LineNumber) -> deletes a line from the file
- ENGINE: Added function: TxtGetLine(LineNumer) -> returns a line from the file (note: any spaces before or after the line are deleted!)
- ENGINE: Added function: TxtSetLine(LineNumber,NewContent) -> replaces a line with NewContent, or appends it to the file if LineNumber=0
- ENGINE: Added function: TxtFindLine(TextToFind,MatchCase) -> returns the line with the content of TextToFind or 0 if the data could not be found
- ENGINE: Added option to collect statistics 
- ENGINE: Added option to NOT display any plug-in that do not match the current OSVersion
- ENGINE: Changed cache engine AGAIN. Should now be fast and stable enough for the next two-three major releases (yes, I already said this a while ago :)
- ENGINE: Added "CONTACTURL"= property to plug-ins and wizards. This information is displayed inside the item information and can be used to link an URL
- ENGINE: Changed NeedRestart() and NeedLogoff() to NeedLocalRestart()/NeedLocalLogoff() [will be needed for Network Mode]. NOTE: This is only an internal change, no change in any plug-in required!
- ENGINE: Improved InputWindow() function -> Bigger Window
- ENGINE: Fixed bug with Plugin_Terminate() and "OSVERSION"= property
- ENGINE: Extended "UIPATH"= property, can either be "UIPATH"= or "UIPATH x"= (x=1..5), so one plug-in can appear in different places inside the UI
- ENGINE: Added IndicateSettingChange() function that can be used to force all programms to read all all settings again. NOTE: This depends on the app if it will actually do this!
- ENGINE: All XSET apps will now listen for the Windows message "WM_XQ_XSET_NEWITEM". If it is received, the app receiving it will re-read all items (plug-ins or wizards)
- ENGINE: Removed support for Plugin_DataChange() event and DataInvalid() function
- ENGINE: Added plug-in type "9", checked listbox
- ENGINE: Totally re-written the code for the connection PLUG-IN <-> UI, because of massive changes required for checked listbox
- ENGINE: Added DIRTY bit (UIElementsDirty) to IPlugin, which allows UI to react faster if there are changes made from the plug-in (no unnecessary actions anymore)
- ENGINE: Created SetUIElementEx(), GetUIElementEx() functions for setting TRUE/FALSE in a checked listbox 
- ENGINE: Hopefully made the "Global Server Window in the background" problem disappear...
- ENGINE: XSET now supports REG_MULTI_SZ (Typ = 5) values. Thanks to kelleon@nnsk.sk for his posting on 1 Feb 2000 09:25:55 +0100 to http://www.elists.org/pipermail/delphi/2000-February.txt about how to handle these values (http://members.xoom.com/TOndrej/)
- ENGINE: Added "ADMINRIGHTS" property. If not set or ="0", the plug-in can also be run if the current use is not "Administrator". Check for this condition will be included in the next version of XSET.


X-Setup Version 6.1
- Update to fix bugs and support Windows XP
- FIX: Fixed FileBackup() function to not fail if a file beeing backup does not exist
- ENGINE: Support for Windows XP (GetWinVer() returns "6"). Windows XP information: http://www.microsoft.com/windowsxp/
- UI: added support for Windows XP for "Programs" (Options)
- UI: added support for Windows XP for "Plug-ins information"
- MISC: Updated a lot of plug-ins to support Windows XP
- MISC: Added a lot of plug-ins that are especially for Windows XP and MS Office XP













