Log in

View Full Version : PowerShell script to create symbolically linked (mklink) copies of WoW



Chorizotarian
03-07-2008, 03:20 PM
There have been a couple of threads (http://www.dual-boxing.com/forums/index.php?form=Search&searchID=26161&highlight=mklink) about creating copies of WoW using NTFS smybolic links (Vista mklink command). This approach has advantages over creating separate physical copies:

Reduced disk activity since the OS only loads the physical files once
Easier patching since only one physical copy of WoW needs to be patched
Easier add-on maintenance since all clones share the parent add-on directory
Why waste disk space if you don't have to?
I found it kind of a pain and very error-prone (at least for me) to manually type the commands for 5x copies of WoW when I was setting up, so I wrote a PowerShell (http://en.wikipedia.org/wiki/Windows_PowerShell) script to do it automatically. It creates links for all of the WoW binaries and all of the read-only data directories. It does not link the WTF directory (video settings, saved variables, macros, etc.) to avoid collisions between settings on different accounts. I tried linking invidiaul files within this directory, but I found it to be more trouble than it was worth.

http://code.google.com/p/wow5box/source/browse/trunk/scripts/New-Wow.ps1

The file below should be saved locally as "New-Wow.ps1". Instructions are in the script header.

If you get an error about the source directory not existing try using the -sourcePath parameter to specify your WoW directory.

If you get an error "The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file..." make sure that c:\windows\system32 is in your path. (Environment variable PATH in Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables.)

One word of caution: Be careful if you *delete* a folder containing a symlinked sub-directory through Windows Explorer. On one occasion I somehow managed to delete the contents of the linked directories (all of my addons, etc.) by deleting a clone root directory. That's obviously a bug -- the links should be deleted, not the directories they point to -- and I haven't been able to reproduce it since. Still I have taken to deleting the linked directories individually (c:\wow1\Cache, c:\wow1\Data, etc.) rather than the root (c:\wow1) just to be safe.

[4/4/08 - Updated version w/ minor fixes]
[2/25/09 - Updated post w/ issues from thread below]
[2/11/10 - Link to latest version on google code site]

zanthor
03-07-2008, 03:38 PM
Nice work for those who aren't as adept at cmd line tools :).

I've got all my folders linked, not the WTF so I retain settings but once you dig into WTF I linked the account\[accountname]\SavedVariables and the [Servername} folders at that same location... this gives me the ability to have shared settings between all mods that support it.

Chorizotarian
03-07-2008, 04:17 PM
Thanks, hopefully someone will find it helpful :)

WTF sharing didn't work for me primarily because of addons like Bongos that store their settings per-account. Changes from one WoW copy were constantly stomping on changes from another, so I gave up on it. Also there doesn't seem to be any good way to force clones to update their macros from offline changes without having to quit out of WoW.

If anyone wants to use this script with WFT sharing they just need to change the following:


# Other linkable dirs -- ADD WTF HERE
@( 'Cache', 'Data', 'Interface', 'WTF' ) | foreach { New-WowLink $_ }

...

# Copy the WTF directory (settings) -- COMMENT THESE LINES OUT
#$wtf = (join-path $sourcePath WTF)
#copy-item $wtf WTF -recurse

Djarid
03-08-2008, 12:56 PM
For those of us on XP who want to run do the same, you can use junction.exe from here http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx

change line 83 from


cmd /c "mklink $d `"$link`" `"$target`"" > $null


to


cmd /c "junction $d `"$link`" `"$target`"" > $null


you must also remove line 124-126 as NTFS 5 does not seem to support reparsed files

Sarduci
03-09-2008, 10:54 AM
Thanks for the script. I was just about to start running performance counters and was still working out the details of how to link it.

Xar
03-09-2008, 02:44 PM
This is all fascinating to me because I would not think linking to the files would give you any change in performance while loading because the exact same files are being hammered unless by linking it's causing it to be cached in memory differently?

Also, the WTF are separated by accounts and I just browsed my WTF and I see no config files outside of each account folder so since you can only run 1 toon per account I would think that there should be no conflicts having all WTF in one place and bongos2, possessions should all work properly. Once I get a new system put together I'm going to link all account folders into one location but have the main Config.wtf separate since it contains resolution info and I'll have different sized windows running.

Chorizotarian
03-10-2008, 12:50 AM
This is all fascinating to me because I would not think linking to the files would give you any change in performance while loading because the exact same files are being hammered unless by linking it's causing it to be cached in memory differently?.

I assume that the OS resolves the links before deciding if it needs to reload the file or not. Empirically I can tell you that running 5x physical copies off 1 HD was much heavier disk usage than running them linked. Try it for yourself and see!


Also, the WTF are separated by accounts and I just browsed my WTF and I see no config files outside of each account folder so since you can only run 1 toon per account I would think that there should be no conflicts having all WTF in one place and bongos2, possessions should all work properly. Once I get a new system put together I'm going to link all account folders into one location but have the main Config.wtf separate since it contains resolution info and I'll have different sized windows running.

Yeah, you can definitely do this, and the only thing you will have shard is the video settings. I was trying to share all 4 account WTFs to a single settings directory: WTF\account1 -> [clones], WTF\account2 -> [clones], etc. That let me share macros between my clones, but it also meant that the macros and the "account-wide" settings were stomping each other.

Verminaard
03-12-2008, 10:08 PM
Hi Guys -
Thanks for the script Chorizotarian ('http://www.dual-boxing.com/forums/index.php?page=User&userID=2945') ! You just saved me about 40g of disc space and probably allowed me to play 5 copies off my single 7200 rpm disc :thumbsup: One thing to add: It probably depends on your user settings etc but i got and access denied error when i tried to run it. Running powershell as an admin got it working (right click the powershell icon and select "run as administrator" for anyone who doesnt know).

Powershell is also kind of helpful in that it doesnt really tell you when its done anything :huh: If you're wondering (as i was) if it doesnt throw you a big red error, its done it ok :D

Cheers again dude :thumbup:

Chorizotarian
03-13-2008, 02:36 AM
I'm a moron. I can't believe I didn't say to run as admin. Sorry! You need admin priviliges to create the symbolic link at least, possibly for other stuff as well.

zanthor
03-23-2008, 12:41 AM
Finally got around to needing this, amazing work. Very clean and even though I'm adept at the manual creation a great time saver!

Sun
04-03-2008, 10:04 AM
ok...i am reading this as well...can somebody point me to the proper areas on my laptop that I need to address. This will save me tons of hair pulling. I have the powershell downloaded but I am having problems getting the script to work. ex...controlpanel/something/something/something....that kind of help would be appreciated. thx

Chorizotarian
04-03-2008, 11:52 AM
Sun once you have downloaded and installed PowerShell you should be able to run it as follows:
1) Start Menu | All Programs | Windows PowerShell
2) Right-click on the PowerShell icon and select "Run as Administrator"

That will bring up a PowerShell console, which will look a lot like a cmd.exe console. In that window, type the following:


Set-ExecutionPolicy RemoteSigned

That tells PowerShell that you only want to require digitial signatures for scripts not stored on your local machine.

Now go up to the post at the top of the thread and copy all of the script code. Start notepad and save it to a file called "New-Wow.ps1" located somewhere in your path.

If you don't have a directory where you put cmdline executables and scripts save it to a new dir called "c:\bin" and add that to your path using "Control Panel\System and Maintenance\System" | Advanced System Settings | Environment Variables | PATH. Then restart PowerShell as before (running as administrator).

Now type this:


New-Wow c:\wow1

You should get a new symbolically linked copy of WoW at the indicated location. Obviously change it to whatever location you prefer.

