Auctioneer/CrossAccountSharing

From Norganna's AddOns

Jump to: navigation, search


Data is shared on the same system by all characters on the same account, by default, and is stored separately by Realm and Faction. If you have one Blizzard account, then this procedure is not necessary.

This will not work like you want if you ever play both of the accounts in question at the same time. If you have both accounts logged in at the same time, the last account to logout will overwrite any data the first account to logout may have collected and written to disk. If you play both accounts at the same time, you are probably better off manually copying the files.

Contents

Background

In the Auctioneer Forums there have been a number of posts asking for the ability to share data across accounts on the same computer. Blizzard does not provide this functionality from within the game, so there's nothing that can be done to the AddOn itself to allow for this, however, it is possible in some circumstances using features of file systems or operating systems. I'm by no means an expert in this area, but I have successfully shared data between accounts on a couple of different systems, so I'm adding information here as I have time regarding how I did it. As is the case with many wiki contributors, I have other responsibilities in my life, so I will work on this as much as I can, but it may be incomplete for a very long time.

To make it clear what this page deals with, please consider the following:

Say a person, we will call him Leroy, has two World of Warcraft accounts, one called Jenkins and one called GroupSuicide. Now say he wants to be able to have one set of Auctioneer data that he sees under both accounts, and wants to have it updated whenever he scans with any Toon on either account. As has been mentioned many times by the devs for the AddOns, this is not possible using only Blizzard provided functionality. This is because Blizzard only allows AddOns to store data on a per-toon or per-account basis, not on a per-computer basis.

So, the AddOn data for the Auctioneer Suite will be laid out as follows:

<Path to Wow Directory>/WTF/Account--|
                                     |
                                      --Jenkins/SavedVariables/<Lots of files that end in .lua>
                                     |
                                      --GroupSuicide/SavedVariables/<Lots of files that end in .lua>

The only way, then, to accomplish what LeRoy wants is to somehow make one of the accounts look at the data files for the other account. This is actually a fairly trivial process in MS Windows Vista/7, Mac OS X, and in most distributions of Linux. This is also possible, though not trivial, in Windows XP. The Windows XP solution does require the installation of some third-party software that gives you the tools you need to work with the Windows XP file system (NTFS) in the way you need to. I'll start with the Linux instructions, as this will seem the most straight forward for them.

The standard disclaimers apply, specifically:

  • Back up your data before trying this
  • Don't blame me if it doesn't work and you lose data, it worked for me, YMMV.
  • Don't ask the devs for help with this, because it's really beyond the scope of their work.


Specific Files

All of those beginning with Auc - Auc-Advanced, Auc-Stat-iLevel, Auc-Stat-StdDev, et cetera.

You will almost certainly want your BeanCounter, Enchantrix, and Informant data and settings, too.

  • BeanCounter.lua
  • Enchantrix.lua
  • Informant.lua

How to Share Data Across Accounts in Linux and MacOS X

To share data, we want to create a symlink, which is short for symbolic link, in one of the accounts' WTF/Account folder that points to the SavedVariables folder in the other accounts WTF/Account folder. For those who don't know what symlinks are, I'll give a quick description that is not perfectly accurate, but sufficient for our purposes. A symlink is a second entry point for data stored on the disk. So, if we create some data and save it with the name "FileA", we've created a "door" called "FileA" into the room that contains our data. If we create a symlink called "FileB" pointed at FileA (which is commonly denoted somewhat like this: File B-->FileA), we've created another "door" called "FileB" into the same room that contains the same data.

On Mac OS X we do this with the Terminal Application which is in the Utilities folder in the Applications folder.

To make symlinks in Linux and Mac OS X, we use the command:

ln -s <destination> <linkname>

The -s tells it to make a symbolic link, or symlink. In our case, we want the linkname to be the same as the filename of the destination, so the easiest way to do it is to pick an account, we'll pick Jenkins this time, and go into its folder. You want to go into the folder, because it will simplify the command you need to run. We do this with the cd command:

cd <Path to WoW Folder>/WTF/Account/Jenkins

Because Blizzard moves files when it makes backups of your data, we actually have to symlink the directory, rather than individual files, which actually simplifies the process. Both accounts likely already have a SavedVariables folder, and you'll need to delete the one on in the Jenkins directory (you've already made a backup, right?), then type:

