Backup both your database and your shop code from the site ...
Make a new database table and load the copy of your Live site database into it ... let's assume this is a database called: zen_v137
Let's say your Live shop is in:
/catalog
Make a new directory:
/new_shop
Copy all files from /catalog to /new_shop
Next, edit the 2 configuration files:
/new_shop/includes/configure.php
/new_shop/admin/includes/configure.php
Change all of the paths to reflect the new path:
/new_shop where you see /catalog
Change the database references to the new database table zen_v137 and username and password ...
Next, load all of the files from a clean download of Zen Cart v1.3.7 from our site to the:
/new_shop
If you have used the templates and overrides everywhere correctly ... you will not overwrite any of your changes ...
However ... now you need to compare your custom code to the new files to see what changes there might be in the code or language files where there might be new language defines etc.
I use Beyond Compare from scootersoftware.com
First I compare a clean v1.3.7 to a clean old version of the Zen Cart you currently are running to see specific differences ...
Then, I compare the clean v1.3.7 to the template and override directories to see what I need to change or update ...
By using the new directory and database you can take your time on an upgrade ...
To upgrade the database you would run the:
/new_shop/zc_install
And Upgrade the database ...
NOTE: you will do this upgrade of the database a few times ...
The reason you will do this a few times is right now you are testing and tweaking a new database with the new code so that you can adjust the code that is in the:
/new_shop
until all is working right ...
When you think all is right ... you want to empty the tables in the new database zen_v137 and again backup your Live shop database and load it into the zen_v137 database and upgrade again ...
Test the shop again ...
NOTE: if making database changes you should keep a NotePad open to jot down what changes you make to remind you to make them each time you run this proceedure ...
Then test test test ... does everything work right? Does everything look right? Do orders work? Do emails work? etc. etc. etc.
When you think you have this all functional and down to a science on the upgrade of the database ...
Set the Live site to Down for Maintenance ...
Empty the database for the new site zen_v137 ... again
Backup the Live site database ...
Load into the new site database into zen_v137 ...
Run the /new_shop/zc_install again and Upgrade the database ...
Test everything one more time ...
Make sure these tests included:
create account
login/logout
checkout
test each payment module
check the admin for the new customers, orders, etc.
If all is right ... and perfect ...
Edit the two configuration files in the New Shop:
/new_shop/includes/configure.php
/new_shop/admin/includes/configure.php
Change the paths from:
/new_shop to /catalog
Do NOT change the database name, username or password ... this new database zen_v137 is your new database from now on ... save your old database in case of problems ...
Rename the directory for the Live site from:
/catalog to /old_site
rename the directory for the New site from:
/new_shop to /catalog
Set the new Live site off of Down for Maintenance ... and your site is back up and running ...
Read this through several times to get the hang of what you are really doing here ...
Practice the upgrade several times and really test everything ...
Only when you really think you are ready to do the last stage of the Down for Maintenance on the Live site ... backup of the Live Site database for the last time ... and the last empty and load of the Live site database to the new database and the last /new_shop/zc_install are you in any rush so to speak ... and even then ... take your time ...
You can do this over a day or a week or a month to get a site ready to go live on an upgrade using this method ...
NOTE: if you do not use a directory such as:
/catalog
but use the root of your site ...
You can move the files and directories into a directory called:
/old_site
And move the files and directories from /new_shop to your root ...
NOTE: usually when you do this method to the root you do not move your /images directory ...