Finally, be sure to read my note about possible glitches when deleteing or renaming directories containing child symbolic links through Windows explorer. If you want to delete c:\wow1, be sure to first go in and delete the symbolically linked child folders (c:\wow1\cache, etc.) directly. If you do it that way you shouldn't have any problems.

Let me know if any of this still isn't clear.

Sun
04-03-2008, 01:06 PM
lol....this is crazy. it seems New-Wow.ps1 is a "text" file...I dont know how to make a .ps1...which Im pretty sure you want this to be.////C:\New-Wow.ps1.txt( is the actuall path) I realize I cant have .txt in there.

Chorizotarian
04-03-2008, 01:26 PM
With Notepad you have to change the Save As Type to "All Files". Otherwise it will save the file as New-Wow.ps1.txt. Not the friendliest behavior...

You can also change the type in Windows Explorer if you enable the show file extensions for known types option. (Control Panel | Folder Options | View -> Uncheck "Hide file extensions for known types")

Dinkydau
04-03-2008, 01:36 PM
Double click My Computer, go to Tools / Folder Options

Click on the View Tab

Check Show Hidden Files and Folders

Uncheck Hide Extensions for known file types

Uncheck Hide Protected operating system files

When you save the file, put in the name with the extenstion.

Just under the name, under file type, choose All Files.

That should do the trick for you and enable you to find the file later should you need.

Sun
04-03-2008, 01:58 PM
got the .txt changed to .ps1....thx...forgot how to do that part.

still cant get the script to run. pretty sure its something to do with the way you have typed in the commands versus my names of my wow folders. But im thru for the day on this. I will try again at a later time to figure this out. I just wish I had more knowledge on programming features. My knowledge is limited back to my college days with Fortran and Basic. Everything else is new to me.

Chorizotarian
04-03-2008, 02:44 PM
If the script won't run it's probably not in your path. You can either create a bin directory in your path like I described above or type the full path on the PowerShell command line. For example to run a hello world script hello.ps1 in the non-path directory d:\xfers:


D:\> D:\xfers\hello.ps1
hello world

Note that to call a script in the current working directory you need to supply a leading ".\". In other words, PowerShell doesn't automatically add the current working directory to your path.


D:\> cd d:\xfers

xfers> .\hello.ps1
hello world

Dinkydau
04-03-2008, 04:45 PM
What's a good simple text editor that shows line numbers? I used to use one at a previous job, but can't remember the name of the dang thing. Something freeware if possible.

Johnny

Sun
04-04-2008, 05:42 PM
you say....If the script is not in your path:.....then.....

please give me an example of what the script in path should look like. would it be like this....C:\users\myfolders\games\New-Wow.pst\WOW1....????

Chorizotarian
04-04-2008, 06:27 PM
I have a directory c:\bin where I put scripts and executables that I want to automatically run from the command line. To add that directory to your path use "Control Panel\System and Maintenance\System" | Advanced System Settings | Environment Variables | PATH. Then restart PowerShell as before (running as administrator).

Locktacular
04-05-2008, 09:49 PM
Ok, I seem to be having issues with this and I cannot figure out the problem. I have the script running in powershell, but every time I run it I get an error at line 61, It says the source directory does not exist. I am using XP 64bit, and wow is under program files (x86) will that have an effect on this script running properly?

Also would I be correct in assuming that you changed the script to include the ability to run with XP, because when I went to change the line for junction it existed as an "else" line right afterwards?

Chorizotarian
04-07-2008, 05:07 PM
Yes, I did add an attempt at XP support, although I haven't tested it. Let me know if it works.


I am using XP 64bit, and wow is under program files (x86) will that have an effect on this script running properly?

Yeah, in that case you just need to specify the source path explicitly:


new-wow c:\wow1 -sourcePath "${env:ProgramFiles(x86)}\World of Warcraft"

Djarid
04-08-2008, 04:38 AM
for a simple setup you could use the junction / mlink command manually - it sounds like it might save you some effort ;)

Djarid
04-08-2008, 08:44 AM
I got a PM in my email but strangely not on this forum...weird... anyway the question was about NTFS junctions.

The NTFS node table is a logical structure that holds pointers to areas of the disk containing files and folders (ok the node table will actually contain the file if it is less than the cluster size). It is capable of having multiple pointers to the same logical disk structure. Mlink on Vista and Junction.exe on 2K/2K3 & XP allow you to create reparse points, additional pointers to the same directory or file (mlink only for file). Basically think of it as a shortcut but a low level one that applications treat as a real directory.

There is some better information on how to use them in the wiki Wiki - junction (http://www.dual-boxing.com/wiki/index.php/Junction), Forum - NTFS Junction (http://www.dual-boxing.com/forums/index.php?page=Thread&postID=17763&highlight=junction#post17763) and Forum - mlink (http://www.dual-boxing.com/forums/index.php?page=Thread&threadID=4854)

hope this helps

DrGamut
04-09-2008, 08:23 PM
Thanks, good script.

Simulacra
04-09-2008, 08:38 PM
Nice approach, certainly would save a heapof time when patching. Has anyone done any performance tests of sharing the same wow data vs separate directories? I'm thinking of situations like getting off of a boat. I currently have 5 dirs on the same disk and notice that there's a fair amount of disk thrashing at these times.

Chorizotarian
04-09-2008, 09:57 PM
No issues with boats / zoning for me. It seems to be just as fast as single boxing.

TheHamburglar
04-10-2008, 12:09 PM
Ok let me see if i've done this right. I created D:\bin\new-wow.ps1 I have Wow in D:\bin\World Of Warcraft, I add D:\bin to Environment Variables | Path.

Is that right or am i missing something.

Chorizotarian
04-10-2008, 01:43 PM
You installed WoW to "d:\bin\World of Warcraft" or you want to create a new copy there? Either way, that's not what I would reccomend. The script should find your normal WoW install location from the envirnmoent variables. (It could be smarter about this.) If it fails for some reason you can specify it manually via the -sourcePath param:


new-wow d:\wow1 -sourcePath "c:\program files\world of warcraft"

Also, there's no reason to put new copies of WoW under d:\bin. If you want to I guess you can, but it's not a requirement.

Hyper1
04-22-2008, 06:56 PM
This thread should be sticked.

Gambler1971
04-29-2008, 10:14 PM
NOTE: using Vista 32.

You guys do know that this can be done thru a .bat file and run thru START->PROGRAMS->ACCESSORIES->Command Prompt (Run as Administrator).

Here is an example of the batch file I use:


mklink /d Data "c:\program files\world of warcraft\Data"
mklink /d Cache "c:\program files\world of warcraft\Cache"

md Errors

mklink /d Interface "c:\program files\world of warcraft\Interface"

md Logs
md WTF

mklink "BackgroundDownloader.exe" "c:\program files\world of warcraft\BackgroundDownloader.exe"
mklink "Burning Crusade Install Log.html" "c:\program files\world of warcraft\Burning Crusade Install Log.html"
mklink "dbghelp.dll" "c:\program files\world of warcraft\dbghelp.dll"
mklink "DivxDecoder.dll" "c:\program files\world of warcraft\DivxDecoder.dll"
mklink "ijl15.dll" "c:\program files\world of warcraft\ijl15.dll"

copy "c:\program files\world of warcraft\Launcher.exe" Launcher.exe

mklink "Patch.html" "c:\program files\world of warcraft\Patch.html"
mklink "Patch.txt" "c:\program files\world of warcraft\Patch.txt"
mklink "realmlist.wtf" "c:\program files\world of warcraft\realmlist.wtf"
mklink "Repair.exe" "c:\program files\world of warcraft\Repair.exe"
mklink "Scan.dll" "c:\program files\world of warcraft\Scan.dll"
mklink "unicows.dll" "c:\program files\world of warcraft\unicows.dll"
mklink "World of Warcraft Install Log.html" "c:\program files\world of warcraft\World of Warcraft Install Log.html"
mklink "Wow.exe" "c:\program files\world of warcraft\Wow.exe"
mklink "WowError.exe" "c:\program files\world of warcraft\WowError.exe"

Im very new to this, but it seems to work for me. Reduced my HDD load very nicely.

1 ) All I did was put the code into a file called COPY.BAT

