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://mll02.cjb.net/) 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


X-Setup Version 6.2
- no specific reason for this update so far
- FIX: Spelling error inside plug-in error
- FIX: DefaultIcon entry for Plug-ins and Wizards didn't included full path or icon number
- FIX: Clicking in the empty space around an plug-in in the UI does no longer load any plug-in
- MISC: changed the Development IDE from Borland Delphi 5.0 to Delphi 6.0 (http://www.borland.com/)
- MISC: Added StartCHM.bat to /help folder that launches hh.exe for systems where .CHM is normally used by another program
- MISC: Added XQXSetupInfo.exe for displaying several information screens (non blocking), e.g. Item Information, Configuration, About Window, Team Window, Logfile, Stats etc.
- MISC: Added "WM_XQ_XSET_CONFIGCHANGE" message that indicates that the configuration has changed
- MISC: Text inside About box is now loaded from about.cfg
- MISC: Because many people still use XSET without license, a one-time nag-screen has been build that will remind the user about the LICENSE status of XSET
- MISC: Added "Favorites" function to Default UI - Favorites can be controlled using File -> Options. Thanks to Russell Henry [abcdefg@shreve.net] for the idea
- MISC: When activating a plug-in that has several UIPaths (using Favorites or the Search Window) a message is now displayed (inside Status Bar)
- MISC: XPL and XWZ files inside Explorer should now have different, newly designed icons 
- MISC: Improved X-Update so several items can now be packed together into the same ZIP file without generating the old "file not found" error
- MISC: Tip index is not longer system-wide (stored in tips.ini), it is now a per-user setting which is stored in the registry - tips.ini has been renamed to tips.cfg
- MISC: Moved all CFG files to a new folder \cfg, which should allow better ACLs (if needed) in the XSET folder
- MISC: Tip Windows has now clickable (hot) links
- MISC: Created XQXSetupRegComp.exe which registers all COM applications of XSET. This is a last resort help if the COM Registration of SETUP has failed
- MISC: CSV files for X-Update can now have a field "Description" which contains a description for the item
- MISC: X-Update will now ask to launch Default UI on program shutdown when a download has taken place
- UI: Changed "Windows XP" to "Windows XP/DotNET Server"
- UI: Added "Selection" menu to UI that performs the same operations as the pop-up menu
- UI: Links inside the plug-in description, wizard description and comments (Item Information) are now hot and clickable
- UI: Enhanced URL display, is now also able to detect embedded URLs, for example [www.url.com] 
- UI: Menu buttons inside XQXSetupUI.exe are now enabled/disabled, based on the current selection
- UI: "i" button is now disabled if no plug-in is selected
- UI: Finally fixed the "Menu jumping around at startup" bug (Hi Chris@lockergnome.com, hope you like that :-)
- UI: Added "Version History" to "Extras" menu, a little feature to compare the plug-ins of the current XSET version to an older version
- UI: Default UI, Wizards, Config and X-Update have also new icons 
- UI: Create new UI for X-Update which should be better to use than the old one
- UI: If running on Windows XP and the new "Luna" UI is activated, X-Setup will use this new look 
- UI: Tested all UI Elements on a machine with "Big Fonts" enabled, so the old "UI elements too small with Big Fonts enabled" should be gone now
- WIZ: Fixed several typos in Wizards
- ENGINE: Massiv internal changes so showing additional information does no longer block the UI
- ENGINE: Created XQXSetupRuntime.BPL that includes all UI/runtime components for XSET. This reduces the size for each XSET application by about 250 KB
- ENGINE: Removed XQCommon.dll from all files, reduces setup size by 500 KB
- ENGINE: All XSET apps are now build using VCL/RTL BPLs which reduces the size from 600 KB to ~ 100 KB for each XSET application
- ENGINE: Some people have reported that had problems using the "Edit..." command since some editors would like to have the file in "" quotes. This is now implemented
- ENGINE: Used new version checker toolbox for X-Update to detect updated (e.g. 1.85 to 1.85a) better
- GLOBAL: Moved information screens from XQXSetupGlobal.exe to XQXSetupInfo.exe which reduces memory footprint by about 1 MB
- GLOBAL: As soon as XSET is running, a Mutex (XQ_XSET_MUTEX) is created so from now on the setup knows when XSET is still running. This should prevent the common "File is locked" error when installing XSET.
- START: The start-up check is now much faster, since there no hidden windows generated as it was in 6.1
- START: The start-up check now displays only a step ID (e.g. "Step 1.1") and offers the user to view \bin\chkfail.txt which includes detailed instructions for every step. This should be more intuitive than the old solution
- START: X-Setup will no longer update its system settings on startup. These settings are now generated once by SETUP.EXE and then never again
- SETUP: XSET does now create system wide icons on setup. 
- SETUP: If the user selectes to have the Control Panel Icon for XSET, SETUP will now use a registry setting on Windows ME and above instead of coyping the CPL file to \WINDOWS\SYSTEM. This should remove the Control Panel Icon problems on these platforms. 
- SETUP: if XPL or XWZ files should be associated with X-Setup can now be configured during SETUP because of problems with RealPlayer (XPL = eXtended Play List). Thanks to dj-egg@onebox.com for reporting this issue


X-Setup Version 6.3
- Update to fix bugs and add more plug-ins
- FIX: "i" button was enable directly after startup 
- FIX: "i" button was enabled after re-reading all plug-in and plug-in was activated before
- FIX: "i" button stayed enabled when deleting a plug-in
- FIX: Fixed spelling error inside the Welcome window
- FIX: Fixed spelling error inside the Favorites menu
- FIX: Fixed spelling error inside X-Update
- FIX: When a plug-in was deleted, it remained active inside the window
- FIX: When a plug-in had more than one UI path, and was deleted, the other UI paths remained inside XSET
- FIX: Hopefully fixed the "RichEdit line insertion failure" that popped up as soon as RICHED20.DLL Version 5.40 or higher was installed. Thanks to Peter Below (TeamB) (100113.1101@compuXXserve.com) for his posting in "borland.public.delphi.vcl.components.using" at "2002-05-13 11:34:03 PST" which pointed us in the right direction
- MISC: The X-Setup Control Panel icon will now be listed in the category "Performance and Maintenance" when using the "Category View" of Control Panel in Windows XP and upwards
- MISC: Included new icon (xset2.ico) for X-Setup from Lim Chee Aun