ln -s <Path to WoW Directory>/WTF/Account/GroupSuicide/SavedVariables

Because we left out the linkname, the command will create a link in the directory we are in with the same name as the destination, so that when WoW opens the the directory to read data, from either account, it's looking at the same data.

So, the quick version of this is:

  1. Backup your data
  2. Change to the WFT/Account/<AccountName> folder of the account you'll be linking to the other account's data
  3. Delete the SavedVariables Directory
  4. Link the files using:
    ln -s <Path To WoW Folder>/WTF/Account/<destination account>/SavedVariables
  5. Have fun with your new unified data!

How to Share Data Across Accounts in Windows

Most flavors of Windows since Windows 95 have implemented something called a "Windows shortcut", which seems to work similar to the symlinking described above. They are actually, technically, quite different. Instead of being an additional "door" into the "room" filled with the data you want, a shortcut is like a different room that is empty except for a sign in the middle of the room that instructs Windows to go try looking in a different room somewhere else. Because a shortcut is actually a file, programs will open the shortcut and put their data there, or at least attempt to, making the best case scenario that you still have two sets of data, and the worst that one of those sets is corrupt and unusable, if it exists at all. To put a fine point on this, you cannot use Windows shortcuts to have multiple WoW accounts share data.

However, since Windows NT4, users have had the option to use something called the NTFS filesystem, which can make links similar to the links Linux makes. Windows doesn't always call them symlinks, they may be called softlinks (and you may see other references to hardlinks or junction points). And unfortunately, Windows hasn't provided any helpful documentation or built-in utilities to take advantage of these capabilities until quite recently with Windows Vista.

Tools for working with symlinks in Windows

To that end, we know of five ways that symlinks can be used in Windows versions (since NT4 or 2000):

  • NTFSLink documentation and download - This was the first tool many of us on the norganna.org dev team were aware of, and it is what many of us use. Note that some of us have had trouble getting it to work fully under Vista 64-bit, and that it hasn't been updated since 2007.
  • Link Shell Extension download - Another GUI tool that seems to work in XP and Vista, both 32-bit and 64-bit flavors
  • Junction Link Magic download - Another GUI tool for XP, Vista, and a beta for Windows 7 (not sure about 64 bit varieties)
  • awxLink download - Seems to be a much older utility, but the original NTFSLink author claims it handles 64 bit as well
  • If you are using Windows Vista, you can also use the included command line utilities, described more fully below. Going this route means you don't need to install any third party tools, but it also means you don't get a GUI interface.

MS Windows Vista and 7 command line interface

Windows Vista/7 has a builtin command-line utility to make the links, and the command would like like this:

mklink <link> <target>

This tool defaults to symlinks, so no switch is necessary, but we do need a switch to tell it to make a Directory Symlink, and we need to specify the link and the destination here, even if we are in the appropriate directory.

An example is:

mklink /D <Path to WoW Directory>\WTF\Account\Jenkins\SavedVariables <Path to WoW Directory>\WTF\Account\GroupSuicide\SavedVariables

The summarized process for Windows Vista/7 is as follows:

  1. Backup your data
  2. Change to the WTF\Account\<AccountName> folder of the account you'll be linking to the other account's data
  3. Delete the SavedVariables folder from this directory
  4. Link the files using:
    mklink /D <Path To WoW Folder>\WTF\Account\<account to be linked to the other account>\SavedVariables <Path To WoW Folder>\WTF\Account\<destination account>\SavedVariables
  5. Have fun with your new unified data!

Final Thoughts about Windows Tools

It is important to understand the differences between symlinks, hard links, junction points, etc. Important differences include the following:

  • If you delete a symlink, you just remove the extra "door", the room full of data is still there with another door.
  • If you delete a junction point or hard link, you've removed the room full of data, along with the other door there.

Therefore, you must never delete the junction points you create in XP via normal means. You'll need to use special utilities for that.

The third party utilities, described above, will intercept attempts to delete the junction points or hard links, and replace them with the safe alternative of just deleting the link itself, not the destination data.

But the user really should be encouraged to handle this themselves to minimize the chance of failure, by:

  1. First removing the link, using the GUI tool to "unlink"
  2. Only then deleting any remaining directory structures manually
  3. (It's not clear what will happen if a user employing the built-in Vista command line utility tries to delete a link without first unlinking it, so please don't try)
Personal tools