2 ) Started Command Prompt in Admin mode.

3 ) Made the new directory with explorer where I wanted it: C:\WoW1

4 ) Copied the .bat file there with explorer into c:\wow1: copy COPY.BAT


5 ) Changed directory in Command Prompt: cd\WoW1

6 ) Ran the .bat program: copy.bat

7 ) Ran a dir lookup to make sure it worked: dir

8 ) Start back at step 3 and make C:\WoW2 and continue until all done.

As I said, Im new, so you probably dont need some files linked like the backgrounddownloader and such, but it was just as easy to leave them in.

There are faster ways to do it so that you can make all 5 directories from one batch file, but I like to controll the process so I did it this way.

Djarid
04-30-2008, 11:00 AM
top tip...

.bat uses command.com to run execute the code
.cmd uses cmd.exe with a lot of extra features... not really necessary for you but you lose nothing for using it an it means you can use all the dos extensions

HeyArseHole
05-01-2008, 08:58 PM
Poor guy.

He adds the best tip I have ever seen on these forums and gets banned. I think I will keep all my own thoughts on making WoW better to myself then.

Chorizotarian
05-01-2008, 09:28 PM
4 ) Copied the .bat file there with explorer into c:\wow1: copy COPY.BAT


You might want to name it copywow.bat or something to avoid the obvious conflict with the cmd.exe copy command.


Poor guy.

He adds the best tip I have ever seen on these forums and gets banned. I think I will keep all my own thoughts on making WoW better to myself then.

Sorry that Gambler was banned, but a quick search of his posts shows that he was suggesting a private server, which is strictly (and appropriately) against the community rules. I don't know what warning he received. Perhaps if you think he was treated unfairly you could create another thread to discuss so we don't hijack this one.

JD50
05-02-2008, 07:10 PM
So I ran the script and created 4 copies of WoW, and it works properly when I use the Launcher.exe from c:\Wow2. However, when I try and use wow.exe from c:\Wow2, I get this error....


C:Wow2\wow.exe
The specified path does not exist
Check the path and try again


Any ideas?

Edit - It does this from all of my newly created folders, I was just using Wow2 as an example. Thanks for the script BTW, I was doing this manually when I two boxed but now I'm switching to 5 boxing and this will save me a heap of time.

Chorizotarian
05-03-2008, 02:40 AM
I'm not sure why that happens. Windows Explorer glitch? You can work around it by running wow.exe from the PowerShell or cmd.exe command line (or in a script):

(PowerShell)

cd c:\wow1
.\wow.exe

You can also copy wow.exe rather than linking it.

JD50
05-03-2008, 06:03 AM
I'm not sure why that happens. Windows Explorer glitch? You can work around it by running wow.exe from the PowerShell or cmd.exe command line (or in a script):

(PowerShell)

cd c:\wow1
.\wow.exe

You can also copy wow.exe rather than linking it.

I just copied the wow.exe from my main folder into all 4 of my other wow folders, and renamed the sym link that was created by the script. What is the downside of going about it that way?

I did it this way because I'm using the keyclone maximizer and I needed to set it up with wow.exe from each serparate folder.

Duomages
05-03-2008, 11:53 AM
Thank you Chorizotarian for your work on this script! I am running Windows Vista 32 Ultimate Edition currently and I was able to get the script running by doing the following:


Made a directory called c:\bin
Added c:\bin to Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables->PATH.
Renamed New-WoW.text to New-WoW.ps1 and saved it in the c:\bin directory
Downloaded Windows PowerShell V2 and installed it. I received a corrupt data error when I tried to run version 1 for Vista.
Launched PowerShell V2 in command line mode and ran Set-ExecutionPolicy Unrestricted. I received an error with the RemoteSigned option, I belive it is a problem with this version of the software.
Ran New-Wow c:\wow1
The script created the directory flawlessly! I think my next challenge will be to work with Octopus with a 2 account setup.

Chorizotarian
05-03-2008, 11:56 AM
I think that the main downside of copying wow.exe is that you will have to update them individually on every patch. The exe is only 8 MB, so the increase in disk access should be insignificant.

JD50
05-03-2008, 03:41 PM
I think that the main downside of copying wow.exe is that you will have to update them individually on every patch. The exe is only 8 MB, so the increase in disk access should be insignificant.

Cool, that works. Thanks again for the script! :thumbup:

Chorizotarian
05-04-2008, 02:23 PM
Launched PowerShell V2 in command line mode and ran Set-ExecutionPolicy Unrestricted. I received an error with the RemoteSigned option, I belive it is a problem with this version of the software.

That's odd. I use PS v2 at work, and I've never had a problem with setting RemoteSigned. Typo? Could be a bug of course.

Duomages
05-05-2008, 10:51 PM
I am not sure what the problem is, but I believe I got a signature error until I just set it to Unrestricted- then it worked fine :)

Ðeceased
05-30-2008, 12:47 PM
Hmm this sounds like a nifty idea : )
Can I ask a couple of things tho (being as I’m a noob at this!)

I can see the advantages using this over 4/5 separate copies, disk space, patching etc.. but could I ask what sort of advantages I could expect over just having them run from the same directory (as I do atm)?

Will it reduce disk activity too? And having this sort of system in place, will it reduce the load on your CPU?
Or is the aim exactly the opposite.. to increase the CPUs activity in loading up each WoW client by enabling the CPU to process the same physical file more then once? or allowing it to apply it to more then one Client?
(don't laugh :P I rly don't know anything about this sorta thing :P )

I.e. Faster loading, less strain on the disk, allowing the CPU to process more
Am I even close? :P

Chorizotarian
05-30-2008, 03:13 PM
You're very close! :) The OS will try to load the files individually, but the file system knows that the symlinks all point to the same location so it will use a cached copy generally. You should get the same reduced disk activity that you do running from 1 physical directory, but you can keep your settings, macros, addons, etc. separate.

I don't think that the disk configuration will have much effect on CPU activity no matter how you do it. That's my theory anyway. You can check using perfmon.

infra
07-13-2008, 05:48 AM
You're very close! :) The OS will try to load the files individually, but the file system knows that the symlinks all point to the same location so it will use a cached copy generally. You should get the same reduced disk activity that you do running from 1 physical directory, but you can keep your settings, macros, addons, etc. separate.

I don't think that the disk configuration will have much effect on CPU activity no matter how you do it. That's my theory anyway. You can check using perfmon.Great script I just got this all done. I too had the wow.exe problem and ended up just copying the wow.exe to each WoW[X] directory. No big deal.

A few questions still troubling me:
1. I'm also confused at the advantage of doing this vs. running everything from 1 physical directory. In my case I've linked the interface and wtf directories (I recognize the video and config file inplications of doing this). But then what advantage is left vs. running c:\Program Files\World of Warcraft\Wow.exe five times? Almost every FAQ about mutli-boxing says you MUST make sure you don't just load "c:\Program Files\World of Warcraft\Wow.exe" but I've yet to understand why not (besides seperating settings, macros, addons).

