Version 5.2 implements significant changes to where the data is stored. Most data stored in INI files have been moved to database tables in preparation for QuoteWerks Web.
After updating to version 5.2 you will see some different files.
Take for example the User "John Lewe". The user ini file used to be "JLEWE.INI". In this example, after the upgrade, there will no longer be a JLEWE.INI file. You will see JLEWE.backup01 and JLEWE.UPGRADED01. Once you are confident the upgrade process has correctly transferred the data, you can delete both of these files.
The upgrade goes through a list of users currently in the QuoteWerks database user list and does the INI conversions. If you have deleted a QuoteWerks user and their, for example, JLEWE.INI file, was left behind, the upgrade will not detect it and will not convert it so you will want to manually delete those files as part of a manual cleanup process.
Of note, the spelling dictionary file for each user was named, for example, JLEWE.dic. The dictionary files have now been renamed to instead use the users full name, so for example, JohnLewe.dic. Any .dic files left behind from a previously deleted user will not be renamed.
Similarly, as system INI files like lookup.ini are converted to database storage you will end up with oexport.backup01 and oexport.upgraded01 files. These files will be moved into the \QuoteWerks\Backups\xxx folder. Once you are confident the upgrade process has correctly transferred the data, you can delete both of these files.
All of the settings that have been transferred to database tables can be viewed from the new Settings Manager accessible by clicking on the [Settings Manager] button on the System tab of the Help->About menu. The Settings Manager is also available from within the Medic Utility by selecting the Utilities->Settings Manager menu.
We have also added new API events and methods (listed below) so that developers can access this data in its new location.
QuoteWerks Version 5.2 INI to DB Changes are below and a list of the QuoteWerks System Files are available in the topic.
Before version 5.2 |
Version 5.2 and higher |
●New Database SYSTEMSETTINGS.MDB and table SystemSettings ●New Database USERSETTINGS.MDB and table UserSetting ●New Database SITE.MDB and table SiteSettings. ●New SITEBOOT.INI file |
|
site.ini |
●No longer exists ●Most contents ported to SystemSettings table in SystemSettings.mdb ●Some contents ported to SiteSettings table in Site.mdb ●Of note, [Scripting] section settings moved to SystemSettings table. ●Remaining small number of settings now stored in SiteBoot.ini |
{UserIniName}.ini (like admini.ini) |
●{UserIniName}.ini files no longer exist ●Contents ported to UserSettings table in UserSettings.mdb |
{UserIniName}.dic (like admini.dic) |
●{UserIniName}.dic files are now named with the User Name instead of an 8 character cryptic name. It is comprised of all the characters in the user name that are the letters A-Z and numbers 0-9 |
lookup.ini |
●Lookup.ini file no longer exists ●Contents ported to SystemSettings table in SystemSettings.mdb |
oexport.ini |
●oexport.ini file no longer exists ●Contents ported to SystemSettings table in SystemSettings.mdb |
sys_cache.ini |
●sys_cache.ini file no longer exists ●Contents ported to SiteSettings table in docs.mdb |
sync.ini |
●sync.ini file no longer exists ●Contents ported to SiteSettings table in docs.mdb |
Backend.ini |
●Still exists |
Menuopts.add |
●Still exists |
SITEBOOT.INI file will now contain only:
[System] Version= Build= SyncVersionBuildBreaksList= UpgradeInProgress= FirstInstalledVersionBuild= UpdateKey= DefaultContactManager_ReadOnly=
[Addons] Addon1= Addon1Users= Addon2=
[Contact Managers] 3rdPartyLinkName= for api integrations, it is easier for them to write to an ini file during their installation. 3rdPartyLinkDescription= 3rdPartyLinkSettings= |
QW.INI ini file will now contain only:
[System] DataPath=
|
MENUOPTS.ADD
[Menu] Quote Importer=%CommonFiles%\QuoteWerks\qwQuoteImporter\qwQuoteImporter.exe Note Pad=notepad.exe |
Along with these changes, changes were made to the API to give developers the tools they need to integrate these new changes:
●New: For API users, added the events: BeforeSynchronization(sXMLData, bCancel) AND AfterSynchronization(sXMLData)
●New: For API users, the event BeforeSaveDocument(ByVal iSaveAction As Integer, ByRef bCancel as Boolean) now fires for the AutoSave events with an iSaveAction=4.
●New: For API users, added event AfterSaveDocumentEx(ByVal iSaveAction As Integer, ByVal iResult As Integer, ByVal sXMLData As String). This event provides more information than the existing AfterSaveDocument() event.
●New: The creation of user login names is no longer limited by the 8 character user INI file name generation. You used to receive a message like "The User Name specified cannot be added because it conflicts with the {username}.ini file of JLEWE.INI"
●New: Under the [Addons] section of the siteboot.ini file there is a new AutoRunXUsers= key. Here you can specify a comma delimited list of users that you want the addon for. For example the AutoRun1=notepad.exe and the AutoRun1Users=John Lewe, Brian Laufer
●New: For API users, added a series of methods to read/write/delete settings from the new Settings table since the data has been moved out of ini files into the database.
Application.SiteSettingRead (sSectionName as String, sKeyName as String)
Application.SiteSettingWrite (sSectionName as String, sKeyName as String, sKeyValue as String)
Application.SiteSettingDelete (sSectionName as String, sKeyName as String)
Application.SystemSettingRead (sSectionName as String, sKeyName as String)
Application.SystemSettingWrite (sSectionName as String, sKeyName as String, sKeyValue as String)
Application.SystemSettingDelete (sSectionName as String, sKeyName as String)
Application.UserSettingRead (sUserName as String, sSectionName as String, sKeyName as String)
Application.UserSettingWrite (sUserName as String, sSectionName as String, sKeyName as String, sKeyValue as String)
Application.UserSettingDelete (sUserName as String, sSectionName as String, sKeyName as String, sKeyValue as String)