2. I followed the instructions to link the WTF directory as well and that worked great BUT how do I modify the script to instead link the .\WTF\Account instead in this way my save variable files would be linked (what I want) but my c:\Program Files\World of Warcraft\wtf\Config.wtf would be independently maintained - allowing my slave WoW video settings to differ from that of my main WoW toon?


Cheers.

PS this community rocks.

konraddo
08-03-2008, 12:29 AM
To me, the scripts are so difficult to interpret as if they were encrypted. I searched on the net and found this little software:

Link Shell Extension
http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

It has a built-in menu in your Windows Explorer so it's pretty easy to understand and make use of. What you do is install if (of course!) then pick the source file (i.e. the file you want to "copy") and select the hardlink location (i.e. where you want to "paste" the file) and voila it's done!

Frankly though, I see 0% performance improvement in terms of memory and CPU usage, but a drastic reduction in harddisk light "blinking" is observed. It really feels like the file is only read once.

ZorbaTheGeek
08-12-2008, 05:49 AM
I just wanted to add my thanks for this fantastic script. I've been having issues with long loading times and occasional crashes running 1 main and 3 slaves from a second install. New loading times are superb and we'll see about the BSoDs, but I believe they are related to two clients attempting to write to the same file at the same time.

Great work.

DyzzyD
09-10-2008, 04:31 AM
What am I missing?

I've downloaded and renamed the file New-wow.ps1, downloaded PowerShell (v1). I fire up PowerShell and I am lost from there. I have attempted to paste the file name to the default directory (C:\Users\Administrator) and got an error. I went to the directory where New-Wow.ps1 is saved, did a paste of the name and a " \run New-Wow.ps1" as well as " run new-wow.ps1" and got an error.



Thank you Chorizotarian for your work on this script! I am running Windows Vista 32 Ultimate Edition currently and I was able to get the script running by doing the following:




Made a directory called c:\bin
Added c:\bin to Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables->PATH.
Renamed New-WoW.text to New-WoW.ps1 and saved it in the c:\bin directory
Downloaded Windows PowerShell V2 and installed it. I received a corrupt data error when I tried to run version 1 for Vista.
Launched PowerShell V2 in command line mode and ran Set-ExecutionPolicy Unrestricted. I received an error with the RemoteSigned option, I belive it is a problem with this version of the software.
Ran New-Wow c:\wow1
The script created the directory flawlessly! I think my next challenge will be to work with Octopus with a 2 account setup.I followed Steps 1-3 and attempted to do the same paste of name as well as the two types of " /run " "run" command attempt I had done earlier (in the c:\bin folder). I got an error all three times. Note: When I did Step 2, "Path" was already there as the Variable name and had a Variable Value which I then replaced the value field with " c:\bin " . I saved the old value to a notepad incase I'd need to revert to the old variable value.


I run Vista 64bit with WoW saved to ( c:\program files (x86)\world of warcraft). I run four wow instances on this machine and use my 5th account on my second machine. In the future I forsee running all five accounts on this machine with combinations of 5x shaman and will look to running tank/healer, 3x dps for 5mans.

My Questions would be:

-What am I doing wrong?

-To run the script, do I need to move my WOW folder to ( c:\wow1) and make additional wow2-5 in my c:\? I made wow1-5 under my C:\Program Files (x86) folder.

-Is there any way to link two accounts to one folder and three to the other? Tank/healer accounts on one folder, three dps accounts on a second folder. After typing this question out, I'd figure it would just be two links total and keeping the two or three accounts within the corresponding folders.

DyzzyD
09-12-2008, 03:21 PM
I found a website to do symlinks (how-to geek) and ran

C:\mklink /D C:\wow2\Data C:\Program Files (x86)\World of Warcraft\Data

I also linked the Cache, Interface, Screenshots folders and copied all the files in the main WOW directory except the patch/downloader files (patch# to patch#-enUS-downloader(patch).exe) type files. After doing this I made a shortcut of the Wow.exe file and double clicked on the shortcut... I got:

" Failed to open archive interface.MPQ: The system cannot find the file specified" and got stuck. Someone in [Other] Winbolic Guide - Symlinking for XP ('http://www.dual-boxing.com/forums/index.php?page=Thread&threadID=6697') had the same error but there were no further replies on that thread :wacko:

I went back to Powershell and New-wow.ps1 figuring spacing might help in the ps1 file, renamed my "wow2-4" folders and went into the new-wow.ps1 file and changed:


"$env:ProgramFiles\World of Warcraft"to:

"c:\Program Files (x86)\World of Warcraft"

I got to c:\bin and did the " Set-ExecutionPolicy RemoteSigned" I ran "c:\Bin> new-wow c:\wow2" in powershell. I end up getting an error:


At c:\bin\New-Wow.ps1:86 char12
cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null
The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

I end up getting a new wow2 folder containing a WTF folder and Launcher.exe

Any suggestions or insight?

DyzzyD
09-13-2008, 08:01 PM
/Sigh

I've been staring at this thread and attempting to run the script for five days now, Would anyone be able to offer some insight?

Rax
09-16-2008, 05:55 AM
I'm having the exact same problem as DyzzyD.

When I run the script I keep getting spammed with the same error

At c:\bin\New-Wow.ps1:86 char12

cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null
The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

If anyone have a solution it would be grately appreciated

TheHamburglar
09-21-2008, 04:09 PM
Ok so I think I got it working. I created wow1 and run 4 off of that and my main of the normal wow install. Do I need to run all 5 off of the one or a seperate for each?
Is there anyway to tell in the task manager if its working?

DyzzyD
09-25-2008, 09:21 PM
Ok so I think I got it working. I created wow1 and run 4 off of that and my main of the normal wow install. Do I need to run all 5 off of the one or a seperate for each?
Is there anyway to tell in the task manager if its working?

Seems you have five accounts and are setting yourself up to use your wow1-5 folders and leaving your main wow folder alone. Am I right? You would run one from each individual folder, ie wow1-account1, wow2-account2 and so forth. When I mlinked my folders individually (without script), I went into each new folder, made a shortcut of wow.exe, named it according to the folder it would be originating from, and put the shortcut onto my desktop. Unfortuanately, when I went to start the accounts, I would get the "Failed to open archive interface.MPQ: The system cannot find the file specified" error.

When I have my four accounts up, the task manager shows four individual processess of "Wow.exe *32"

Chorizotarian
09-27-2008, 01:08 PM
I'm having the exact same problem as DyzzyD.

When I run the script I keep getting spammed with the same error

At c:\bin\New-Wow.ps1:86 char12

cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null
The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

If anyone have a solution it would be grately appreciated

Cmd.exe is in c:\windows\system32, which should be in your path. Have you by chance removed it?

TheHamburglar
09-27-2008, 11:26 PM
Ok so I think I got it working. I created wow1 and run 4 off of that and my main of the normal wow install. Do I need to run all 5 off of the one or a seperate for each?
Is there anyway to tell in the task manager if its working?

Seems you have five accounts and are setting yourself up to use your wow1-5 folders and leaving your main wow folder alone. Am I right? You would run one from each individual folder, ie wow1-account1, wow2-account2 and so forth. When I mlinked my folders individually (without script), I went into each new folder, made a shortcut of wow.exe, named it according to the folder it would be originating from, and put the shortcut onto my desktop. Unfortuanately, when I went to start the accounts, I would get the "Failed to open archive interface.MPQ: The system cannot find the file specified" error.

When I have my four accounts up, the task manager shows four individual processess of "Wow.exe *32"At the moment I only have 1 copy (Wow1) and then the Original World of Warcraft folder. I run my Pally off of the normal install then 4 clones off the copy (wow1). I was pretty much wondering If i needed to create a copy for each Character.

I have it setup Like this:

World Of Warcraft = Bugged

wow1 = Shamin, Shamiin, Sheamen, Shaemen

Should Leave it or change it to this:

World of Warcraft = None
wow1 = Bugged
wow2 = Shamin
wow3 = Shamiin
wow4 = Sheamen
wow5 = Shaemen

ChaoticMonk
09-28-2008, 01:56 PM
I currently run 5clients from one dir and get insane lag when I go to any major city aswell as when in Zangramarsh. Will doing this improve the performance at all? will I notice less lag in shatt for example?

HPAVC
09-29-2008, 03:50 PM
I currently run 5clients from one dir and get insane lag when I go to any major city aswell as when in Zangramarsh. Will doing this improve the performance at all? will I notice less lag in shatt for example?Yes it will, and significantly.

When you zone you swap one potion of the datafile for another. If one of your multiple characters reads its portion of the datafile and another and so on.

The computer optimizes this behavior normally by caching the data being read (like putting into short term memory the last few things you did) on the computer this shorter term memory is in RAM with nanosecond access time versus the long term memory which is in millisecond access time. So whenever possible you want to utilize cache since its many many times faster.

When you dont symlink you cause the computer the avoid using cache because each character will read in separate copies of the files. When we symlink them we allow for all the characters to load the same actual data and thus its cached.

This is obvious when one character zones and then shortly another character zones without any lag hit that the first character might have experience.

How much cache do you have and just how much is sped up varies on your machine specs like hard drives with more cache memory are going to aid in this, ide controllers with memory, possibly raid0 configuration (two drives that split the data load between them), dedicating a drive to your WoW toons, these all should help and likely some more.

ChaoticMonk
09-29-2008, 04:35 PM
Thank you for the extreamly informative reply...I'll be linkin when I get home tonight :)

Edit: So let me see if I got this right"


Make 1 installation of WoW
Create 4 duplicates of the original installation omitting the \Interface and \Data folders
Symlink each of the duplicated wow folder's Data & Interface folders to point to the original installation's Interface & Data folders.
Thats it?

DyzzyD
10-01-2008, 05:49 PM
Ok so I think I got it working. I created wow1 and run 4 off of that and my main of the normal wow install. Do I need to run all 5 off of the one or a seperate for each?
Is there anyway to tell in the task manager if its working?

Seems you have five accounts and are setting yourself up to use your wow1-5 folders and leaving your main wow folder alone. Am I right? You would run one from each individual folder, ie wow1-account1, wow2-account2 and so forth. When I mlinked my folders individually (without script), I went into each new folder, made a shortcut of wow.exe, named it according to the folder it would be originating from, and put the shortcut onto my desktop. Unfortuanately, when I went to start the accounts, I would get the "Failed to open archive interface.MPQ: The system cannot find the file specified" error.

When I have my four accounts up, the task manager shows four individual processess of "Wow.exe *32"At the moment I only have 1 copy (Wow1) and then the Original World of Warcraft folder. I run my Pally off of the normal install then 4 clones off the copy (wow1). I was pretty much wondering If i needed to create a copy for each Character.

I have it setup Like this:

World Of Warcraft = Bugged

wow1 = Shamin, Shamiin, Sheamen, Shaemen

Should Leave it or change it to this:

World of Warcraft = None
wow1 = Bugged
wow2 = Shamin
wow3 = Shamiin
wow4 = Sheamen
wow5 = ShaemenIf you haven't gotten an answer, change to your 2nd option.
World of Warcraft = None
wow1 = Bugged
wow2 = Shamin
wow3 = Shamiin
wow4 = Sheamen
wow5 = Shaemen

This seems to be the setup that helps with performance.

DyzzyD
10-01-2008, 10:05 PM
I'm having the exact same problem as DyzzyD.

When I run the script I keep getting spammed with the same error

At c:\bin\New-Wow.ps1:86 char12

cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null
The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

If anyone have a solution it would be grately appreciated

Cmd.exe is in c:\windows\system32, which should be in your path. Have you by chance removed it?I went into Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables... "ComSpec" is the one that has the value of c:\windows\system32\cmd.exe while my Path has a value of c:\bin

bdybldkris
10-27-2008, 04:41 PM
I'm having the exact same problem as DyzzyD.

When I run the script I keep getting spammed with the same error

At c:\bin\New-Wow.ps1:86 char12


cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null

The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

If anyone have a solution it would be grately appreciated

Cmd.exe is in c:\windows\system32, which should be in your path. Have you by chance removed it?I went into Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables... "ComSpec" is the one that has the value of c:\windows\system32\cmd.exe while my Path has a value of c:\bin


I'm having the same problem as this user. Anyone find a fix or know what I've done wrong?



Thanks.

DyzzyD
10-29-2008, 01:26 AM
I'm having the exact same problem as DyzzyD.

When I run the script I keep getting spammed with the same error

At c:\bin\New-Wow.ps1:86 char12


cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null

The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

If anyone have a solution it would be grately appreciated

Cmd.exe is in c:\windows\system32, which should be in your path. Have you by chance removed it?I went into Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables... "ComSpec" is the one that has the value of c:\windows\system32\cmd.exe while my Path has a value of c:\bin


I'm having the same problem as this user. Anyone find a fix or know what I've done wrong?



Thanks.Heh, I've almost given up symlink'ing files... Too bad I'm persistent with stuff.

With 3.02 and expac coming, I don't believe we'll be able to get this resolved before then. Do be patient until then. I'm sure the community will give some insight on our issue. Again, don't distress.

bdybldkris
10-29-2008, 12:59 PM
DyzzyD,

I gave up on the Powershell deal....I did a forum search for Symlink. The very first result will be Symlink Help. Look at that post and you'll find a link to a different program that helps with the associations. Here's what I did:


Downloaded and installed the program.
Created copies of my main Warcraft folder (I ended up with World of Warcraft, WoW2, WoW3, WoW4, WoW5 all on my E:\ drive)
Navigate to your copies and DELETE your Data and Interface folders
Navigate to your main World of Warcraft folder and Control Left Click your Data and Interface folders
Right click on one of your highlighted folders (should be Data or Interface)
Choose Pick Link Source
Navigate to one of your copies (ie. WoW2) and right click on the folder
Choose Drop As...Symbolic Link
Repeat 4-8 until you've created the symbolic links for all your copies
Now you should have a main World of Warcraft folder with 4 copies that use the Data and Interface folders from the main. I linked the interface folder to use the same mods on all accounts. You can just link the Data folder if you prefer different mods on each.

This save me a ton of space on my hard drive and appears to have improved my performance too. Good luck! If you need any help or have questions just yell.



Kris

Crucial
10-29-2008, 02:21 PM
Not sure why everyone wants to overcomplicate this....

1. Copy Wow directory for each clone (ie. Wow1, Wow2, Wow3, etc)
2. Delete Data, Interface, Screenshots, Cache in the clones folders
3. Paste into text file called makelinks.cmd (change drive letter of course)

mklink /D Data D:\Wow1\Data
mklink /D Interface D:\Wow1\Interface
mklink /D Screenshots D:\Wow1\Screenshots
mklink /D Cache D:\Wow1\Cache
pause

4. Run that in each clones Wow directory, they are now all pointing to Wow1 as the source for those directories.
5. Done

bdybldkris
10-29-2008, 03:35 PM
Not sure why everyone wants to overcomplicate this....

1. Copy Wow directory for each clone (ie. Wow1, Wow2, Wow3, etc)
2. Delete Data, Interface, Screenshots, Cache in the clones folders
3. Paste into text file called makelinks.cmd (change drive letter of course)

mklink /D Data D:\Wow1\Data
mklink /D Interface D:\Wow1\Interface
mklink /D Screenshots D:\Wow1\Screenshots
mklink /D Cache D:\Wow1\Cache
pause

4. Run that in each clones Wow directory, they are now all pointing to Wow1 as the source for those directories.
5. Done

Thanks for the explanation. I don't believe anyone's trying to "overcomplicate" anything. If you were familiar with symbolic links prior to 24-48 hours ago, I'm sure this would be no problem. Learning about them and trying to implement it was a little more difficult, as there were very few detailed instructions.

Again, thanks for the detailed info and I now have my cache linked as well. I still prefer the method I outlined above, as it takes no time at all to get everything linked and no bothering with text files and command strings. Now members have both methods and can choose what works best for them.

phineas01
11-01-2008, 12:08 AM
So what it this symlink? Do I need to do that in addition to running the powershell script?

Edit: Ok so this is just an alternate to running the script the OP posted then correct? I think I'll try this as the script doesn't allow me to use maximizer since I have to run the games with the launcher instead of the wow.exe.

Korpus
11-01-2008, 06:08 AM
Just wanted to say thanks for this guide. Up and running now and its very smooth. I would suggest adding the information about the Environmental variables into the OP as that is what had me stumped at first.

uberhoser
11-08-2008, 07:01 PM
I am not sure what the problem is, but I believe I got a signature error until I just set it to Unrestricted- then it worked fine :)



You sir, win an internet !



Even though I had set "Set-ExecutionPolicy RemoteSigned" It kept telling me that it would not run, cause it was not signed. I then ran Set-ExecutionPolicy Unrestricted and it worked !


Now my only question is this. I have 2 copies of wow. When I log in I always see the first account's username. Is there anyway around this? (So when I log into the second account, I don't have to change the username to that account).

Iceorbz
11-11-2008, 01:23 PM
DyzzyD,

I gave up on the Powershell deal....I did a forum search for Symlink. The very first result will be Symlink Help. Look at that post and you'll find a link to a different program that helps with the associations. Here's what I did:


Downloaded and installed the program.
Created copies of my main Warcraft folder (I ended up with World of Warcraft, WoW2, WoW3, WoW4, WoW5 all on my E:\ drive)
Navigate to your copies and DELETE your Data and Interface folders
Navigate to your main World of Warcraft folder and Control Left Click your Data and Interface folders
Right click on one of your highlighted folders (should be Data or Interface)
Choose Pick Link Source
Navigate to one of your copies (ie. WoW2) and right click on the folder
Choose Drop As...Symbolic Link
Repeat 4-8 until you've created the symbolic links for all your copies
Now you should have a main World of Warcraft folder with 4 copies that use the Data and Interface folders from the main. I linked the interface folder to use the same mods on all accounts. You can just link the Data folder if you prefer different mods on each.

This save me a ton of space on my hard drive and appears to have improved my performance too. Good luck! If you need any help or have questions just yell.



KrisSOOOOOOOOOOOOOOOOOOOOOOOOO much easier !!!! =) =)... man I spent about 1 hr looking at the other stuff, kept reading and man im glad I did find your post. That worked, saved some space and gave me some good directories for wow.

Hopefully running it off a SSD will outperform my raptor drive to.

lans83
11-30-2008, 06:39 AM
DyzzyD,

I gave up on the Powershell deal....I did a forum search for Symlink. The very first result will be Symlink Help. Look at that post and you'll find a link to a different program that helps with the associations. Here's what I did:


Downloaded and installed the program.
Created copies of my main Warcraft folder (I ended up with World of Warcraft, WoW2, WoW3, WoW4, WoW5 all on my E:\ drive)
Navigate to your copies and DELETE your Data and Interface folders
Navigate to your main World of Warcraft folder and Control Left Click your Data and Interface folders
Right click on one of your highlighted folders (should be Data or Interface)
Choose Pick Link Source
Navigate to one of your copies (ie. WoW2) and right click on the folder
Choose Drop As...Symbolic Link
Repeat 4-8 until you've created the symbolic links for all your copies
Now you should have a main World of Warcraft folder with 4 copies that use the Data and Interface folders from the main. I linked the interface folder to use the same mods on all accounts. You can just link the Data folder if you prefer different mods on each.

This save me a ton of space on my hard drive and appears to have improved my performance too. Good luck! If you need any help or have questions just yell.



Kris

ok, this right here should be stickied....tyvm for this...quick question tho, i run mine on a duel core, and want to use keyclone, how should i set the affenity or what ever it is for each wow.exe to each core for 4 copies? main on core 1, slaves 2-4 on core 2?

mercdev
12-04-2008, 03:28 AM
I must be missing something in reading people's troubles here. I guess people kinda gloss over the setup instructions, or it's foreign enough to not make sense. From the file itself:


# Setup:
# 1) Download and install Windows PowerShell:
# http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
# 2) Run PowerShell as administrator
# 3) Set your script execultion policy to run local scripts without a digital signature:
# Get-Help About_Signing
# Set-ExecutionPolicy RemoteSigned
# 4) Copy New-Wow.ps1 to somewhere in your path OR replace "new-wow" in the examples below
# with the script path.
So after PowerShell launches, type "Set-ExecutionPolicy RemoteSigned" and hit enter. Then type "Get-Help About_Signing" to read what's going on and why. To see if you've set yours correctly, type "Get-ExecutionPolicy", it should return "RemoteSigned".

Kudos to the author, it works great on my system and REALLY reduced the amount of disk activity. :thumbsup:

pengwynman
12-04-2008, 02:43 PM
why isn't this thread stickied? :P

Ellusionist
12-06-2008, 01:46 AM
I'll admit from the beginning that I didn't read anything but the first few posts, but:

What's the point of Symlink'ing folders? If your hard drive is reading from the exact same location for data being accessed for all five (or whatever) clients, then how does it help performance?

The only reason I can see this being helpful is if you're wanting to keep separate settings/addons for each of your slaves. This may be the entire reason for it altogether... like I said, I didn't read. I'm just bored and skimming DB.com posts. :D

And yes, it's Friday, and I type well when I'm drunk.

Chorizotarian
12-11-2008, 03:23 AM
What's the point of Symlink'ing folders? If your hard drive is reading from the exact same location for data being accessed for all five (or whatever) clients, then how does it help performance?

With a symbolic link the OS knows that the 5 copies of the same gignormous data file that are simultaneously being loaded by wow.exe really are the same file, so it only loads them once. If you just copy and paste the wow folder it thinks they are different files and you get disk thrashing.

Ellusionist
12-11-2008, 06:25 AM
What's the point of Symlink'ing folders? If your hard drive is reading from the exact same location for data being accessed for all five (or whatever) clients, then how does it help performance?

With a symbolic link the OS knows that the 5 copies of the same gignormous data file that are simultaneously being loaded by wow.exe really are the same file, so it only loads them once. If you just copy and paste the wow folder it thinks they are different files and you get disk thrashing.Hmm, odd. I'm sure much testing has been done to prove it works, I'm still just not understanding how. I realize only one file location is being accessed, but five instances of wow.exe accessing that same "loaded data" one time instead of five, at a CPU/memory level, seems a little extreme.

Seems like all it would cut down is seek time from fragmented data to fragmented data between individual folders. I guess that answers my confusion!

*shrug* :S

Talamarr
12-12-2008, 05:26 PM
Other than the settings, is this really better than running 1 wow folder for all your toons? Or is it the same and you just get the benefit of separate video, sound, etc settings?

emesis
12-12-2008, 05:56 PM
Other than the settings, is this really better than running 1 wow folder for all your toons? Or is it the same and you just get the benefit of separate video, sound, etc settings?

It is _much_ better in my experience (actually using junction points in XP, which are analagous but not identical to symlinks in Vista) then running 1 wow folder.

Multibocks
12-15-2008, 04:38 PM
I found a website to do symlinks (how-to geek) and ran

C:\mklink /D C:\wow2\Data C:\Program Files (x86)\World of Warcraft\Data

I also linked the Cache, Interface, Screenshots folders and copied all the files in the main WOW directory except the patch/downloader files (patch# to patch#-enUS-downloader(patch).exe) type files. After doing this I made a shortcut of the Wow.exe file and double clicked on the shortcut... I got:

" Failed to open archive interface.MPQ: The system cannot find the file specified" and got stuck. Someone in [Other] Winbolic Guide - Symlinking for XP ('http://www.dual-boxing.com/forums/index.php?page=Thread&threadID=6697') had the same error but there were no further replies on that thread :wacko:

I went back to Powershell and New-wow.ps1 figuring spacing might help in the ps1 file, renamed my "wow2-4" folders and went into the new-wow.ps1 file and changed:


"$env:ProgramFiles\World of Warcraft"to:

"c:\Program Files (x86)\World of Warcraft"

I got to c:\bin and did the " Set-ExecutionPolicy RemoteSigned" I ran "c:\Bin> new-wow c:\wow2" in powershell. I end up getting an error:


At c:\bin\New-Wow.ps1:86 char12
cmd <<<< /c "mlink $d `"$link`" `"$target`"" > $null
The term 'cmd' is not recognized as a cmdlet, function, operable program or a script file. Verify the term and try again.

I end up getting a new wow2 folder containing a WTF folder and Launcher.exe

Any suggestions or insight?

Whats the deal with this? I have the same issue telling me that cmd is not recognized. This is on a brand new (1 hour out of the box) computer. :thumbdown:

Multibocks
12-15-2008, 05:08 PM
DyzzyD,

I gave up on the Powershell deal....I did a forum search for Symlink. The very first result will be Symlink Help. Look at that post and you'll find a link to a different program that helps with the associations. Here's what I did:


Downloaded and installed the program.
Created copies of my main Warcraft folder (I ended up with World of Warcraft, WoW2, WoW3, WoW4, WoW5 all on my E:\ drive)
Navigate to your copies and DELETE your Data and Interface folders
Navigate to your main World of Warcraft folder and Control Left Click your Data and Interface folders
Right click on one of your highlighted folders (should be Data or Interface)
Choose Pick Link Source
Navigate to one of your copies (ie. WoW2) and right click on the folder
Choose Drop As...Symbolic Link
Repeat 4-8 until you've created the symbolic links for all your copies
Now you should have a main World of Warcraft folder with 4 copies that use the Data and Interface folders from the main. I linked the interface folder to use the same mods on all accounts. You can just link the Data folder if you prefer different mods on each.

This save me a ton of space on my hard drive and appears to have improved my performance too. Good luck! If you need any help or have questions just yell.



Kris

Just a small note, highlight all for the copy/paste and then ctrl click off data and interface folders. Saves you copy/pasta 7GB for 2 or more times.

FattyMoBookyButt
02-02-2009, 03:16 AM
I was having the "Failed to open archive Interface.MPQ" issue as well, but I could tell my symlinks were not working correctly by clicking normally on each folder (Data and Interface) and I would receive an error. I figured out it was pure user error for me, I needed to put in the fully qualified path in the mklink command for the target:


cd C:\Users\Public\Games

No worky

mklink /D "WoW 1\Data" "World of Warcraft\Data"
mklink /D "WoW 1\Interface" "World of Warcraft\Interface"
mklink /H "WoW 1\Wow.exe" "World of Warcraft\Wow.exe"

Works!

mklink /D "WoW 1\Data" "C:\Users\Public\Games\World of Warcraft\Data"
mklink /D "WoW 1\Interface" "C:\Users\Public\Games\World of Warcraft\Interface"
mklink /H "WoW 1\Wow.exe" "C:\Users\Public\Games\World of Warcraft\Wow.exe"

(I'm running Vista Home Premium and I had already created the directory "WoW 1" and copied everything but the Data, Interface and Wow.exe)

Liquidity
02-27-2009, 09:57 PM
Thank you Chorizotarian for your work on this script! I am running Windows Vista 32 Ultimate Edition currently and I was able to get the script running by doing the following:



Made a directory called c:\bin
Added c:\bin to Control Panel->System and Maintenance->System->Advanced System Settings->Environment Variables->PATH.
Renamed New-WoW.text to New-WoW.ps1 and saved it in the c:\bin directory
Downloaded Windows PowerShell V2 and installed it. I received a corrupt data error when I tried to run version 1 for Vista.
Launched PowerShell V2 in command line mode and ran Set-ExecutionPolicy Unrestricted. I received an error with the RemoteSigned option, I belive it is a problem with this version of the software.
Ran New-Wow c:\wow1
The script created the directory flawlessly! I think my next challenge will be to work with Octopus with a 2 account setup.Ok folks. I followed the above example and it worked perfectly. :thumbsup:

Spirithawke
03-08-2009, 03:13 AM
*Takes big breath* My first needing help post. I have soo been trying to avoid this...ggrrr...OK, Running windows vista home premium. I followed your instructions.

1. I got and downloaded powershell v1 (did not see a link to v2 that was mentioned from powershell site)
2. Made the c:\bin directory and added it to the path variable.
3. Saved the text file there as New-Wow.ps1.
4. Ran powershell in admin mode.
5. Gave it the command to Set-ExecutionPolicy Unrestricted
6. Ran the command new-wow c:\!games\wow1,c:\!games\wow2 -sourcePath c:\!games\World of Warcraft

Here is where the problems begin. I recieved the following error

Source directory does not exist
At c:\Bin\New-Wow.ps1:62 char:42
+ if (-not (Test-Path $sourcePath)) { throw 'Source directory does not exist' }

Does powershell not like the ! perhaps in the name of my custom install directory? (c:\!games\World of Warcraft)
Also, for future reference, is there a way to copy and paste errors from powershell? Highlighting and ctrl-c did not work. (my DOS days are so far in the past I have forgotten most of what I knew)

Chorizotarian
03-09-2009, 08:13 PM
More likely Windows does not like the !games. Can you really create a directory called !something?

Try quoting the sourcePath arg like this:


new-wow ... -sourcePath 'c:\!games\whatever'

Spirithawke
03-11-2009, 07:39 AM
Can you really create a directory called !something?I have been doing that for years so that my games directory is always on top of the directory list in windows explorer. This is the first time it has been a problem. I'll note that while powershell did not like the !, the bat file approach did not have issues with it. *shrugs* I'll have to give your suggestion a try later as I really am not keen on the bat file approach, but at least it works for me. I guess that is what I get for having a custom install. I have never liked my games in the program files tree, so I always made the c:\!Games directory for my games.

Chorizotarian
03-11-2009, 11:39 AM
Sorry, I wasn't thinking when I typed the above. The problem is the spaces in your path, not the "!". PowerShell doesn't know that c:\!games\World of Warcraft is all supposed to be part of the sourcePath argument. Quoting the path should fix you up.

thefunk
03-11-2009, 01:33 PM
To me, the scripts are so difficult to interpret as if they were encrypted. I searched on the net and found this little software:

Link Shell Extension
http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

It has a built-in menu in your Windows Explorer so it's pretty easy to understand and make use of. What you do is install if (of course!) then pick the source file (i.e. the file you want to "copy") and select the hardlink location (i.e. where you want to "paste" the file) and voila it's done!

Frankly though, I see 0% performance improvement in terms of memory and CPU usage, but a drastic reduction in harddisk light "blinking" is observed. It really feels like the file is only read once.

a million times easier than running scripts (I prefer going to the dentist :P) - works like dream on Vista 32bit and had it up and running in 10 mins.

jak3676
08-20-2009, 06:13 PM
Page 1 in this old thread had mostly what I wanted. I'm not sure if some files have changed with recent patches or maybt its something else. But I was getting errors when I tried to run the earlier bat file. This is what I'm using now.

**// copy /interface and /wtf folders on your own first! //**


md Errors
md Logs

mklink /d Cache "C:\WoW-Main\Cache"
mklink /d Data "C:\WoW-Main\Data"
mklink /d Patches "C:\WoW-Main\Patches"
mklink /d Screenshots "C:\WoW-Main\Screenshots"
mklink /d WDB "C:\WoW-Main\WDB"

mklink "BackgroundDownloader.exe" "C:\WoW-Main\BackgroundDownloader.exe"
mklink "Battle.net.dll" "C:\WoW-Main\Battle.net.dll"
mklink "BNUpdate.exe" "C:\WoW-Main\BNUpdate.exe"
mklink "dbghelp.dll" "C:\WoW-Main\dbghelp.dll"
mklink "DivxDecoder.dll" "C:\WoW-Main\DivxDecoder.dll"
mklink "ijl15.dll" "C:\WoW-Main\ijl15.dll"

copy "C:\WoW-Main\Launcher.exe" Launcher.exe

mklink "Microsoft.VC80.CRT.manifest" "C:\WoW-Main\Microsoft.VC80.CRT.manifest"
mklink "msvcr80.dll" "C:\WoW-Main\msvcr80.dll"
mklink "Patch.html" "C:\WoW-Main\Patch.html"
mklink "Patch.txt" "C:\WoW-Main\Patch.txt"
mklink "Repair.exe" "C:\WoW-Main\Repair.exe"
mklink "Scan.dll" "C:\WoW-Main\Scan.dll"
mklink "unicows.dll" "C:\WoW-Main\unicows.dll"

copy "C:\WoW-Main\Wow.exe" WoW.exe

mklink "WowError.exe" "C:\WoW-Main\WowError.exe"

Blackwater
11-15-2009, 12:13 PM
Missing the file you need to run the script. Could someone please repost it?

Blackwater
11-15-2009, 01:15 PM
For those of us on XP who want to run do the same, you can use junction.exe from here http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx

change line 83 from


cmd /c "mklink $d `"$link`" `"$target`"" > $null


to


cmd /c "junction $d `"$link`" `"$target`"" > $null


you must also remove line 124-126 as NTFS 5 does not seem to support reparsed files

Ok I did this, and now I have a wow2 folder with all the files copied, but they have been turned into folders?

Yes I am running XP. I made the change to line 82 and added Junction

crazedfred
11-28-2010, 01:51 AM
When I used this I had to delete the links to WoW.exe and copy-paste WoW.exe from master.
Then, run Launcher for a few minutes in each slave.

After that, things seemed to work.

Mukade
11-28-2010, 05:28 AM
I'd strongly advise against using symlinked folders any more (or even seperate whole installations).

The most recent changes to how WoW updates itself do not play well at all with symlinked installs, namely the downloading of content while in game, that cannot be disabled by running wow.exe without launcher.exe, and the locking of files to prevent them being written while one of the clients is modifying them. I've had numerous crashes shortly after updates, which I could only fix by deleting the files mentioned in the crash reports, and having them download all over again. Repair.exe of course says nothing is wrong, even with 3GB data files missing. Having to run the launcher from each individual folder kind of defeats the purpose of having a common set of folders for each install.

The wow client also updates the registry every time it's run, modifying the program's location to the location it was last run from. This affects programs like WoW Model Viewer and the Wowhead client.


There isn't even any need to clone folders any more. The only reason I was doing it was because there weren't enough macros available per character, until I could give each one the use of all the per-account macros too.

Addons (like Jamba, or the addon part of ISBoxer, which is configured from the main program) will give you all the macros you need, without taking up any of the normal character or account macro slots.

If you want to have a seperate config.wtf file for each character, you can do that without having to maintain seperate folders, simply by having a powershell script build or swap it in before launching WoW (if you're using HKN. ISBoxer has this built in).

crazedfred
12-01-2010, 05:40 AM
Addons (like Jamba, or the addon part of ISBoxer, which is configured from the main program) will give you all the macros you need, without taking up any of the normal character or account macro slots.

I'm using ISBoxer; how do I get at either the IDBoxer or Jamba macro features?

Zappy
12-02-2010, 11:15 PM
Since this thread was dug up from the past, i'll give my update as I still still use symlink'ing and find it quite effective without any of the issues that Mukade describes.

If you're using symlinks, the trick with the 4.0.1 patch is having the WoW.mfil and WoW.tfil symlinked as that files get exclusively locked by your first instance, and the others won't attempt to download content on the fly. This is what causes the crash.

I've installed WoW on my SSD ( d: ), and created a "Multiboxing" directory. Underneath that, I have five subdirectories "a", "b", "c", "d", & "e", and copied the following batch file into each one. This will recreate all the subdirectories and symlink whatever needs linked. I've only used this in windows 7, so use at your own risk.


mklink /d Data "D:\World of Warcraft\Data"
mklink /d Cache "D:\World of Warcraft\Cache"

md Errors

mklink /d Interface "D:\World of Warcraft\Interface"

md Logs
md WTF

mklink "BackgroundDownloader.exe" "D:\World of Warcraft\BackgroundDownloader.exe"
mklink "Burning Crusade Install Log.html" "D:\World of Warcraft\Burning Crusade Install Log.html"
mklink "dbghelp.dll" "D:\World of Warcraft\dbghelp.dll"
mklink "DivxDecoder.dll" "D:\World of Warcraft\DivxDecoder.dll"
mklink "ijl15.dll" "D:\World of Warcraft\ijl15.dll"

copy "D:\World of Warcraft\Launcher.exe" Launcher.exe
copy "D:\World of Warcraft\Wow.exe" Wow.exe
copy "D:\World of Warcraft\Scan.dll" Scan.dll

mklink "Patch.html" "D:\World of Warcraft\Patch.html"
mklink "Patch.txt" "D:\World of Warcraft\Patch.txt"
mklink "realmlist.wtf" "D:\World of Warcraft\realmlist.wtf"
mklink "Repair.exe" "D:\World of Warcraft\Repair.exe"
mklink "unicows.dll" "D:\World of Warcraft\unicows.dll"
mklink "World of Warcraft Install Log.html" "D:\World of Warcraft\World of Warcraft Install Log.html"
mklink "WowError.exe" "D:\World of Warcraft\WowError.exe"
mklink "Scan.dll" "D:\World of Warcraft\Scan.dll"
mklink "Battle.net.dll" "D:\World of Warcraft\Battle.net.dll"

mklink "WoW.mfil" "D:\World of Warcraft\WoW.mfil"
mklink "WoW.tfil" "D:\World of Warcraft\WoW.tfil"



What I like about this setup is that you retain your own WTF directory for saving customized settings for each toon, and when I play solo, I'm playing from the main directory which has all the graphics maxed.

Before I log on to multibox, I always hit the launcher and see if there's an update, if an update is there, I let it do it's thing then re-run my batch file, otherwise, I simply close to launcher and start everything up with my broadcasting software.